2018年最流行的深度学习框架?这份科学的排行榜可以告诉你

  • 时间: 2018-09-22 07:42:52

机器之心 翻译

参与 路雪 蒋思源 张倩

2018年最流行的深度学习框架?这份科学的排行榜可以告诉你

深度学习仍然是机器学习领域最热门的技术。深度学习框架变化迅速,仅仅五年前 Theano 还一枝独秀,而最近出现了各种各样的框架,它们都有不同的特性。在本文中,为了评估 2018 到底哪些框架比较流行,作者从领英职位需求、谷歌搜索热度、Medium 文章数、arXiv 论文数和 GitHub 活跃度等方面审视不同的框架。

我想寻找值得关注的框架,于是就开发了这个排行榜。Python 语言是深度学习使用的热门语言,因此我主要关注能兼容 Python 的框架。我使用了来自 7 个不同类别的 11 个数据源,并用来评估框架使用、用户兴趣和流行度。

数据地址:https://www.kaggle.com/discdiver/deep-learning-framework-power-scores-2018

2018.09 by Jeff Hale

显然,TensorFlow 是绝对赢家,还有一些令人惊讶的发现。我们一起来看一下~

角逐者

我们考虑的这些框架都已经开源,它们主要都使用 Python,一些可以兼容 R 或其他语言。

TensorFlow 是绝对冠军。在 GitHub 活跃度、谷歌搜索、Medium 文章数、亚马逊书籍和 arXiv 论文这些数据源上,它所占的比重都是最大的。它还拥有最多的开发者用户,以及出现在最多的在线职位描述中。

Keras 具备「一个为人类而非机器设计的 API」。它在几乎所有评估中都是第二流行的框架。Keras 的后端可以基于TensorFlow、Theano 或 NLTK。如果你是刚入门深度学习的新手,使用 Keras 是不错的选择。

PyTorch 是第三流行的框架,也是第二流行的独立框架。它比TensorFlow 出现时间晚,但发展迅速。PyTorch 允许定制化,而TensorFlow 不能。PyTorch 是由 Facebook 支持开发的。

Theano 由蒙特利尔大学于 2007 年开发,是最老的 Python深度学习框架。现在它的流行度下降了很多,其开发者和维护者宣布 将停止更新维护 Theano 。不过,Theano 仍然频繁出现在职位描述中。

MXNet由 Apache 孵化。它和 Theano 的得分很接近,目前处于第四流行的深度学习库。它拥有大量贡献者、搜索结果、相关书籍和学术文章。但是它的使用率比去年有所下降,搜索它的用户也不是很多。

CNTK 是微软推出的认知工具包。它的推出旨在与谷歌、Facebook 竞争,但并没有获得特别多的使用。

FastAI 基于 PyTorch 构建。其 api 受到 Keras 的启发,所需代码甚至还更少。FastAI 正为今年 10 月的 1.0 版本发布而经历重写,FastAI 背后的男人 Jeremy Howard 曾经是 Kaggle 比赛冠军以及 Kaggle 主席。

你可能会问为什么 FastAI 会在这个名单上,职业开发者对它没什么需求,它的使用也不广泛。但是,它通过免费在线课程平台 fast.ai 获得了大批用户。同时,FastAI 也很强大易用,它的使用率可能会很快增长。

Caffe 不在本名单中,因为它之前更新到 Caffe2,2018 年 3 月 Caffe2 被融合进 PyTorch。

评估准则

为了全面地评估深度学习框架的流行程度,我选择以下类别和角度为它们进行评分:

  • 在线职位描述

  • KDnuggets 使用调查

  • 谷歌搜索热度

  • Medium 文章数量

  • Amazon 书籍数量

  • arXiv 论文数

  • GitHub 活跃度

支持本次评分的数据都在今年 9 月 16 号收集完,原数据地址为:https://docs.google.com/spreadsheets/d/1mYfHMZfuXGpZ0ggBVDot3SJMU-VsCsEGceEL8xd1QBo/edit?usp=sharing

我使用了 plotly 数据可视化库和 Python 的 Pandas 库来探索并展示各框架的流行度,对于交互性的 plotly 图表,请看 Kaggle Kernel:https://www.kaggle.com/discdiver/deep-learning-framework-power-scores-2018

在线职位描述

深度学习框架在目前的职场中有着什么样的需求?我搜索了领英的职位描述,具体而言为 Simply Hired、Monste 和 Angel List。

TensorFlow 在职位描述中明显要比其它框架出现得更多,所以如果你希望从事深度学习,最好还是学习这个框架。

我搜索职位描述的方法是采用「machine learning」+「框架名」,所以TensorFlow 就是采用「machine learningTensorFlow」来搜索的。我其实还采用了其它搜索方法,但还是这种搜索方法给出的结果更好。此外,额外的关键词对于区分不同框架而言是非常有必要的,因为我最初还尝试在这个分析中加入 Caffe 库。

使用情况

KDnuggets 是一个流行的数据科学网站,他们调查了世界各地数据科学家的软件库使用情况,他们会向用户问道:

在过去的 12 个月中,你在实际项目上会使用哪些分析、大数据、数据科学和机器学习工具?

以下展示了大家对框架的偏好程度:

Keras 在使用总量上非常惊人,它几乎和TensorFlow 一样。所以说美国老板对员工的TensorFlow 技能有压倒性的需求,而在国际上 Keras 使用的频率同样也非常高。

仅有这一个类别是包含国际数据的,因为其他类别加入国际数据可能会非常麻烦。KDnuggets 做这一份报告已经好几年了,我在这个分析中只用了今年的数据,但我们需要注意 Theano、MXNET 和 CNTK 相比于去年在使用上有所滑落。

谷歌搜索热度

在最大的搜索引擎上度量各框架的搜索热度,这也是一个非常好的流行度衡量方法。我们在 Google Trends 中搜索过去几年的搜索热度历史,虽然它并不提供具体的搜索数值,但还是能提供相对图表。

截至 2018 年 9 月 15 日,TensorFlow 平稳占据 78% 的搜索比重。PyTorch 接近 Keras,而其它框架的搜索量在 3 左右或低于 3。

下面我们来简要看一下搜索量随着时间的变化,以了解更多历史背景。下面的表格展示了近两年的谷歌搜索情况。

TensorFlow 蓝色、Keras 红色、PyTorch 黄色、Theano 绿色。

TensorFlow、Keras 和 PyTorch 的搜索量在 2016 年末和 2017 年增长迅速。有趣的是,它们在最近几个月增长缓慢。我们可以从中看到某种季节性,暑假下降寒假上升。

谷歌搜索趋势只允许同时对比五项,因此其它库在另外一个表上进行对比。所有这些结果都是在美国区域的搜索结果。尽管搜索关键词 Theano 和 Keras 还有其它意思,但那些意思主要是在美国以外使用。

Medium 文章数

我计算了多个出版物类型,出现较早的框架在出版方面比较有优势,未来排行榜将关注出版物数量的变化。下面来看 Medium 文章。

这次出现了新的冠军。从 Medium 文章提及量来看,Keras 超越TensorFlow,但也算势均力敌。FastAI 的表现也超出以往。我猜测出现上述结果的原因是 Keras 和 FastAI 对新手比较友好。深度学习新人对它们有很大兴趣,而 Medium 是一个教程论坛。

下面我们来看哪些框架在亚马逊上的实体书比较多。

亚马逊书籍

我在亚马逊 Books->Computer Science 分类下搜索了每个深度学习框架,结果如下:

TensorFlow 又一次夺得冠军。MXNET 相关书籍的数量超出预期,且多于 Theano。PyTorch 的书相对较少,但这有可能是因为该框架还比较年轻。该评估标准对年头久的库较为有利,因为出版书籍需要时间。

或许 Theano 在学术论文方面会比较好吧。

arXiv 论文

arXiv 是在线数据库,大部分机器学习学术论文都会发表在 arXiv 上。我在该网站上搜索了每个框架,结果如下:

同样,TensorFlow 的学术论文较多。最大的意外是其它框架的学术论文总数不敌TensorFlow。注意 Keras 在 Medium 和亚马逊上的流行度比学术论文要高得多。PyTorch 在这块表现也不好,应该还是因为出现时间较短的缘故。

GitHub 活跃度

GitHub 活跃度是框架流行度的另一个指标。我分别调查了 star、fork、watcher 和贡献者数量,因为它们单独的意义要比整体的组合的意义更大。

很明显,TensorFlow 是 GitHub 上最流行的框架,拥有大量活跃用户。FastAI 还不错,毕竟才诞生一年。有趣的是各个框架的贡献者数量要比其它三个指标接近得多。

收集和分析这些数据之后,是时候总结一下了。

计算排行榜分数步骤

我用以下步骤创建排行榜得分:

  1. 将所有特征缩放到区间 [0,1] 之间。

  2. 聚合职位描述和 GitHub 活跃度这两个子类别。

  3. 根据下图中的权重对类别进行加权。

如上图所示,在线职位描述和 KDnuggets 使用调查组成了分数的一半,而网页搜索、出版物和 GitHub 关注度组成了另一半。这种分割应该是对不同类别最合适的平衡。

4. 为了方便理解,将加权后的得分乘 100。

5. 将每个框架的各类别得分相加,整合成最终的排行榜得分。

Google Sheet 地址:https://docs.google.com/spreadsheets/d/1mYfHMZfuXGpZ0ggBVDot3SJMU-VsCsEGceEL8xd1QBo/edit#gid=0

下图是对子类别进行加权相加之后的得分。

Jupyter Notebook 地址:https://www.kaggle.com/discdiver/deep-learning-framework-power-scores-2018

下图再次展示了最终的排行榜得分。

2018.09 by Jeff Hale

100 是最高分,在每一类中代表第一名。TensorFlow 得分接近 100,这也不足为奇,因为这一框架几乎包揽了所有类别的第一名。点击以下链接获取图中未显示信息:https://www.kaggle.com/discdiver/deep-learning-framework-power-scores-2018

展望

TensorFlow 现在独占鳌头,这种局势短期内似乎不会改变。然而,考虑到深度学习世界中事物的发展速度,TensorFlow 被赶超也不是不可能。

时间会证明 PyTorch 是否会超越TensorFlow,就像 React 超越 Angular 一样。PyTorch 和 React 都是 Facebook 支持的灵活框架,用户通常认为这两个框架比谷歌的同类框架易用。

FastAI 能吸引课程之外的用户吗?它有大量的学生,使用 API 比 Keras 更容易。

给学习者的建议

如果你正考虑学习其中一种框架且具备 Python、numpy、pandas、sklearn 和 matplotlib 的技能,我建议你从 Keras 入手。该框架用户基础很大,在求职时非常有用,Medium 上有很多相关文章,API 也很易用。

如果你已经学过 Keras,那么选择下一个要学习的框架可能有点困难。我建议你去学TensorFlow 或 PyTorch,而且要好好学,这样才能做出良好的深度学习模型。

TensorFlow 显然是为迎合需求而学习的框架,但 PyTorch 的易用性和灵活性使得它使用起来更加友好。

一旦掌握了这些框架,我建议你留意 FastAI。如果想同时学习基础和高级深度学习技能,请查看 FastAI 的免费在线课程,FastAI 1.0 承诺帮助用户轻松实施最新的深度学习策略并快速迭代。

无论你选择了哪个框架,我希望你现在深入了解一下哪个框架需求量最大、使用最频繁、最受关注。

原文链接:https://www.kaggle.com/discdiver/deep-learning-framework-power-scores-2018

工程 TensorFlow 深度学习框架 Keras PyTorch

相关数据

大数据 技术

Big data

大数据,又称为巨量资料,指的是传统数据处理应用软件不足以处理它们的大或复杂的数据集的术语。

来源: 维基百科

机器学习 技术

Machine Learning

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

来源:Mitchell, T. (1997). Machine Learning. McGraw Hill.

MXNet 技术

MXNet

MXNet是开源的,用来训练部署深层神经网络的深度学习框架。它是可扩展的,允许快速模型训练,并灵活支持多种语言(C ++,Python,Julia,Matlab,JavaScript, Go,R,Scala,Perl,Wolfram语言)

来源: Wikipedia

权重 技术

Weight

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

来源:Google AI Glossary

深度学习 技术

Deep learning

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

来源: LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. nature, 521(7553), 436.

张量 技术

Tensor

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

来源: 维基百科

TensorFlow 技术

TensorFlow

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

来源: 维基百科

机器之心

机器之心编辑