深度学习框架的前世今生

由 发布于 2020-04-19 23:09

开源框架github排名

前世:深度学习异军突起

一切还要从人工智能说起。

人工智能的兴起,离不开机器学习。机器学习是实现人工智能的途径,赋予非生物体一定思考和学习能力的方式与手段。机器学习现阶段最热门最有效的方法就是深度学习算法。

在深度学习兴起之前,机器学习的主要方法是以做特征工程为主流的统计学算法,即通过参数调节不断提取优化特征。此类方法的一大弊端就是对于语音视频等多维度信号,很难进行特征提取。通过深度学习,在神经网络的每一层,计算机都可自动学习出特征,从而解决了多维度信号特征提取困难的问题。

为了实现深度学习中的神经网络,深度学习框架工具应运而生。研究人员和开发者可以借助其更方便、快速地搭建自己的神经网络,训练和验证网络的学习能力。由于框架是对底层语言和重要算法模型的封装,使用者可省去大量工程开发精力,投入算法、网络和模型问题的研究。

今生:框架市场百家争鸣

纵观当今深度学习框架市场,可谓是百家争鸣。各大巨头纷纷意识到通过开源技术建立产业生态是抢占产业制高点的重要手段,争相推出了自家的框架。

按照框架面世的大概时间排列,其出现的先后顺序如下:Theano(2012年以前)、Caffe(2013年底)、Torch(2014年)、DeepLearning4J(2014年)、TensorFlow(2015年)、Keras(2015年)、Neon(2015年)、Chainer(2015年)、PaddlePaddle(2016年)、PyTorch(2017年初)、Caffe2(2017年)。

根据github上的星级,目前市场上的开源框架可大致按下表排序:

国内的互联网企业也推出了自己的框架,如百度的PaddlePaddle、小米的MACE、腾讯的ncnn等。但由于篇幅限制,本文仅对排名前三的框架以及框架鼻祖Theano以及刚刚崛起颇具潜力的新生代框架Pytorch予以介绍。

TensorFlow由谷歌大脑团队开发,其特点是使用数据流图进行数值计算。图中的节点表示数学运算,线表示它们之间通信的多维数据数组即张量。数据流图用“结点”和“线”的有向图来描述数学计算。这些数据“线”可以输运大小可动态调整的“张量”。张量从图中流过的直观图像是这个工具取名为“TensorFlow”的原因。TensorFlow是目前使用最广的深度学习框架,但是却非常底层,使用TensorFlow需要编写大量的代码。

Caffe支持视觉领域的算法框架,对基于深度卷积神经网络的学习框架支持效果很好,可以方便地进行CNN模型的训练和测试。其代码易懂、高效、上手简单,实现基础算法方便快捷,作为快速开发和工程应用非常适合;劣势是开发新算法不是特别灵活,需要使用C++和CUDA编程,安装过程也是比较费事耗时的庞大工程。因此,我们建议可以用Keras进行实验和测试,然后迁移到Caffe中进行生产。基于Caffe,Facebook又推出了Caffe2,能够支持大规模分布式计算和移动部署。未来Caffe2有望完全取代Caffe。

Keras的句法相当明晰,文档比较全面,而且支持受众度较为广泛的Python语言;其使用体验很友善,能较为直观地了解指令、函数和每个模块之间的链接方式。Keras是一个非常高层的库,可以工作在Theano和TensorFlow之上,你只需几行代码就能构建一个神经网络,实现相同功能时所需的代码量远少于TensorFlow。

Theano是历史上第一款深度学习框架,开创了深度学习的革命化先河。和TensorFlow类似,Theano是一个比较低层的库。也因此它并不适合深度学习,而更适合数值计算优化。它支持自动的函数梯度计算,带有Python接口并集成了Numpy,这使得它从一开始就成为通用深度学习领域最常使用的库之一。今天,Theano依然效果良好,但由于它不支持多GPU和水平扩展,在TensorFlow的浪潮下,Theano倍感吃力。2017年9月,Theano开发团队宣布将停止项目所有维护和更新,从此Theano正式退出历史舞台。但其深远的影响力和多年的积累,依然拥有相当一部分使用者。

Torch是一个很著名的框架,它是Facebook的人工智能研究所用的框架,DeepMind在被谷歌收购前也使用的是它。Torch的编程语言是Lua,在深度学习编程语言绝大部分以Python实现为主的形势下,一个以Lua为编程语言的框架的最大劣势莫过于此。

为了破解这个局面,Facebook人工智能研究院推出了Pytorch,一个python优先的深度学习框架。2017年1月,Facebook将Python版本的Torch库开源。除了解决编程语言的问题,PyTorch还有一个优势,它提供动态计算图。这意味着图是在运行时生成的,允许处理可变长度的输入和输出,在使用 RNN 时非常有用,有助于构建神经网络计算图,而无需手动操纵张量和参数。PyTorch目前已经成为深度学习框架市场上最具竞争力的一款软件。

来世:降低框架适配成本是关键

看到这儿,你或许有些头大:这么多深度学习框架该如何选择?这也是业界很多开发者的痛点:各种框架如雨后春笋般崛起,碎片化程度堪比如今的安卓终端系统。而碎片化问题严重影响了使用者的开发效率,提高了适配成本,造成了很多不必要的时间和精力耗费。

其实,框架的本质都是基于基础语言编写的易执行后端,以及易解释高级语言编写的前端,前后端使用计算图作为桥梁。未来,一种基于将框架前后端模块分离剥开的模式,将是深度学习框架的发展方向。前后端的分离使得开发者可以使用轻量级的前端适配不同的框架,而不修改繁重的后端结构,提高了研发效率,也降低了适配成本。

框架平台占据人工智能产业生态的核心地位,具有统领产业进步节奏、带动终端场景与云端服务协同发展的重要作用,处于承上启下的关键地位,其意义媲美移动互联网操作系统。随着深度学习框架的不断演进,以深度学习为代表的人工智能必将大放异彩,成为改变人类历史,推动智能化社会发展的关键技术。

来源:人民邮电报

  • 扫码获取更多信息