深度学习框架的前世今生
1 前世:深度学习异军突起
一切还要从人工智能说起。
人工智能的兴起,离不开机器学习。机器学习是实现人工智能的途径,赋予非生物体一定思考和学习能力的方式和手段。机器学习现阶段最热门最有效的方法就是深度学习算法。
在深度学习兴起之前,机器学习的主要方法是以做特征工程为主流的统计学算法,即通过参数调节不断提取优化特征。此类方法的一大弊端就是对于语音视频等多维度信号,很难进行特征提取。通过深度学习,在神经网络的每一层,计算机都可自动学习出特征,从而解决了多维度信号特征提取困难的问题。
为了实现深度学习中的神经网络,深度学习框架工具应运而生。研究人员和开发者可以借助其更方便、快速地搭建自己的神经网络,训练和验证网络的学习能力。由于框架是对底层语言和重要算法模型的封装,使用者可省去大量工程开发精力,投入算法、网络和模型问题的研究。
2 今生:各大巨头不甘示弱 框架市场百家争鸣
纵观当今深度学习框架市场,可谓是百家争鸣。各大巨头纷纷意识到通过开源技术建立产业生态是抢占产业制高点的重要手段,争相推出了自家的框架。
按照框架面世的大概时间排列,其出现的先后顺序如下:Theano(2012年以前)、Caffe(2013年底)、Torch(2014年)、DeepLearning4J(2014年)、TensorFlow(2015年)、Keras(2015年)、Neon(2015年)、Chainer(2015年)、PaddlePaddle(2016年)、PyTorch(2017年初)、Caffe2(2017年)。
根据github上的星级,目前市场上的开源框架可大致按下表排序:
表1 开源框架github排名
国内的互联网企业也推出了自己的框架,如百度的PaddlePaddle、小米的MACE、腾讯的ncnn等。但由于篇幅限制,本文仅对排名前三的框架以及框架鼻祖Theano以及刚刚崛起颇具潜力的新生代框架Pytorch予以介绍。
● Tensorflow
TensorFlow由谷歌大脑团队开发,其特点是使用数据流图进行数值计算。图中的节点表示数学运算,线表示它们之间通信的多维数据数组即张量。数据流图用“结点”和“线”的有向图来描述数学计算。这些数据“线”可以输运大小可动态调整的“张量”。张量从图中流过的直观图像是这个工具取名为“Tensorflow”的原因。TensorFlow是目前使用最广的深度学习框架,但是却非常底层,使用 TensorFlow 需要编写大量的代码。
● Caffe
Caffe支持视觉领域的算法框架,对基于深度卷积神经网络的学习框架支持效果很好,可以方便地进行CNN模型的训练和测试。其代码易懂、高效、上手简单,实现基础算法方便快捷,作为快速开发和工程应用非常适合;劣势是开发新算法不是特别灵活,需要使用 C++ 和 CUDA 编程,安装过程也是比较费事耗时的庞大工程。因此,我们建议可以用 Keras 进行实验和测试,然后迁移到 Caffe 中进行生产。
基于Caffe, Facebook又推出了Caffe2,能够支持大规模分布式计算和移动部署。未来Caffe2有望完全取代Caffe。
● Keras
Keras的句法相当明晰,文档比较全面,而且支持受众度较为广泛的Python语言;其使用体验很友善,能较为直观地了解指令、函数和每个模块之间的链接方式。 Keras 是一个非常高层的库,可以工作在 Theano 和 TensorFlow之上,你只需几行代码就能构建一个神经网络,实现相同功能时所需的代码量远少于TensorFlow。
● Theano
Theano是历史上第一款深度学习框架,开创了深度学习的革命化先河。和 TensorFlow 类似,Theano 是一个比较低层的库。也因此它并不适合深度学习,而更适合数值计算优化。它支持自动的函数梯度计算,带有 Python 接口并集成了 Numpy,这使得它从一开始就成为了通用深度学习领域最常使用的库之一。 今天,Theano 依然效果良好,但由于它不支持多 GPU 和水平扩展,在 TensorFlow 的浪潮下,Theano 倍感吃力。2017年9月,Theano开发团队宣布将停止项目所有维护和更新,从此Theano正式退出历史舞台。但其深远的影响力和多年的积累,依然拥有相当一部分使用者。
● Torch & PyTorch
Torch 是一个很著名的框架,它是Facebook的人工智能研究所用的框架,DeepMind在被谷歌收购前使用的也是它。Torch的编程语言是Lua,在深度学习编程语言绝大部分以 Python 实现为主的形势下,一个以 Lua 为编程语言的框架的最大劣势莫过于此。
为了破解这个局面,Facebook人工智能研究院推出了Pytorch,一个python优先的深度学习框架。2017年1月,Facebook 将 Python 版本的 Torch 库开源。除了解决编程语言的问题,PyTorch还有一个优势,它提供动态计算图。这意味着图是在运行时生成的,允许处理可变长度的输入和输出,在使用 RNN 时非常有用,有助于构建神经网络计算图,而无需手动操纵张量和参数。PyTorch目前已经成为深度学习框架市场上最具竞争力的一款软件。
3 来世:降低框架适配成本是破局关键
看到这儿,你或许有些头大:这么多深度学习框架该如何选择?这也是业界很多开发者的痛点:各种框架如雨后春笋般崛起,碎片化程度堪比如今的安卓终端系统。而碎片化问题严重影响了使用者的开发效率,提高了适配成本,造成了很多不必要的时间和精力耗费。
其实,框架的本质都是基于基础语言编写的易执行后端,以及易解释高级语言编写的前端,前后端使用计算图作为桥梁。未来,一种基于将框架前后端模块分离剥开的模式,将是深度学习框架的发展方向。前后端的分离使得开发者可以使用轻量级的前端适配不同的框架,而不修改繁重的后端结构,提高了研发效率,也降低了适配成本。
框架平台占据人工智能产业生态的核心地位,具有统领产业进步节奏、带动终端场景与云端服务协同发展的重要作用,处于承上启下的关键地位,其意义媲美移动互联网操作系统。随着深度学习框架的不断演进,以深度学习为代表的人工智能必将大放异彩,成为改变人类历史,推动智能化社会发展的关键技术。
作者简介
曾晨曦,都灵理工大学通信工程专业硕士,现就职于中国信息通信研究院泰尔终端实验室,从事移动互联网和人工智能研究,主要研究方向为计算机视觉相关的各类神经网络算法。
联系方式:zengchenxi@caict.ac.cn
段虎才,中科院信号与信息系统博士,现就职于中国信息通信研究院泰尔终端实验室,从事移动互联网软件开发工作,任移动互联网与软件部技术总监。
联系方式:duanhucai@caict.ac.cn
校 审 | 陈 力、 珊 珊
编 辑 | 凌 霄
欢迎转发分享!
如需转载,请联系授权事宜:
电话:62300198
Email:media@caict.ac.cn
推荐阅读