开源是创新和科技快速发展的核心。在此,我们将讨论如何针对不同的用例选取开源的机器学习工具。尽管机器学习还处于早期发展阶段,但从医疗、安全到个性化营销,这种潜在的价值使得公司将机器学习作为一种机会。
为什么要选择机器学习框架呢?
使用开源工具的好处不仅仅在于其可用性。通常来说,如此级别的项目均有大量的数据工程师和数据科学家愿意去分享数据集和前期训练模型。比如,你可以使用分类模型训练来自于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扩展了视觉搜索功能,并同意用户发现图片中特定的对象。