京公网安备 11010802034615号
经营许可证编号:京B2-20210330
波士顿的 数据科学团队正在利用尖端工具和算法来优化商业活动,且这些商业活动是基于对用户数据中的深刻透析。数据科学大量使用机器算法,可以帮助我们在数据中识别和利用模式。从互联网大规模数据中获取透析是一项具有挑战性的任务,因此,能大规模运行算法是一个至关重要的需求。伴随着数据的爆炸性增长和成千上万的机器集群,我们需要使算法可以适应在如此分布的环境下运行。在通用的分布式计算环境中运行机器学习算法具有一系列的挑战。
这里,我们探讨一下如何在一个Hadoop集群中实现和部署深度学习(一个尖端机器学习框架)。对于算法是如何适应运行在一个分布式环境中,我们提供了具体的细节。我们也给出了算法在标准数据集上的运行结果。
深度信任网络
深度信任网络(Deep Belief Networks, DBN)是在贪婪和无监督的条件下通过迭代和训练受限的玻耳兹曼机(Boltzmann Machines, RMB)而得到的图形模型。通过对如下可被观察的维度x和隐藏层hk之间相互连接的分布式进行建模,DBN被训练来提取训练数据的深层透析。
表达式1:DBN分布式
在下图中,输入层和隐藏层的关系是可以被观察到的。从高层次来看,第一层被作为RBM来训练,为原始输入x进行建模。输入的数据是个稀疏二进制维度,表明数据将会被分类,比如,一个二进制的数字图像。后续层把前面的层传递过来的数据(样本或activations)当作训练示例使用。层数可以通过经验来决定,以此来获得更好的模型性能,DBN支持任意多的层数。
图1:DBN层次
下面的代码片段表明了进入RBM的训练。在提供给RBM的输入数据中,有多个预定义的时间点。输入数据被分成小批量数据,为各个层计算weights、activations和deltas。
在所有的层都被训练以后,深度网络的参数调整使用受监督的训练标准。受监督的训练标准,比如,可以作为一个分类问题来设计,允许使用深度网络来解决分类问题。更复杂的受监督的标准可以用来提供如情景解读之类的有趣的结果,比如解释图片里展示的东西是什么。
基础构造
深度学习受到了广泛的关注,不仅仅是因为它可以得出比其他一些学习算法更优异的结果,也因为它可以在分布式设备上运行,允许处理大规模的数据集。深度网络可以在两个级别进行并行、层级别和数据级别[6]。对于层级别的并行,许多实现使用GPU数组来并行计算层级别activations和频繁同步它们。然而,这种方法不适合那种数据驻留在通过网络连接的多个机器的集群,因为有着较高的网络开销。对于数据层的并行,训练是在数据集上进行并行的,更适合分布式设备。Paypal的大部分数据存储在Hadoop集群上,因此能够运行那些集群上的算法是我们的首要任务。专用集群的维护和支持也是一个我们需要考虑的重要因素。然而,由于深度学习本质上是迭代的,像MapReduce这样的范式不适合运行这些算法。但是随着Hadoop2.0和基于YARN的资源管理的问世,我们可以编写迭代程序,同时可以精细地控制程序使用的资源。我们使用了IterativeReduce [7] , Hadoop YARN里面的一个用户编写迭代算法的程序,我们可以将它部署在一个运行Hadoop 2.4.1的Paypal集群中。
方法
我们实现了Hinton的核心算法,在[2]中引用的。由于我们的需求是分散运行在多个机器的集群中的算法,我们在这样的环境下使用了他们的算法。对于在多个机器上分散这个算法,我们参照了Grazia所提出的指南[6]。下面是对我们的实现做的详细总结:
► Master节点初始化RBM的weights。
► Master节点向Worker节点推送weights和splits。
► Worker节点在一个数据集时间点训练一个RBM层,换句话说,在一个Worker节点完全通过所有的split后,向Master发送更新后的weights。
► 在一个给定的时间点里,Master节点对来自所有Worker节点的weights求平均值。
► 在预定义的时间集(我们的例子中是50)中,重复3-5步操作。
► 第6步完成以后,有一个层就被训练了。后续的RBM层也重复这些步骤。
► 当所有的层都被训练以后,深度网络就会通过使用错误反向广播机制准确地调整好。
下图描述了在运行深度学习算法时的一个单个数据集时间点(步骤3-5)。我们注意到,这个范式可以被利用来实现一个主机可迭代的机器学习算法。
图2:用于训练的单个数据集时间点
下面的代码片段表明了在训练单个机器的DBN中所涉及的步骤。数据集首先被拆分成多个批次,然后多个RBM层会被顺序地初始化和训练。在RBM都被训练以后,它们会通过一个准确调整的错误反向广播相位。
我们使用了IterativeReduce[7]的实现很大程度是为了YARN管道。我们对实现做出了重大改革,可以将它利用到我们的深度学习算法实现。IterativeReduce的实现是为Cloudera Hadoop分布式而编写,它被我们重置了平台,以此来适应标准的Apache Hadoop分布式。我们还重写了实现,以此来使用[8]中描述的标准编程模型。特别是,我们需要YARN客户端API在ResourceManager和客户端程序之间进行通信。我们也使用了AMRMClient和AMNMClient在ApplicationMaster、ResourceManager和NodeManager之间进行通信。
我们首先使用YARN API提交应用程序到YARN资源管理器:
在应用被提交以后,YARN资源管理器启动应用程序Master。如果必要的话,应用程序Master负责分配和释放Worker容器。程序Master使用AMRMClient来与资源管理器进行通信。
应用程序Master使用NMClient API在容器(主节点传递过来的)中运行命令。
一旦应用Master启动了它需要的Worker容器,它设置一个端口来和应用Master进行通信。对于我们深度学习实现来说,我们新增了一些方法,它们需要为原始的IterativeReduce接口提供参数初始化、逐层训练和精确调整信号。IterativeReduce使用Apache Avro IPC来实现Master和Worker之间的通信。
下面的代码片段表明了一系列涉及Master-Worker节点的分布式训练,Master向worker发送初始参数,然后Worker在部分数据上训练它的RBM。在Worker完成训练之后,它将结果发送至Master,Master将会综合这些结果。迭代完成以后,Master通过启动反向广播精确调整相位来完成流程。
结果
我们评估了使用MNIST手写数字识别[3]来实现的深度学习的性能。数据集包含手工标记的0-9的数字。训练集由60000张图片组成,测试集包含了10000张图片。
为了测量性能,DBN首先被预训练,然后在60000张照片中被精确调整,通过以上的步骤,DBN会在10000张测试图片上进行评估。在训练或者评估期间,没有对图片进行预处理。出错率是由为分类的图片总数与测试集中的图片总数的比率而得到。
当在每个RBM使用500-500-2000的隐藏单元,同时使用十个节点的分布式设备的时候,我们能达到最佳的分类错误率1.66%。错误率可堪比原始算法的作者所报告的1.2%(使用500-500-2000的隐藏单元)[2],和类似设置下的一些结果[3]。我们注意到原始实现是在单个机器上的,而我们的实现是在分布式机器上的。参数平均的这一步导致性能略微降低,然而将算法分布在多台机器上是利大于弊的。下面的表格总结出了在十个节点的集群上运行的每个层的隐藏单元数对应的错误率的变化。
表1:MNIST性能评估
深入思考
我们成功地部署了一个深度学习系统,我们相信它在解决一些机器学习问题过程中很有用处。此外,迭代降低抽象可以被利用来分布任何其它合适的机器学习算法,能够利用通用的Hadoop集群将会被证明非常有利于在大数据集上运行大型机器学习算法。我们注意到,我们的当前框架需要一些改进,主要围绕减少网络延迟和更先进的资源管理。另外,我们需要优化DBN框架,这样可以减少内部节点之间的通信。随着对集群资源的精确调整控制,Hadoop YARN框架给我们提供了更多的灵活性。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
先回答:下半年能考的证书,大致分四类 2026年下半年仍有报名或考试安排的证书,主要集中在四个方向:财会金融类(如注册会计师 ...
2026-10-27毕业后该考什么证书,答案不是一张热门榜单,而是一个顺序问题:先确定你要投的岗位方向,再判断哪些证书现在就能报、哪些要等工 ...
2026-10-2734岁考证,和二十多岁刚毕业时不是同一道题。这个年龄找工作,招聘方通常已经默认你有十年上下的工作积累,会拿“经验能不能直接 ...
2026-10-27咨询岗位最该优先掌握的不是某个工具,而是四类能串起项目全流程的能力:问题定义与结构化拆解、指标与对比分析、数据获取与清洗 ...
2026-10-27多数咨询岗位需要一定程度的数据分析能力,但“需要”不等于“必须会写代码或建模型”。咨询顾问至少要能看懂客户给的数据、把业 ...
2026-10-27咨询岗位的分析能力,不是“会套框架”或“PPT写得漂亮”,而是一条从问题到结论的能力链:问题拆解—假设验证—信息获取—数据 ...
2026-10-27需要,而且它不是“加分项”,是日常工作的基本工具。直播运营每天要面对选品排期、流量承接、转化复盘和投流决策,这些任务的结 ...
2026-10-27证券分析师的培训需求,最好从“最终要交什么”往回推。日常输出大致四类:行业跟踪报告、财报拆解与盈利预测、估值模型、路演与 ...
2026-10-27先给答案:一张四层知识地图 如果只用一句话回答“证券分析师最重要的知识是什么”,答案是:以财务分析和估值建模为硬核,以行 ...
2026-10-27市场策划不是“会写文案、能办活动”这么简单。招聘方真正考察的,是你能否围绕一个业务目标,完成从调研、人群判断、创意主题、 ...
2026-10-27市场运营想靠学习推动职业发展,容易掉进两个坑:一是把课程清单当能力清单,学完不知道用在哪;二是只补营销方法,遇到渠道效果 ...
2026-10-27产品运营做久了,很容易陷入一种忙碌:活动一场接一场,功能推了一版又一版,日报周报天天写,但说不清自己到底积累了什么。想提 ...
2026-10-27运营岗的“快速提升”,不是把Excel、SQL、Python挨个学一遍,而是先补上能立刻改变工作产出的能力。判断标准很直接:同样一场活 ...
2026-10-27优秀市场专员的能力不是单点技能堆出来的,而是“用户洞察—内容与活动策划—渠道获客—数据复盘”四块形成闭环。想快速上手,正 ...
2026-10-27运营专员的“通用知识”,不是一份越长越好的工具清单,而是能支撑日常任务判断的一套底盘。不同细分方向差异很大:用户运营更关 ...
2026-10-27运营专员最常见的困境不是不忙,而是忙完之后说不清效果:活动做了、内容发了、社群拉了人,汇报时却只有“曝光多少、入群多少” ...
2026-10-27运营经理提升职业知识,靠的不是多报几门课,而是先有一张自己的“知识地图”,再按当前岗位最卡壳的环节排顺序。比较实用的做法 ...
2026-10-27运营岗位的能力素质提升,核心不是把工具学一遍,而是围绕“目标拆解—用户洞察—执行落地—数据复盘”四层能力逐层补齐。工具是 ...
2026-10-27运营岗位的能力提升,最容易走成两条弯路:一是把“提升”等同于学工具,Excel、SQL、Python挨个报班,回到工作里还是凭经验拍脑 ...
2026-10-27运营岗最容易陷入的学习误区,是把“提升”等同于收藏平台玩法、追热点模板、背活动话术。这些内容有用,但迁移性差:换个行业、 ...
2026-10-27