热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

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

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

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

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

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

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

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

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

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

从差异性的角度来说,深度学习框架更加偏重神经网络方向,尤以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本身易于使用且拥有庞大的用户群体,这确保了技术的稳步提升,并且生命力十分顽强,可以确保在未来的很长一段时间内依旧存活。

来源:网络大数据

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

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


点击下方“阅读原文”了解云创大数据诚征***行业总代理事宜↓↓↓

推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • Python开源库和第三方包的常用框架及库
    本文介绍了Python开源库和第三方包中常用的框架和库,包括Django、CubicWeb等。同时还整理了GitHub中最受欢迎的15个Python开源框架,涵盖了事件I/O、OLAP、Web开发、高性能网络通信、测试和爬虫等领域。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有