京公网安备 11010802034615号
经营许可证编号:京B2-20210330
来源 | 云头条
想大胆尝试机器学习?这些工具可以为你处理繁重的任务。
驾驭机器学习的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
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
当沃尔玛数据分析师首次发现 “啤酒与尿布” 的高频共现规律时,他们揭开了数据挖掘最迷人的面纱 —— 那些隐藏在消费行为背后 ...
2025-11-03这个问题精准切中了配对样本统计检验的核心差异点,理解二者区别是避免统计方法误用的关键。核心结论是:stats.ttest_rel(配对 ...
2025-11-03在 CDA(Certified Data Analyst)数据分析师的工作中,“高维数据的潜在规律挖掘” 是进阶需求 —— 例如用户行为包含 “浏览次 ...
2025-11-03在 MySQL 数据查询中,“按顺序计数” 是高频需求 —— 例如 “统计近 7 天每日订单量”“按用户 ID 顺序展示消费记录”“按产品 ...
2025-10-31在数据分析中,“累计百分比” 是衡量 “部分与整体关系” 的核心指标 —— 它通过 “逐步累加的占比”,直观呈现数据的分布特征 ...
2025-10-31在 CDA(Certified Data Analyst)数据分析师的工作中,“二分类预测” 是高频需求 —— 例如 “预测用户是否会流失”“判断客户 ...
2025-10-31在 MySQL 实际应用中,“频繁写入同一表” 是常见场景 —— 如实时日志存储(用户操作日志、系统运行日志)、高频交易记录(支付 ...
2025-10-30为帮助教育工作者、研究者科学分析 “班级规模” 与 “平均成绩” 的关联关系,我将从相关系数的核心定义与类型切入,详解 “数 ...
2025-10-30对 CDA(Certified Data Analyst)数据分析师而言,“相关系数” 不是简单的数字计算,而是 “从业务问题出发,量化变量间关联强 ...
2025-10-30在构建前向神经网络(Feedforward Neural Network,简称 FNN)时,“隐藏层数目设多少?每个隐藏层该放多少个神经元?” 是每个 ...
2025-10-29这个问题切中了 Excel 用户的常见困惑 —— 将 “数据可视化工具” 与 “数据挖掘算法” 的功能边界混淆。核心结论是:Excel 透 ...
2025-10-29在 CDA(Certified Data Analyst)数据分析师的工作中,“多组数据差异验证” 是高频需求 —— 例如 “3 家门店的销售额是否有显 ...
2025-10-29在数据分析中,“正态分布” 是许多统计方法(如 t 检验、方差分析、线性回归)的核心假设 —— 数据符合正态分布时,统计检验的 ...
2025-10-28箱线图(Box Plot)作为展示数据分布的核心统计图表,能直观呈现数据的中位数、四分位数、离散程度与异常值,是质量控制、实验分 ...
2025-10-28在 CDA(Certified Data Analyst)数据分析师的工作中,“分类变量关联分析” 是高频需求 —— 例如 “用户性别是否影响支付方式 ...
2025-10-28在数据可视化领域,单一图表往往难以承载多维度信息 —— 力导向图擅长展现节点间的关联结构与空间分布,却无法直观呈现 “流量 ...
2025-10-27这个问题问到了 Tableau 中两个核心行级函数的经典组合,理解它能帮你快速实现 “相对位置占比” 的分析需求。“index ()/size ( ...
2025-10-27对 CDA(Certified Data Analyst)数据分析师而言,“假设检验” 绝非 “套用统计公式的机械操作”,而是 “将模糊的业务猜想转 ...
2025-10-27在数字化运营中,“凭感觉做决策” 早已成为过去式 —— 运营指标作为业务增长的 “晴雨表” 与 “导航仪”,直接决定了运营动作 ...
2025-10-24在卷积神经网络(CNN)的训练中,“卷积层(Conv)后是否添加归一化(如 BN、LN)和激活函数(如 ReLU、GELU)” 是每个开发者都 ...
2025-10-24