如何快速使用大规模机器学习的核心技术?
过去两年,机器学习书写了一卷强大的成长史,无论你是否真的觉察,它都是如此直接且普遍地在我们的生活中体现价值:客服机器人、垃圾邮件过滤、人脸识别、语音识别、个性化推荐……机器学习和人的洞察力这对组合正逐渐渗透到各行各业,使我们在面对这些冷冰冰的现代设备时,享受到灵活、智能、且越来越富人情味儿的服务。
本文引用地址://m.amcfsurvey.com/article/201602/287461.htm![](http://m.amcfsurvey.com/editerupload/201602/e1e65f461e8dc9d0d1658056a9c71a7a.jpeg)
的确,神经网络、人工智能和机器学习没什么新颖的,这些算法早在几十年前就存在。但为什么这瓶老酒直到最近,才发酵出势不可挡的香气呢?数十亿用户每天行走于互联网中,面对这巨大的行为数据体量,传统统计分析方法已经无力招架。围绕着数据和工具发生的变化,可扩展的计算能力在急剧上升,这些都推动着机器学习以前所未有的方式大步向前。
除此之外,面向机器学习的可用框架也迎来了爆发式增长。巨头们纷纷将最为复杂的技术从机器学习中抽象出来,开源给开发者和学术研究人员,在帮助更多人的同时,使自身技术方案不断得到完善和进步。微软也如是。
去年11月,微软亚洲研究院将分布式机器学习工具包(DMTK)通过GitHub开源。随着某些应用场景下数据量越来越大,分布式机器学习技术的重要性日益显现。但将大量设备汇聚起来并开发出能够顺利跨越各设备运行的机器学习应用绝非易事。大规模机器学习技术的挑战在哪里?优势又是什么?对于开发者,怎样结合实际业务需求更好地使用DMTK?带着这些问题,51CTO记者走进微软亚洲研究院向DMTK团队研究员——微软亚洲研究院主管研究员王太峰抛出了我们的疑问。
![](http://m.amcfsurvey.com/editerupload/201602/d543e5e5abb3ca61842da7216086aea3.jpeg)
微软亚洲研究院主管研究员 王太峰
DMTK是什么
王太峰介绍,DMTK由一个服务于分布式机器学习的框架和一组分布式机器学习算法构成,是一个将机器学习算法应用在大数据上的工具包。DMTK目前聚焦于解决Offline-training的并行化。除了分布式学习框架,它还包括了主题模型和词向量学习的算法,这些算法可以应用于自然语言处理方面,比如文本分类与聚类、话题识别以及情感分析等。为了适应不同的集群环境,DMTK框架支持两种进程间的通信机制:MPI和ZMQ。应用程序端不需要修改任何代码就能够在这两种方式之间切换。DMTK支持Windows和Linux两种操作系统。目前主要支持C和C++,之后会考虑到一些高级语言的升级,比如Python。
在实现算法的过程中DMTK团队看到,用一个框架来将这些算法很容易地并行到大量机器上来解决大规模机器学习问题,是非常必要的。因此,微软将DMTK框架和几个例子开源出来,一方面与开发者和学术研究人员共同分享技术,另一方面希望通过大家贡献改进意见,并将更多的算法添加到这套框架中来。
如何应对大规模机器学习的挑战
在被问及DMTK如何解决大规模机器学习的挑战时,王太峰主要从如何处理大规模数据和训练大规模模型两方面做了回答。
1. 大规模数据:基于DMTK我们可以利用多个机器一同完成处理,每个机器处理一部分数据。在多个机器中同时存在多个参数的副本,它们独立基于本地数据产生对参数的更新,并在参数服务器端进行参数更新的合并。通过这种数据并行的方式,利用多个机器同时处理大规模的数据,大大加速了学习过程。即使是每台机器处理相对小的数据分块,但是有时候模型参数非常多,以至于基于全部参数在内存中更新的算法变得不可行。
2. 大规模模型:在大规模模型中,学习参数在单个机器中装不下。就这个问题,DMTK可以从两个方面解决,首先DMTK框架中的参数服务器本身即为分布式,所以可利用很多机器分布式存储模型。其次,在单个机器进行本地学习的过程中,通过设计精巧的分段学习方法,使得参数更新分批次完成。即使模型再大,也能保证本地参数学习顺利完成。
评论