显示硬件发展与视频开发系列(5)----智能时代06--机器学习库

6.6.3、机器学习库

       机器学习是人工智能的重要组成部分,机器学习是一个完善的生态环境,对于人工智能而言,算法库是重中之重。降低了智能视觉分析的门槛,加大了人工智能的应用。人工智能算法库有很多,本部分重点讨论应用广泛的两个神经网络库,TensorFlow和PyTorch。

       神经网络可以指向两种,一个是生物神经网络,一个是人工神经网络。

6.6.3.1、生物神经网络

       生物神经网络:一般指生物的大脑神经元,细胞,触点等组成的网络,用于产生生物的意识,帮助生物进行思考和行动。

https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1907824141,1397086773&fm=26&gp=0.jpg

6.6.3.2、人工神经网络

       人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。

       人工神经网络:是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。在工程与学术界也常直接简称为“神经网络”或类神经网络。

       人工神经网络(Artificial Neural Network,即ANN ),是20世纪80 年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象, 建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。

       每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。

6.6.3.3、TensorFlow

       TensorFlow™是基于数据流编程(dataflow programming)的符号数学系统,在人工智能领域,有这广泛的应用。TensorFlow是今天神经网络训练的主要平台,成就了TensorFlow在今天庞大的用户群。

       用于各类机器学习(machine learning),前身是谷歌的神经网络算法库DistBelief 。谷歌不仅在大数据领域有着重要的位置,在人工智能方面,谷歌也名列前茅。

       Tensorflow拥有多层级结构,使用面向各种场景,可部署于各类服务器、PC终端和网页,支持GPU和TPU高性能数值计算,开发环境友好。应用于谷歌内部的产品开发和各领域的科学研究 。

6.6.3.3.1、发展

       TensorFlow由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护,是谷歌核心的人工智能项目。拥有很多子项目:TensorFlow Hub、TensorFlow Lite、TensorFlow Research Cloud、各类应用程序接口。

       谷歌大脑2011年成立,开展面向大规模深度学习应用研究,谷歌大脑具有自我学习功能,将1.6万处理器连接。TensorFlow的前身DistBelief。DistBelief构建各尺度下的神经网络分布式学习和交互系统,被称为“第一代机器学习系统”,为世界人工智能发展做出了卓越的贡献。

https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2190712454,4261596438&fm=26&gp=0.jpg

       DistBelief在谷歌和Alphabet旗下公司的产品开发中广泛使用,成果颇丰。TensorFlow拥有生态系统,从数据训练,接口导出,到工程应用。2018年4月的TensorFlow开发者峰会,有21个TensorFlow项目非常有价值和意义 。

6.6.3.3.2、核心组件

       TensorFlow利用GPU做数据训练,可以进行单机也可以进行分布式部署。

       合作组件互相配合,保证了TensorFlow的运转。分布式TensorFlow的核心组件如下:

       分发中心(distributed master);

       执行器(dataflow executor/worker service);

       内核应用(kernel implementation)

       最底端的设备层(device layer)/网络层(networking layer)。

       分发中心从输入的数据流图中剪取子图(subgraph),将其划分为操作片段并启动执行器。分发中心处理数据流图时会进行预设定的操作优化,包括公共子表达式消去(common subexpression elimination)、常量折叠(constant folding)等。

       执行器负责图操作(graph operation)在进程和设备中的运行、收发其它执行器的结果。分布式TensorFlow拥有参数器(parameter server)以汇总和更新其它执行器返回的模型参数。执行器在调度本地设备时会选择进行并行计算和GPU加速 。

       内核应用负责单一的图操作,包括数学计算、数组操作(array manipulation)、控制流(control flow)和状态管理操作(state management operations)。内核应用使用Eigen执行张量的并行计算、cuDNN库等执行GPU加速、gemmlowp执行低数值精度计算,此外用户可以在内核应用中注册额外的内核(fused kernels)以提升基础操作,例如激励函数和其梯度计算的运行效率。

       单进程TensorFlow相对简单,整体部署训练与方便,和分布式相比,维护也很方便。没有分发中心和执行器,使用特殊的会话应用(Session implementation)联系本地设备。

       TensorFlow的内核是C语言的,提供的原始接口也是C语言的。其它组件/API均通过C语言API与核心组件进行交互。

https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=974600695,3576740431&fm=15&gp=0.jpg

6.6.3.3.3、组件

       TensorFlow Hub是一个允许用户发布、共享和使用TensorFlow模块的库开发项目。用户可以将TensorFlow数据流图或其部分使用Hub进行封装并移植到其它问题中再次利用。TensorFlow Hub页面列出了由谷歌和DeepMind提供的封装模型,其主题包括字符嵌入、视频分类和图像处理。

       TensorFlow Extended (TFX),TFX是谷歌基于TensorFlow开发的产品级机器学习平台,其目标是是对产品开发中的模型实现、分析验证和业务化操作进行整合,在实时数据下完成机器学习产品的标准化生产。TFX包含三个算法库:TensorFlow Data Validation对机器学习数据进行统计描述和验证、TensorFlow Transform对模型数据进行预处理、              TensorFlow Model Analysis对机器学习模型进行分析,提供表现评分。另有TensorFlow Serving作为模型业务化的高性能系统,提供模型接口和管理。

       TensorFlow Probability (TFP),TFP是在TensorFlow Python API基础上开发的统计学算法库,其目标是方便用户将概率模型和深度学习模型相结合使用。TFP包含大量概率分布的生成器、支持构建深度网络的概率层(probabilistic layers)、提供变分贝叶斯推断(Variational inference)和马尔可夫链蒙特卡罗方法(Markov chain Monte Carlo)和一些特殊的优化器,包括Nelder-Mead方案、BFGS算法(Broyden-Fletcher-Goldfarb-Shanno algorithm)和SGLD(Stochastic Gradient Langevin Dynamics)。

https://www.yht7.com/upload/image/20200419/1354575-20200418172212742-1807272001.png

       TensorFlow.js是TensorFlow的JavaScript API,主要用于网页端的机器学习应用开发。方便网页用户进行人工智能数据训练。

       TensorFlow Lite是为移动和嵌入式设备提供人工智能支持,在Android、iOS系统下机器学习模型的响应时间并降低文件大小。TensorFlow Lite部署了大部分人工智能算法,具有很好的参考价值。

       Swift for TensorFlow是开源版Swift的TensorFlow API开发项目,在深度学习和微分计算方面应用。和Eager Execution很相像,可直接执行数据流图,具备更好的性能。

       TensorFlow Research Cloud是面向科学研究的机器学习TPU云计算平台。该项目拥有1000个云TPU和总计180千万亿次计算力,每个TPU拥有64 GB的高带宽内存 。可以通过互联网申请使用,进行有价值的人工智能数据训练。

6.6.3.3.4、其它

       Magenta是在艺术领域使用机器学习的研究项目,该项目使用深度学习网络和强化学习算法学习生成音乐、绘画和其它艺术作品,以帮助艺术人员拓展其创作过程 。Magenta项目的研究成果包括音乐创作工具NSynth和混音工具MusicVAE。

       Nucleus是将TensorFlow应用于基因组文件,例如SAM和VCF格式文件的读写和分析的库开发项目  。Nucleus使用Python和C++进行开发。

6.6.3.2、PyTorch

       PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。

       2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch。它是一个基于Python的计算包,提供两个高级功能:1、具有强大的GPU加速的张量计算(如NumPy)。2、包含自动求导系统的深度神经网络。

       PyTorch使用Python重写了很多内容,更加灵活,支持动态图,提供了Python接口。它是由Torch7团队开发,是一个以Python优先的深度学习框架,实现强大的GPU加速,支持动态神经网络。

https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=3593097388,1004973136&fm=26&gp=0.jpg

       PyTorch可以看作加入了GPU支持的numpy,也可以看成拥有自动求导功能的强大的深度神经网络。除Facebook外,已经被Twitter、CMU和Salesforce等机构采用。

       PyTorch简洁高效,快速应用的框架,设计追求最少封装,符合人类思维,让用户尽可能地专注于实现自己的想法,与google的Tensorflow类似,FAIR的支持足以确保PyTorch获得持续的开发更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值