来源 | 云头条
想大胆尝试机器学习?这些工具可以为你处理繁重的任务。
驾驭机器学习的13种框架
在去年,机器学习以前所未有的势头进入主流。对这股潮流起到推波助澜的不单单是成本低廉的云环境和功能更强大的GPU硬件,还有如今面向机器学习的数量激增的框架。它们都是开源框架,而更重要的是,它们旨在化解机器学习最难的部分,将其技术或方法提供给广泛的开发人员。
本文介绍了13种机器学习框架,有的在去年刚出炉,有的刚修订。它们引起了我们的注意,因为都是在IT界具有重要影响力的产品,有的试图带来一种简化的解决办法,有的旨在攻克与机器学习有关的某个难题。
Apache Spark MLlib
Apache Spark最广为人知的角色就是它是Hadoop家族的一员,但这种内存数据处理框架脱胎于Hadoop之外,而且在Hadoop生态系统外面扬名立万。Spark已成为一款可靠的机器学习工具,这归功于其日益庞大的算法库,其算法可以高速运用于内存中数据。
Spark没有坐以待毙,因为Spark拥有的算法一直在不断增加和修订。去年的1.5版本增添了许多新的算法,改进了现有的算法,并进一步增强了Python中对MLlib的支持,而Python是面向数学运算和统计用户的一大平台。除了其他功能外,刚发布的Spark 1.6还让用户可以通过持久化流水线(persistent pipeline),暂停和恢复Spark ML任务。
Apache Singa
“深度学习”框架支持处理繁重任务的机器学习功能,比如自然语言处理和图像识别。Singa最近得到接受、进入Apache孵化器(Apache Incubator),这种开源框架旨在让用户很容易训练针对大量数据的深度学习模型。
Singa提供了一种简单的编程模型,用于训练跨机器集群的深度学习网络,它还支持许多常见类型的训练任务:卷积神经网络、受限玻尔兹曼机和递归神经网络。模型可以同步训练(逐个训练),也可以异步训练(并行训练),这取决于哪种方法最适用于某个问题。Singa还利用Apache Zookeeper简化了集群构建和设置。
Caffe
深度学习框架Caffe“在开发当初牢记表达、速度和模块化”。Caffe在2013年为机器视觉项目而开发,此后扩大到了其他应用领域,比如语音和多媒体。
速度是一大优先事项,于是Caffe完全用C++编写,并支持CUDA加速,不过它可以根据需要在CPU处理和GPU处理之间进行切换。发行版包括一套面向常见分类任务的免费开源参考模型,其他模型则由Caffe用户社区开发和捐献。
微软Azure ML Studio
考虑到执行机器学习需要大量的数据和强大的计算能力,云是机器学习应用的理想环境。微软为Azure配备了自己的按需付费的机器学习服务:Azure ML Studio,分为按月付费、按小时付费和免费套餐这三种版本。(该公司的HowOldRobot项目就是用这个系统构建的。)
Azure ML Studio让用户可以创建和训练模型,然后将它们变成可以被其他服务使用的API。用户可以为模型数据获得每个帐户最多10GB的存储空间,不过你也可以将自己的Azure存储空间连接到该服务,以处理更庞大的模型。一系列广泛的算法可供使用,这要感谢微软和第三方。你甚至不需要帐户就可以试用该服务;匿名登录后,就可以使用Azure ML Studio长达8个小时。
亚马逊机器学习
亚马逊对云服务采用的一般方法遵循这种模式:提供基本服务,培育关注它的核心受众,让他们在上面构建,然后找到他们真正需要的东西,并提供这种东西。
亚马逊首次尝试提供机器学习即服务:亚马逊机器学习(Amazon Machine Learning)也是如此。它连接到存储在亚马逊S、Redshift或RDS中的数据,可以对相关数据执行二元分类、多类分类或递归等操作。然而,这项服务完全以亚马逊为中心。除了依赖存储在亚马逊上的数据外,因而生成的模型无法导入或导出,训练模型的数据集不得大于100GB。不过,它仅仅是个开始,表明了它更注重机器学习的实用性,而不是便利性。
微软分布式机器学习工具包
用来处理任何机器学习问题的计算机部署得越多,效果越好,但是将机器结合起来、开发可以跨所有机器顺畅运行的机器学习应用程序可能很棘手。微软的DMTK(分布式机器学习工具包)框架就专门处理这个问题:跨系统集群分配各种各样的机器学习任务。
DMTK号称是一种框架,而不是一种完备的即开即用的解决方案,所以它自带的实际算法数量很少。不过DMTK的设计便于将来扩展,而且便于用户最充分地利用资源有限的集群。比如说,集群中的每个节点都有本地缓存,减少了与中央服务器节点之间的通信量,而中央服务器节点为相应任务规定了范围。
谷歌TensorFlow
谷歌TensorFlow酷似微软的DMTK,这种机器学习框架旨在跨多个节点灵活扩展。与谷歌的Kubernetes一样,它当初也是旨在解决谷歌内部的问题,谷歌最终决定将它作为一款开源产品来发布。
TensorFlow实施了所谓的数据流图(data flow graph),其中成批数据(“tensor”)可以由数据流图描述的一系列算法来加以处理。数据在系统中的移动被称为“流”(flow)――TensorFlow由此得名。数据流图可以用C++或Python来装配,可以在CPU或GPU上进行处理。谷歌的长期计划是,让第三方贡献者来完善TensorFlow。
微软计算网络工具包
微软发布DMTK不久,紧随其后发布了另一款机器学习工具包:计算网络工具包(Computational Network Toolkit,简称CNTK)。
CNTK类似谷歌TensorFlow,因为它让用户可以通过有向图来构建神经网络。微软还认为它与Caffe、Theano和Torch等项目相媲美。它声称相比那些框架的优点主要在于速度快,具体来说是能够同时充分利用多个CPU和多个GPU。微软声称,使用CNTK,并结合Azure上的GPU集群,将Cortana的语音识别训练的速度提升了一个数量级。
CNTK最初作为微软的语音识别研究项目的一部分而开发,早在2015年4月起初作为一个开源项目来提供,不过后来重新发布到GitHub上,采用了一种极其宽松的、类似MIT许可证的许可证。
Veles(三星)
Veles是一种面向深度学习应用的分布式平台;与TensorFlow和DMTK一样,它也用C++编写,不过使用Python来执行自动化和节点之间的协调。数据集加以分析、自动规范后被馈送到集群,REST API让受过训练的模型可以立即用在生产环境中(假设你的硬件足够好)。
Veles使用Python并不局限于仅仅将它用作粘合代码(glue code)。IPython(现在的Jupyter)这种数据可视化和分析工具,可以直观显示和发布来自Veles集群的结果。三星希望,发布开源Veles项目有望促进进一步的发展,比如移植到Windows和Mac OS X。
Brainstorm
Brainstorm由瑞士卢加诺的Dalle Molle人工智能研究所(IDSIA)的两名博士生Klaus Greff和Rupesh Srivastava开发而成,该项目的目的是“让深度神经网络快速、灵活而有趣”。已经包括了支持众多递归神经网络模型(比如LSTM)的功能。
Brainstorm使用Python提供两个“hander”,即数据管理API :一个用于Numpy的CPU运算,另一个通过CUDA利用GPU。大部分工作通过Python脚本来完成,所以别指望有一个丰富的前端GUI,只有你给自己提供的那个GUI。但长远计划是开发这种构架:可以运用“从早期开源项目汲取的经验”,并使用“与多种平台和计算后端兼容的新的设计元素”。
mlpack 2
我们之前汇总的机器学习资源提到了mlpack,这种基于C ++的机器学习库最早于2011年推出,设计当初着眼于“可扩展性、速度和易用性”,据库的开发者声称。实施mlpack有两种方法:通过处理简易的“黑盒子”操作的命令行执行文件缓存,或者借助处理较复杂工作的C ++ API。
2.0版本有很多重构和新功能,包括许多新类型的算法,并对现有算法做了改变,以便提速或简化。比如说,它丢弃了Boost库面向C++ 11的原生随机函数的随机数发生器。
一个长期存在的缺点是,缺少针对除C++之外的任何语言的绑定,这意味着使用从R到Python各种语言的用户无法使用mlpack,除非有人为上述语言推出了自己的包装器。已开展了工作,添加支持MATLAB的功能,但是像这样的项目在处理机器学习工作的主要环境下径直发挥作用,才往往会受到更大的追捧。
Marvin
Marvin神经网络框架是另一种比较新的框架,它是普林斯顿视觉小组(Princeton Vision Group)的杰作。它“生来就是为了被改动的”,开发者在项目的说明文档中这么解释,它只依赖用C++和CUDA GPU框架编写的几个文件。尽管代码本身有意很小,但项目确实随带许多预先训练的模型:只要适当引用,可以重复使用这些模型,使用合并请求(pull request)贡献给社区,就像该项目的自家代码那样。
Neon
Nervana这家公司开发了自己的深度学习硬件和软件平台,它提供了一种名为Neon的深度学习框架,将其作为一个开源项目。它使用可插入式模块,以便在CPU、GPU和Nervana自己的定制硬件上处理繁重任务。
Neon主要是用Python编写的,有几个组件用C++编写,以求速度。这样一来,用Python处理数据科学工作的其他人可以立即用它,拥有Python绑定的其他任何框架也可以立即用它。
end
数据分析咨询请扫描二维码
数据分析师的工作内容涉及多个方面,主要包括数据的收集、整理、分析和可视化,以支持商业决策和问题解决。以下是数据分析师的一 ...
2024-11-21数据分析师必须掌握的技能可以从多个方面进行归纳和总结。以下是数据分析师需要具备的主要技能: 统计学基础:数据分析师需要 ...
2024-11-21数据分析入门的难易程度因人而异,总体来看,入门并不算特别困难,但需要一定的学习和实践积累。 入门难度:数据分析入门相对 ...
2024-11-21数据分析是一项通过收集、整理和解释数据来发现有用信息的过程,它在现代社会中具有广泛的应用和重要性。数据分析能够帮助人们更 ...
2024-11-21数据分析行业正在迅速发展,随着技术的不断进步和数据量的爆炸式增长,企业对数据分析人才的需求也与日俱增。本文将探讨数据分析 ...
2024-11-21数据分析的常用方法包括多种技术,每种方法都有其特定的应用场景和优势。以下是几种常见的数据分析方法: 对比分析法:通过比 ...
2024-11-21企业数字化转型是指企业利用数字技术对其业务进行改造和升级,以实现提高效率、降低成本、创新业务模式等目标的过程。这一过程不 ...
2024-11-21数据分析作为一个备受追捧的职业领域,吸引着越来越多的女性加入其中。对于女生而言,在选择成为一名数据分析师时,行业选择至关 ...
2024-11-21大数据技术专业主要学习计算机科学、数学、统计学和信息技术等领域的基础理论和技能,旨在培养具备大数据处理、分析和应用能力的 ...
2024-11-21《Python数据分析极简入门》 第2节 3 Pandas数据查看 这里我们创建一个DataFrame命名为df: importnumpyasnpi ...
2024-11-21越老越吃香的行业主要集中在需要长时间经验积累和专业知识的领域。这些行业通常知识更新换代较慢,因此随着年龄的增长,从业者能 ...
2024-11-20数据导入 使用pandas库的read_csv()函数读取CSV文件或使用read_excel()函数读取Excel文件。 支持处理不同格式数据,可指定分隔 ...
2024-11-20大数据与会计专业是一门结合了大数据分析技术和会计财务理论知识的新型复合型学科,旨在培养能够适应现代会计业务新特征的高层次 ...
2024-11-20要成为一名数据分析师,需要掌握一系列硬技能和软技能。以下是成为数据分析师所需的关键技能: 统计学基础 理解基本的统计概念 ...
2024-11-20是的,Python可以用于数据分析。Python在数据分析领域非常流行,因为它拥有丰富的库和工具,能够高效地处理从数据清洗到可视化的 ...
2024-11-20在这个数据驱动的时代,数据分析师的角色变得愈发不可或缺。他们承担着帮助企业从数据中提取有价值信息的责任,而这些信息可以大 ...
2024-11-20数据分析作为现代信息时代的支柱之一,已经成为各行业不可或缺的工具。无论是在商业、科研还是日常决策中,数据分析都扮演着至关 ...
2024-11-20数字化转型已成为当今商业世界的热点话题。它不仅代表着技术的提升,还涉及企业业务流程、组织结构和文化的深层次变革。理解数字 ...
2024-11-20在现代社会的快速变迁中,选择一个具有长期增长潜力的行业显得至关重要。了解未来发展前景好的行业不仅能帮助我们进行职业选择, ...
2024-11-20统计学专业的就业方向和前景非常广泛且充满机遇。随着大数据、人工智能等技术的快速发展,统计学的重要性进一步凸显,相关人才的 ...
2024-11-20