大数据频道 频道

开发者如何挑选最合适的机器学习框架?

  【IT168 评论】如今,各种各样的机器学习工具活跃在开源社区,这些工具有助于减轻配置和测试AI相关工作的负载。但是,如何评估并选择适合自己的工具成为了开发者必须认真思考的问题,有些人可能希望在训练新的AI算法时专注于易用性,而其他人可能会优先考虑参数优化和生产部署,不同的框架在不同的领域又具备着不同的优劣势,这让开发者难以抉择。

  现在比较流行的机器学习框架有TensorFlow、MXNet、Scikit-learn、Keras和PyTorch,这些通常被数据科学家用于训练各种用例算法,比如预测、图像识别和推荐。因为数据科学家往往更喜欢能够轻松构建算法的机器学习框架,但这只是整个人工智能开发流程中很小的部分,企业通常会花更多时间在一些辅助工作上,比如准备数据、将算法转移到生产环境、配置机器学习参数、排除研究环境和生产环境模型之间的差异。

  选择机器学习框架之前需要考虑的三个问题!

  根据Forrester Research 的AI方向副总裁兼首席分析师Mike Gualtieri的说法,研发人员在选择机器学习框架时需要思考如下三个问题:

  1、该框架用于深度学习还是经典的机器学习?

  2、在开发AI模型时,首选的编程语言是什么?

  3、开发过程使用哪些硬件、软件和云服务进行扩展?

  选择深度学习还是经典的机器学习?

  深度学习是机器学习中的一个分支,在算法层面,经典的机器学习算法未必不能实现深度学习的功能,很多机器学习算法在应用程序中都可以完美的完成各项深度学习任务,虽然有些框架在某种程度上支持这两种算法,但机器学习框架往往表现更好。

  从差异性的角度来说,深度学习框架更加偏重神经网络方向,尤以TensorFlow最为知名,其他在深度学习中表现良好的机器学习框架还有MXNet和Caffe,这些框架支持编写用于图像标记和高级自然语言处理的算法以及其他应用程序。

  深度学习和机器学习框架最大的不同在于所处理的数据结构有所差异,深度学习框架可以被训练用于处理结构化数据,但是机器学习框架不适用于非结构化数据。在选择框架前,你一定要了解企业的数据类型以及要构建的应用程序类型。

  经典的机器学习算法适用于各种优化和统计分析,最受欢迎的机器学习框架是Scikit-learn。Scikit-learn适合在Python中编写,但Comprehensive R Archive Network(也称为CRAN)可能更适合在R中编写应用程序。其他流行的软件包有Apache Spark MLlib和H2O.ai等,H2O.ai有一套开源机器学习算法并且运行良好。

开发者如何挑选最合适的机器学习框架?

  开发AI模型,首选的编程语言是什么?

  就编程语言而言,Python和R是机器学习开发者普遍的选择。当然,你可以使用其他语言,比如C、Java和Scala。Gualtieri表示,目前的大多数机器学习应用都是用Python编写的,因为R语言是由统计学家设计的,并不是最优雅的编程语言。相比较而言,Python是一种更加现代化的编程语言,并且Caffe和TensorFlow也是开发机器学习模型的Python编码器的主流选择。

  测试环境与实际生产环境的差异

  在开发的早期阶段,数据科学家可能会针对不同的数据集选择模型或算法,但是,如果你决定对生产环境中的所有数据集运行同一个模型,那么你可以查看一些支持分布式体系结构的框架,比如Apache Spark的MLlib或H20,因为可扩展性是一个很实际且很重要的问题。

  在深度学习中有很多类似的场景,比如,AI开发人员想要对图像进行标注,他们可以下载TensorFlow并在桌面运行以训练算法和试验不同的模型,一旦他们整理出了一个可行的模型,往往会迫不及待得丢到整个生产环境,但这个模型不一定适合整个生产开发环境,因为测试环境与其有着很大差异,并且也需要考虑硬件条件和云服务支持。

  在AI算法的训练阶段,可扩展性是指可以分析的数据量以及数据分析速度,使用分布式算法和分布式处理可以显著提高性能。在实际部署阶段,可扩展性更多得与可立即命中模型的并发用户或应用程序的数量有关。很多AI项目出现问题的原因在于训练环境和生产环境千差万别,数据科学家却只使用一套工具。

  参数优化

  选择机器学习框架的另一个关键因素是参数优化,每种算法都采用不同的方法来分析训练数据并将其学习的内容应用于新的示例。每个参数都可以通过旋钮和刻度盘的不同组合来调节,通过调整不同变量的权重和异常值以列举一些可能的组合。在选择机器学习框架时,重要的是考虑这些参数是希望自动调整还是手动调整,需要调整的旋钮和表盘越多,找到合适的组合就越困难。

  机器学习框架是否是解决特定问题的非常好的选择,这是企业要考虑的最后一个问题,我们可以将机器学习开发工具分为三类:notebook-based, multi-modal和automated。

  notebook-based - 使用基于Python的Jupyter等工具,提供对机器学习模型定制的所有方面的复杂控制,机器学习框架使用此概念来减少自定义的繁重工作。

  multi-modal(多模式)本质上是一种将数据科学与专用工具(如Salesforce Einstein)相结合的低质量代码编写方式,使开发人员能够将核心AI模型扩展到特定用例。

  Automated(自动化方法)使用工具自动为给定的输入数据集尝试各种可能的算法,直到确定特定用例的非常好的备选者。这些工具包括Google AutoML,DataRobot和H20.ai等产品。

  自动化确实很有吸引力,因为数据科学家的技术水平未必很高,尤其是现在社会整体人才稀缺的情况下,并且通过自动化工具的支持,统计学家有时也可以完成一些数据科学家的工作,当然,不要期待这些自动化工具完全替代人工。

  开源机器学习框架提供了丰富的社区支持

  Teradata营销副总裁Chad Meley表示,尽管供应商正在努力开发机器学习工具和框架,但开源框架将继续在该领域占据主导地位,因为这些框架集合了世界各地相关领域专家的智慧。

  很多比较大的云供应商也在积极提供自己的框架,比如谷歌、亚马逊等,根据企业IT战略展示,CIO可能更希望与特定的云供应商保持一致,或者强调跨多个云和本地部署的可移植性。目前,谷歌支持的TensorFlow框架在市场中拥有最高份额,紧随其后的是Caffe、Keras、MXNet、CNTK和PyTorch。

  此外,Spark提供的MLlib也是一个不错的选择,它还提供了SQL、图形处理和流处理等功能。Spark本身易于使用且拥有庞大的用户群体,这确保了技术的稳步提升,并且生命力十分顽强,可以确保在未来的很长一段时间内依旧存活。

0
相关文章