深度学习框架的来龙去脉——史上最全面最新的深度学习框架对比分析

一、深度学习框架概述与深度学习技术的四大阵营

人工智能从学术理论研究到生产应用的产品化开发过程中通常会涉及到多个不同的步骤和工具,这使得人工智能开发依赖的环境安装、部署、测试以及不断迭代改进准确性和性能调优的工作变得非常繁琐耗时也非常复杂。为了简化、加速和优化这个过程,学界和业界都作了很多的努力,开发并完善了多个基础的平台和通用工具,也被称会机器学习框架或深度学习框架。有了这些基础的平台和工具,我们就可以避免重复发明轮子,而专注于技术研究和产品创新。这些框架有早期从学术界走出的Caffe、 Torch和Theano,到现在产业界由Google领导的TensorFlow,Amazon选择押注的MXNet,Facebook倾力打造的PyTorch,Microsoft内部开源的CNTK等等。

哪一个深度学习框架是最好用呢?哪一个深度学习框架更适合自己呢?这真是一个十分让人纠结的问题。不过,在你选择站队之前,不妨和我一起来了解一下各个框架的来龙去脉,先看一看哪一个框架更能激发起你的兴趣,有了兴趣,剩下的问题就变得简单了,我们能够透过浮躁的排名和对比,深入研究这些框架背后的设计思想与技术本质。让每一个框架的优点都能为我所用。

当前主流的深度学习框架列表:

  1. TensorFlow
  2. Keras
  3. PyTorch
  4. MXNet
  5. Caffe
  6. Caffe2
  7. Theano
  8. FastAI
  9. CNTK
  10. Gluon
  11. Torch
  12. Deeplearning4j
  13. Chainer

其它小众深度学习框架还有如亚马逊曾经使用的深度学习引擎DSSTNE,卡耐基梅隆大学的小众DyNet,Intel开源的基于Spark且只能运行在Intel CPU芯片之上的深度学习库BigDL,Nervana开发的基于Python的深度学习库Neon,简洁无依赖且符合C++11标准的tiny-dnn,基于Theano的轻量级的库Lasagne等。

这其中有几个框架曾经辉煌过,但是现在已经被更新的框架取代了,或者被新一代的版本收编了,我们称他们为没落的贵族,如Torch,基于Python的版本PyTorch已经取代了TorchCaffeCaffe2Facebook已经把CaffeCaffe2PyTorch进行了整合,推出了全新的PyTorch 1.0,资历最老的框架之一Theano的创始人已经转投TensorFlow,已经停止更新维护走向没落了。

基于Java和Scala的开源的分布式深度学习库Deeplearning4J在深度学习领域缺少像Python这样强大的社区支持,日本公司Preferred Networks开源的Chainer曾经是动态计算图的首选框架,特别适用于自然语言处理,但后来MXNet,PyTorch等也支持了这个特性,其优势也不复存在了。由于没有巨头的支持,Deeplearning4J和Chainer都只能默默的发展。

看起来我们好像有很多很多选择,但其实如果我们进一步进行细分,就会发现我们的选择也并不是很多,没有巨头背书的框架就只能面临被淘汰和边缘化的命运了,其实顶级深度学习框架只有四大阵营,或者说是四大门派,Google领导的TensorFlow,Amazon选择的MXnet,Facebook倾力打造的PyTorch,Microsoft把内部核心技术开源的CNTK。虽然Keras等框架在深度学习框架中排名很高,但它却不是一个独立框架,而是作为前端对底层引擎进行上层封装的高级API层,提升易用性,此类深度学习框架的目标是只需几行代码就能让你构建一个神经网络,这类框架还有FastAI和Gluon。好在每一个前端上层轻量级框架又都对应一个最适合的基础底层框架,这样就出现了深度学习框架的四大技术方向,每一个技术方向背后又都有一个巨头在背书和推动。

深度学习框架的四大阵营与其技术方向分别为:

(1)TensorFlow,前端框架Keras,背后巨头Google;

(2)PyTorch,前端框架FastAI,背后巨头Facebook;

(3)MXNet,前端框架Gluon,背后巨头Amazon;

(4)Cognitive Toolkit (CNTK),前端框架Keras或Gluon,背后巨头Microsoft。

 

二、主流开源深度学习框架的来龙去脉

下面我们对每个主流框架的来龙去脉都来做一个详细的梳理与了解。

Google在2015年11月正式开源发布TensorFlow,TensorFlow由Google大脑团队开发,其命名来源于本身的运行原理。由于Google的巨大影响力和巨大支持,很快就成为深度学习领域占据绝对统治地位的框架。很多企业都在基于TensorFlow 开发自己的产品或将 TensorFlow整合到自己的产品中去,如Airbnb、Uber、Twitter、英特尔、高通、小米、京东等。

Google大脑一开始是Google X的一个研究项目,2011年,Google大脑的雏形起源于一项斯坦福大学与谷歌公司的联合研究项目,由Google Fellow杰夫·迪恩(Jeff Dean)、研究员格雷科拉多(Greg Corrado)与斯坦福大学人工智能教授吴恩达(Andrew Ng)共同发起,把深度学习技术带到了人工智能问题的解决中,并建立起了第一代大型深度学习软件系统DistBelief,这是一个运行在谷歌云计算平台上的一个服务。随后,Google在其商业产品广泛应用部署了DistBelief的深度学习神经网络,包括搜索、YouTube、语音搜索、广告、相册、地图、街景和Google翻译等。

2013年3月,Google收购了DNNResearch,DNNResearch创始人Geoffrey Hinton也由此进入Google大脑团队工作。Google指派Geoffrey Hinton和Jeff Dean等开始简化和重构DistBelief的代码库,使其变成一个更快、更健壮的应用级别代码库,形成了TensorFlow。对DistBelief 进行了多方面的改进后,使其可在小到一部手机,大到数千台数据中心服务器的各种设备上运行,TensorFlow也成为了基于 DistBelief 进行研发的第二代人工智能学习系统,可被用于语音识别或图像识别等多想机器学习和深度学习领域。一个突破性的成果是在2012年6月Google大脑用16000台电脑模拟人类电脑的活动,并在学习1000万张图像后,成功在YouTube视频中找出了“猫”,这可能意味着机器第一次有了猫的概念。

Google在2014年1月又收购了英国DeepMind,DeepMind成为谷歌大脑之外另一个研究人工智能方向的团队。DeepMind在4年来的首要的人工智能研究平台是开源软件Torch7机器学习库,Torch7非常灵活和快速,能够快速建模。在Google的大力支持下,AlphaGo横空出世,使人工智能第一次战胜人类职业围棋高手,轰动世界,以一己之力推动人工智能应用到了一个新的高度。2016年4月,DeepMind宣布将开始在将来所有的研究中开始使用TensorFlow。这样Google的两大人工智能团队也统一到了统一的深度学习框架TensorFlow上。

TensorFlow的编程接口支持C++和Python,Java、Go、R和Haskell API也将被支持,是所有深度学习框架中对开发语言支持的最全面的,TensorFlow可以在AWS和Google Cloud中运行,支持Windows 7、Windows 10、Windows Server 2016,TenserFlow使用C++ Eigen库,可以在ARM架构上编译和优化,使其可以在各种服务器和移动设备上部署自己的训练模型,也是在所有深度学习框架中支持运行平台最多的。TensorFlow基于计算图实现自动微分系统,使用数据流图进行数值计算,图中的节点代表数学运算,图中的线条则代表在这些节点之间传递的张量(多维数组)。TensorFlow追求对运行平台和开发语言最广泛的支持,力求统一深度学习领域,但是这也带来了过于复杂的系统设计,TensorFlow在GitHub上的总代码数已经超过100万行了,TensorFlow在接口设计中创造了很多新的抽象概念,如图、会话、命名空间和Place-Holder等,同一个功能又提供了多种实现,使用上可能有细微的区别,频繁的接口变动也导致了向后兼容性上的问题。由于直接使用TensorFlow过于复杂,包括Google官方在内的很多开发者尝试构建一个高级API作为TensorFlow更易用的接口,包括Keras、Sonnet、TFLearn、TensorLayer、Slim、Fold、PrettyLayer等,其中Keras在2017年成为第一个被Google添加到TensorFlow核心中的高级别框架,这让Keras变成TensorFlow的默认API,使Keras + TensorFlow的组合成为Google官方认可并大力支持的平台。TensorFlow仍在快速的发展中,是最具野心和最具统治力的深度学习框架,十分期待2019年即将发布的TensorFlow 2.0带来的新技术。

 

Keras是第二流行的深度学习框架,但并不是独立框架。Keras由纯Python编写而成,以TensorFlow、Theano或CNTK为底层引擎。Keras是在Tensorflow上层封装的高级API层,提升易用性。Keras的目标是只需几行代码就能让你构建一个神经网络。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值