如何选择开源的机器学习框架?
Posted 云效
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何选择开源的机器学习框架?相关的知识,希望对你有一定的参考价值。
导读:开源是创新和科技快速发展的核心。在此,我们将讨论如何针对不同的用例选取开源的机器学习工具。尽管机器学习还处于早期发展阶段,但从医疗、安全到个性化营销,这种潜在的价值使得公司将机器学习作为一种机会。
为什么要选择机器学习框架呢?
使用开源工具的好处不仅仅在于其可用性。通常来说,如此级别的项目均有大量的数据工程师和数据科学家愿意去分享数据集和前期训练模型。比如,你可以使用分类模型训练来自于 ImageNet 的数据,而非利用 scratch 建立图形感知。开源的机器学习工具还能够让你进行迁移学习,这意味着可以通过运用其他方面的知识解决机器学习的问题。所以,你可以把一些能力形成一种模型,这些模型可以学会识别汽车或者能够帮助我们完成其他的任务。
根据你所需要处理的问题,预先训练的模型和开放的数据集可能并不会像定制的那样准确,但开源框架不需要你收集数据集,这能够为你节省大量的时间和精力。根据前百度首席数据科学家、斯坦福大学教授 Andrew Ng 所说,使用开源模型和数据集将会成为继监督学习后驱动商业成功的第二大动因。
在众多活跃但不那么流行的开源工具中,我们将选取5个进行深度探讨,以便帮助你找到适合你的一款工具并且开始你的数据科学探索道路。接下来,我们进入正题。
1. TensorFlow
TensorFlow最初是仅供 Google 内部使用的,2015年在 Apache 2.0 源码开始开源发布。Google 的声誉和构建模型时出色的流程图吸引了一大群的 TensorFlow 拥护者。
TensorFlow 对于深度神经网络研究和复杂的数学计算来说都是一个很好的python 工具,它甚至能够支持强化学习。TensorFlow 的独特之处还在于数据流图-结构,包含节点(数学运算)和边缘(数值数组或张量)。
1.1 数据集和模型
TensorFlow 的灵活之处体现在基于它进行研究或者重复机器学习任务的可能性。因此,你可以使用名为 TensorFlow Core 的低级 API。你可以通过它控制模型并且使用你自己的数据集对它们进行训练。但也有公共的预训练模型,用在 TensorFlow Core 之上构建更高级的 API。你可以使用的目前比较流行的模式有 MNIST,一个帮助识别图片上的手写数字的传统数据集,或者 Medicare Data,一个来自于 Google 帮助预测医疗服务收费的数据集。
1.2 受众及学习曲线
对于第一次探索机器学习的人来说,TensorFlow 功能的多样化会显得有些复杂。一些人甚至认为,该库并未加速机器学习的学习曲线,反而让其更加陡峭。TensorFlow 是一种级别较低的库,但它需要编写大量的代码以及对数据科学细节的良好理解,这才能更好的使用其进行项目开发。因此,如果你的数据科学团队是以 IT 为中心的,那么它或许不是你的最佳选择,我们将会讨论更加简单的替换方案。
1.3 用例
考虑到 TensorFlow 的复杂性,其用例主要包含大型公司的解决方案,这些公司拥有机器学习领域的专家。例如,英国在线超市 Ocado 运用 TensorFlow 来优先处理他们联系中心的需求,并改善了需求预测。同时,全球保险公司 Axa 使用该库预测他们的用户将可能涉及的大型汽车事故。
2. Theano:具有扩展性能的成熟库
Theano 是一种级别较低的库,它基于 Python 语言,用于科学计算,并且其通常将定义、优化、求值数学表达式作为深度学习的目标。尽管它具有非常优秀的计算性能,但其复杂性还是让很多用户无法进行。基于这个原因,Theano 主要被用于底层的包装器,例如 Keras,Lasagne 以及 Blocks 这三种旨在快速原型化和模型测试的高级别框架。
2.1 数据集及模型
Theano 有公共模型,但是使用率较高的框架都有大量的教程和与训练的数据集可供选择。例如,Keras 在其文档中存储了可用的模型以及详细的使用教程。
2.2 受众及学习曲线
如果你使用 Lasagne 或 Keras 作为顶部的高级包装器,你将有大量的教程和预先训练的数据集。此外,Keras 被认为是最容易从早期深度学习探索阶段开始的库。
由于 TensorFlow 的设计是为了取代 Theano,让它失去了大量的粉丝。但是,许多数据科学家发现,有很多优势足以让他们使用过时的版本。
2.3 用例
考虑到深度学习研究和发展的工业标准,Theano 最初是用来对最为前沿的深度学习算法作为补充。然而,考虑到你也许并不会直接使用 Theano,你可以将其众多功能作为使用其他库的基础如:数字及图片识别,对象本地化,甚至与机器人聊天。
3. Torch:由 Lua 脚本语言驱动 Facebook 支持的框架
Torch 常被称为初学者最简单的深度学习工具。因为它是简单的脚本语言,Lua 开发的。尽管使用这个语言的人比 Python 要少,它仍被广泛采用—— Facebook,Google 以及 Twitter。
3.1 数据集及模型
你可以在其 GitHub cheatsheet 页面上找到要加载的流行数据集列表。此外,Facebook 还发布了一个官方代码,用于深度剩余网络( ResNets )的实现,并使用预先训练的模型来对自己的数据集进行微调。
3.2 受众及学习曲线
市场中使用 Lua 语言的工程师人数远少于 Python。然而,Torch 语法中反映出 Lua 更易阅读。活跃的 Torch 贡献者们喜欢 Lua,所以这对于初学者和那些希望扩展其工具集的人来说是一个极棒的选择。
3.3 用例
Facebook 使用 Torch 创建了 DeepText,它能够以每分钟为单位将用户分享在网站的信息分类,并且提供更个性化的内容定位。Twitter 在 Torch 的支持下,已经能够推荐基于算法时间线的推文(而非按时间逆序)。
4. Scikit-learn
Scikit-learn 是一个高层级的框架,用于监督和无监督的机器学习算法。作为 Python 生态系统中的组成部分,它构建在 NumPy 及 SciPy 库之上,每个库都负责较低层级的数据科学任务。然而,当 NumPy 处理数值计算时,SciPy 库包含更具体的数值流程,例如优化和插值。随后,scikit-learn 被用于机器学习,在 Python 生态系统中,这三种工具与其它工具之间的关系反映了数据科学领域中不同层级:层级越高,能解决的问题就更加具体。
4.1 数据集和模型
该库已经包含了一些分类以及回归的标准数据集,尽管它们不能尽然代表真实情况。然而,用于衡量疾病发展的糖尿病数据集或者用于模式识别的虹膜职务数据集,都能很好的解释机器学习算法是怎样在 scikit 中起作用的。而且,该库提供了从外部源加载数据集的信息,包括任务的示例生成器,例如多类分类以及分解,同时提供关于流行数据集使用的建议。
4.2 受众及学习曲线
尽管作为一个强有力的库,scikit-learn 专注于易用性和文档化。它是一个非专家学者和新手工程师都能操作的工具,因为它使用简单并包含大量描述清楚的实例,并能使机器学习算法快速地应用于数据中。根据来自软件商店 AWeber 和 Yhat 的评价,scikit 非常适合那些有时间和人力资源限制的项目。
5. Caffe/Caffe2:使用简单并且拥有大量预先训练模型
不同于为研究而生的 Theano 和 Torch,Caffe 并不适合于文本、声音或者时间序列数据。Caffe 是一个专用的机器学习库,用于图像分类。来自 Facebook 以及最近开源的 Caffe2 的支持,使得该库成为了拥有248名 GitHub 贡献者的流行工具。
尽管其因发展缓慢而受到非议,Caffe 的继任者 Caffe2 通过增强灵活性、失重以及支持移动部署消除了原有技术存在的问题。
5.1 数据集和模型
Caffe 鼓励来自工业界和其它用户所提供的数据集。该团队培养协作同时链接大量流行的数据集,这些数据集预先由 Caffe 训练。该框架最大的优势是模型动物园——即包含有大量的由开发者和研究者创建的预训练模型,你可以使用、结合模型或者仅学习和训练你自己的模型。
5.2 受众和学习曲线
Caffe 团队声称,你可以跳过学习的部分,使用现有的模型直接开始深度学习的探索。该库的目标人群是那些想要第一时间亲身体验深度学习并且承诺推动社区发展的开发人员。
5.3 用例
通过使用最先进的卷积神经网络(CNNs)——深度神经网络成功应用于视觉图像分析,甚至是自动驾驶的视觉效果。Caffe 帮助 Facebook 发展它的实时视频过滤工具,目的是在视频中应用著名艺术风格。Pinterest 同时使用 Caffe 扩展了视觉搜索功能,并同意用户发现图片中特定的对象。
本文由阿里云云栖社区组织翻译。
译者:Elaine,审校:袁虎。
文章原标题《choosing-open-source-machine-learning-library》
原文链接:https://yq.aliyun.com/articles/582884
点击左下角阅读原文,体验云效一站式企业协同研发!助力企业产品快速创新迭代,实现业务价值。
以上是关于如何选择开源的机器学习框架?的主要内容,如果未能解决你的问题,请参考以下文章