引言
深度学习(Deep Learning)的概念由加拿大多伦多大学教授Geoffrey Hinton等人于2006年提出,它本质上是一种神经网络算法,其原理是通过模拟人脑进行分析学习,算法训练时可以不用人工干预,因此它也属于一种无监督式机器学习算法。从深度学习的概念提出到今天,已历经十年时间,在这十年当中,无论是国际互联网巨头Google、微软、百度,还是全世界各大学术研究机构,都投入了巨大的人力、财力用于理论和工业级应用的探索,并在字符识别(OCR)、图像分类、语音识别、无人自动驾驭、自然语言处理等众多领域内取得了突破性的进展,极大地推动了人工智能(AI)的发展。
图1.深度学习的典型应用场景示例
2012年斯坦福大学的Andrew Ng和Jeff Dean教授共同主导的Google Brain项目通过使用深度学习让系统能够自动学习并识别猫,这项目研究引起了学术界和工业界极大的轰动,激起了全世界范围研究深度学习的热潮,《纽约时报》披露了Google Brain项目,让普通大众对深度学习有了最初的认知。2016年3月,Google旗下DeepMind公司开发的AlphaGo以4:1的总比分战胜了世界围棋冠军、职业九段选手李世石,这让人们对人工智能(AI)的认知跨越到一个新的阶段。
深度学习在众多领域的成功应用,离不开学术界及工业界对该技术的开放态度,在深度学习发展初始,相关代码就被开源,使得深度学习“飞入寻常百姓家”,大大降低了学术界研究及工业界使用的门槛。本文并不打算对深度学习算法的发展趋势进行分析,而是跳出算法层面,对当前主流的开源深度学习框架的发展趋势进行分析。
开源深度学习框架
在计算机视觉领域内,神经网络算法一直被用来解决图像分类识别等问题,学术界采用的算法研究工具通常是Matlab、Python,有很多深度学习工具包都是基于com/matlabcentral/fileexchange/38310-deep-learning-toolbox">Matlab、Python语言,在使用海量图像训练深度学习算法模型时,由于单台机器CPU的计算能力非常有限,通常会使用专门的图形处理器(Graphics Processing Unit,GPU)来提高算法模型速度。但在工业级应用当中,由于Matlab、Python、R语言的性能问题,大部分算法都会使用C++语言实现,而且随着深度学习在自然语言处理、语音识别等领域的广泛应用,专用的GPU也慢慢演变为通用图像处理器(General Purpose GPU,GPGPU),处理器不仅仅被用于渲染处理图像,还可以用于需要处理大数据量的科学计算的场景,这种提高单台机器的处理能力的方式属于纵向扩展(Scale Up)。
随着大数据时代的来临,大数据处理技术的日趋成熟为解决深度学习模型训练耗时问题提供了重要发展方向,因此如何通过大数据训练深度学习模型在当前引起了广泛关注,大量的研究表明:增加训练样本数或模型参数的数量,或同时增加训练样本数和模型参数的数量,都能够极大地提升最终分类的准确性。由于Hadoop已经成为构建企业级大数据基础设施的事实标准,中国直播网 ,有许多的分布式深度学习算法框架被构建在Hadoop生态体系内,中国直播网,这种通过分布式集群提高处理能力的扩展方式被称为横向扩展(Scale Out)。
虽然利用Spark等平台训练深度学习算法可以极大地提高训练速度,但近年来,存储设备和网络在性能方面的提升远超CPU,如图2所示。
图2.存储系统、网络及CPU的性能变化比较
CPU性能瓶颈极大地限制了分布式环境下,单台节点的处理速度。为解决这一问题,许多优秀的开源深度学习框架都在尝试将开源大数据处理技术框架如Spark和GPGPU结合起来,通过提高集群中每台机器的处理性能来加速深度学习算法模型的训练,图3给出的是SparkNet的架构原理图。这种通过结合横向扩展及纵向扩展提高处理能力的方式被称为融合扩展。图4对深度学习提升性能的方式进行了总结,图中分别给出了横向扩展、纵向扩展及融合扩展的典型开源深度学习框架。
图3.SparkNet中的Scale Up和Scale Out
图4.深度学习提升性能的方式
下面将对目前一些优秀的开源深度学习框架进行介绍,包括基于GPU的单机开源深度学习框架和融合了GPU的开源分布式深度学习框架。让大家熟悉目前开源深度学习主流框架的同时,又能够进一步窥探开源分布式深度学习框架的发展方向。
单机开源深度学习框架
目前拥有众多的学术机构如国际顶级名校加州大学伯克利分校,以及互联网巨头如Google、微软等开源的深度学习工具,比较成熟的基于GPU的单机开源深度学习框架有:
Theano:深度学习开源工具的鼻祖,由蒙特利尔理工学院时间开发于2008年并将其开源,框架使用Python语言开发。有许多在学术界和工业界有影响力的深度学习框架都构建在Theano之上,并逐步形成了自身的生态系统,这其中就包含了著名的 Keras,Lasagne 和 Blocks。
Torch:Facebook 和 Twitter主推的一款开源深度学习框架,Google和多个大学研究机构也在使用Torch。出于性能的考虑,Torch使用一种比较小众的语言(Lua)作为其开发语言,目前在音频、图像及视频处理方面有着大量的应用。大名鼎鼎的Alpha Go便是基于Torch开发的,只不过在Google 开源TensorFlow之后,Alpha Go将迁移到TensorFlow上。
TensorFlow:Google开源的一款深度学习工具,使用C++语言开发,上层提供Python API。在开源之后,在工业界和学术界引起了极大的震动,因为TensorFlow曾经是著名的Google Brain计划中的一部分,Google Brain项目的成功曾经吸引了众多科学家和研究人员往深度学习这个“坑”里面跳,这也是当今深度学习如此繁荣的重要原因,足见TensorFlow的影响力。TensorFlow一直在往分布式方向发展,特别是往Spark平台上迁移,这点在后面会有介绍。
#p#分页标题#e#Caffe:Caffe是加州大学伯克利分校视觉与学习中心(Berkeley Vision and Learning Center ,BVLC)贡献出来的一套深度学习工具,使用C/C++开发,上层提供Python API。Caffe同样也在走分布式路线,例如著名的Caffe On Spark项目。
CNTK:CNTK (Computational Network Toolkit)是微软开源的深度学习工具,现已经更名为Microsoft Cognitive Toolkit,同样也使用C++语言开发并提供Python API。目前在计算视觉、金融领域及自然处理领域已经被广泛使用。
DeepLearning4J官网有篇文章《DL4J vs. Torch vs. Theano vs. Caffe vs. TensorFlow》,对这些主流的深度学习框架的优劣势进行了详细的分析比较,感兴趣的读者可以点击查看。
特别声明:本文为中国直播网直播号作者或机构上传并发布,仅代表该作者或机构观点,不代表中国直播网的观点或立场,中国直播网仅提供信息发布平台。
版权声明:版权归著作权人,转载仅限于传递更多信息,如来源标注错误侵害了您的权利,请来邮件通知删除,一起成长谢谢
欢迎加入:直播号,开启无限创作!一个敢纰漏真实事件,说真话的创作分享平台,一个原则:只要真实,不怕事大,有线索就报料吧!申请直播号请用电脑访问https://zbh.zhibotv.com.cn。