关 闭

新闻中心

EEPW首页>工控自动化>业界动态> 如何快速使用大规模机器学习的核心技术?

如何快速使用大规模机器学习的核心技术?

作者: 时间:2016-02-26 来源:TechWeb 收藏
编者按:这么多巨头将机器学习平台开源,作为开发者,我们再没理由不利用好,大规模机器学习是一柄利刃,但决不是万能的,对于大规模机器学习领域来说,业务技术的重要性胜过基础技术。

  具体来说,DMTK当前版本的工具包主要有以下几个部分:

本文引用地址://m.amcfsurvey.com/article/201602/287461.htm



  DMTK分布式机器学习框架

  主要由参数服务器和客户端软件开发包(SDK)两部分构成。

  1. 参数服务器。重新设计过的参数服务器在原有基础上从性能和功能上都得到了进一步提升——支持存储混合数据结构模型、接受并聚合工作节点服务器的数据模型更新、控制模型同步逻辑等。

  2. 客户端软件开发包(SDK)。包括网络层、交互层的一些东西,支持维护节点模型缓存(与全局模型服务器同步)、节点模型训练和模型通讯的流水线控制、以及片状调度大模型训练等。用户并不需要清楚地知道参数和服务器的对应关系,SDK会帮助用户自动将客户端的更新发送至对应的参数服务器端。

  通用分布式机器学习算法

  LightLDA:LightLDA是一种全新的用于训练主题模型的学习算法,是具有可扩展、快速、轻量级,计算复杂度与主题数目无关等特点的高效算法。在其分布式实现中,DMTK团队做了大量系统优化使得其能够在一个普通计算机集群上处理超大规模的数据和模型。例如,在一个由8台计算机组成的集群上,只需要一个星期左右的时间,可以在具有1千亿训练样本(token)的数据集上训练具有1千万词汇表和1百万个话题(topic)的LDA模型(约10万亿个参数)。这种规模的实验以往在数千台计算机的集群上也需要数以月计的时间才能得到相似结果。

  分布式词向量:词向量技术近来被普遍地应用于计算词汇的语义表示,它可以用作很多自然语言处理任务的词特征。微软为两种计算词向量的算法提供了高效的分步式实现:一种是标准的word2vec算法,另一种是可以对多义词计算多个词向量的新算法。

  词向量的作用是为了比较两个词之前的距离,基于这个距离来判断语义上更深的信息。以前的词向量模型以单词为维度建立,每个单词学出一组参数,每组参数即为词向量,每个单词通过映射至词向量上来进行语义上的表达。一个向量在语义空间中对应一个点。而一词多义的现象极为普遍,但如果多个意思在语义空间中只用一个点来表达就不太科学。如果我们希望学出多个语义空间中的点,在建立模型时就不会让每个单词只表达出一个向量,而是最开始时就让每个单词选择N个向量进行定义,而后置入概率混合模型。这个模型通过在学习过程中不断的优化,产生对每个单词多个向量的概率分布,结合语境对每个向量分配概率,从而学习更有意义的词向量表达。

  一词多义的学习框架和学习过程与一词一义并没什么不同,但它有更多的参数,并且需要在学习过程中分配多个向量各自对应的概率,因此复杂度更高。由于整个过程通过多机进行并行,因此还是能够保证以足够快的速度完成训练。比如在对某网页数据集(约1千亿单词)进行训练时,8台机器大概40个小时内就可以完成模型训练。

  DMTK提供了丰富的API接口给研发人员。大数据接口主要集中在并行框架这部分,来解决很多机器一起学习时,单机的客户端如何调用参数服务器的问题。

  王太峰为我们列举了DMTK中对于不同需求的开发者设计的API:

  保持原有机器学习算法流程:这类开发人员最需要的API就是同步参数,依照自己原有的算法进行训练,只在需要多机之间交互时利用DMTK的API来获取模型参数(GET)和发送更新(ADD)。通常这类开发需要花的精力比较少。 从头设计算法:这类开发人员不需要设计完整算法流程,只需按照DMTK中对数据块描述,接口会告诉DMTK每条数据需要什么参数,如何利用数据进行参数更新。DMTK客户端SDK会自动启动内置的学习流程,进行逐条数据的训练,并在必要的时候进行模型交互。

  目前DMTK在GitHub上有1400多颗星,在分布式机器学习的框架上来说排名是非常靠前的。用户也反馈了很多对代码修复的意见、和对增加一些额外功能需求的建议。

  DMTK并非完整的开箱即用解决方案,其中分布式的算法,如LightLDA,WordEmbedding可以为很多用户直接所用。同时,DMTK在设计上允许用户进行后续扩展,使其能够支持更多的算法和平台。王太峰还透露,目前DMTK还是利用现有的文档系统(Filesystem),直接将数据分布在里面,各个机器处理本地硬盘上的数据。在此基础上,DMTK正逐渐增加对Hadoop的一些支持,如利用HDFS去读数据,帮助用户调度作业等。

  后记

  就在不久前,微软公司还发布了另一套机器学习工具包,即计算网络工具包(Computational Network Toolkit)——或者简称CNTK。另外,谷歌开源人工智能系统TensorFlow,IBM开源机器学习平台SystemML。这对广大开发者和创业公司来说,无疑在很大程度上简化基础技术的投入和难度。


上一页 1 2 下一页

关键词:机器人

评论


相关推荐

技术专区

关闭