分享到微博 分享到人人 分享到LinkedIn 分享到Email
【开源】微软发布认知工具包:让机器学习更快、更大、更强

10月26日,微软发布了更新版的微软认知工具包(Microsoft Cognitive Toolkit,曾用名为深度学习工具包CNTK,Computational Network Toolkit)。这是一个用于深度学习的系统,能够基于CPU 和 英伟达GPU加速例如图像识别、语音识别、搜索等相关领域的进步。

如果你现在还没有打开过微软认知工具包(Microsoft Cognitive Toolkit)的页面,你肯定不是一个合格的深度学习开发者。:D(项目地址:https://github.com/microsoft/cntk更新注释:https://github.com/Microsoft/CNTK/wiki/CNTK_2_0_beta_1_Release_Notes)上周(10月18日),微软首席语音学家黄学东博士带领下的团队在对话语音识别技术在产业标准Switchboard语音识别基准测试刷新自己的纪录,词错率低至5.9%,达到了人类最专业的水平,并保持着业内最优水平。当时,黄学东博士在接受采访时表示,这一成就在很大程度上要归功于CNTK这个工具,它极大地提高了团队的研究速度,最终实现了与人类专业能力看齐的目标。事实上,包括微软人工智能助理小娜(Cortana)和混合现实全息眼镜HoloLens的等微软重磅产品中的语音识别功能也都是基于CNTK来实现的,可以说CNTK是微软的秘密武器,而CNTK的开源也是希望更多的开发者们能够基于它轻松开发出各种有趣的人工智能应用。

此次更新版具有更强的性能表现和学习能力。黄学东博士为我们总结了该版本的三个主要特点:

  1. 这是当前最快的分布式深度学习工具包
  2. 能处理大规模的、可投入应用的任务,例如小娜语音与微软认知服务
  3. 结合了1.x版本用户的反馈,在C++之外新增了Python。

跨平台的高效工作能力可以说是微软认知工具包的关键优势,这也是加速研究突破的关键因素。从6.3%到5.9%的语音识别词错率的突破,黄学东博士团队只用了一个多月的时间。而在此前,语音识别每0.1%的突破都是基于这个领域的学者们长达数月的积累和尝试才能实现的。该工具包在针对需要跨多台机器运行大数据集时表现极佳。当然了,为开发消费者产品和专业产品,这种大规模部署对跨多个 GPU 的深度学习来说是必需的。此外,此工具包还支持强化学习(reinforcement learning)的使用。

“使用微软认知工具包的一个关键理由是其可以针对大型数据集跨多 GPU 和多机器进行有效地扩展,”微软合作伙伴工程经理 Chris Basoglu表示。

让机器学习更快、更大、更强

在微软,一个拥有超过5,000名计算机科学家和工程师的人工智能与研究(Artificial Intelligence and Research)部门正致力于让人工智能普及至每一个人的日常生活中,改善人们的计算体验。而位于北京的微软亚洲研究院的研究团队作为该部门的重要组成部分,则承担了人工智能基础研究的使命。他们也为此次微软认知工具包的更新贡献了诸多创新成果。

残差网络(ResNet):训练更深的网络模型

去年,微软亚洲研究院的一组研究员在ImageNet图像识别挑战赛中凭借惊人的152层深层残差网络(deep residual networks),以绝对优势获得图像分类、图像定位以及图像检测全部三个主要项目的冠军。相关的工作论文也在CVPR(计算机视觉领域的顶级会议) 2016 上获得了最佳论文奖。研究员们在论文中分享了他们的工作成果之后,学术界和工业界对这一创新工作的基础上进行了多种尝试。

现在,微软亚洲研究院网络图形组也为微软认知工具包改进了残差网络(ResNet)的实现,提高了准确率。此外,他们还对单个节点上的内存问题进行了优化,这意味着微软认知工具包也能训练出百层以上的ResNet,也可以帮助语音识别等领域训练更大的模型。

BMUF:解决并行训练困境

今年三月,微软亚洲研究院语音组在ICASSP 2016 大会上提交的论文Scalable Training of Deep Learning Machines by Incremental Block Training with Intra-Block Parallel Optimization and Blockwise Model-Update Filtering首次较好地解决了大数据机器学习并行训练中经典的两难问题,在保证训练模型的性能的同时,让训练速度在增加GPU的条件下几乎实现了线性增长,这一突破对大数据机器学习的效率提升意义重大。该论文一经发布便引起轰动,目前,有很多厂商已经将BMUF(Blockwise Model-Update Filtering)融入了他们大规模并行机器学习的实际应用中。

除上述内容以外,微软认知工具包与微软亚洲研究院机器学习组还有着许多更深入的合作。例如在未来几天微软认知工具包还将开放的Multiverso等等。Multiverso是一个基于参数服务器的框架,用于训练大数据与机器数量的机器学习模型。 在这样的框架下能够实现高效的异步多机训练,在机器集群规模比较大或者集群中各个机器的性能有差异是能够保持很高的并行效率。并且Multiverso提供了灵活接口来实现各种同步异步的多机算法,让分布式机器学习的研究人员能够很容易地进行分布式机器学习的创新性实验。更多相关内容,将由微软亚洲研究院机器学习组的研究员于11月30日至12月2日在北京召开的微软技术大会(Microsoft Ignite China)上为大家进行讲解。

人人可用的人工智能

从广义上说,机器学习是一种需要用到大量数据(被称为训练集)的人工智能技术,从而能教会计算机系统学会识别图像或声音等输入中的模式。

比如说,可以用一个包含了各种水果和蔬菜图片的训练集来训练一个深度学习系统,之后该系统能学会自己识别水果或蔬菜的图片。它获得的数据越多,它的表现就会越好;所以每次当它遇到一个新的、长相奇怪的茄子或扭曲的苹果时,它都可以调整自己的算法以使其变得更为准确。

这类的成果不只是研究的里程碑。由于机器学习的进步,加上计算马力的大幅度增长,我们如今有了像微软实时语音翻译Skype Translator 这样面向普通大众的产品,还有像微软小娜(Cortana)这样能够听懂你所说的、并帮助你完成一些订机票和设定备忘录等任务的人工智能个人助手。

如今,无论是科技巨头还是小型初创企业都看到了机器学习背后的种种可能性。微软更新这款认知工具包正是为了让更多的开发者不再拘泥于诸多限制,从而把精力发挥到自己天马行空的创意上,让开发者们有机会轻松开发出各种人工智能的有趣应用。

随着微软认知工具包(前称CNTK)变得越来越流行,微软听取了更多的来自开发者们的需求。例如许多开发者不能或不想写大量代码,于是微软创造出一个自定义系统,能让开发者更简单的配置深度学习系统而不需要额外的代码。又例如开发者想将自己的 Python 或 C++ 代码与该工具箱的深度学习能力结合起来,或是一些研究人员想要使用该工具包进行强化学习研究——这类研究可能最终引向真正的人工智能,也就是系统能够自己做复杂的决策——在今天这最新版本的微软认知工具包中,你能看到这些来自开发者的声音都一一得到反馈。

最初,微软认知工具包是由一群做语音的研究者们推出的,主要目的是为解决自己在研究中遇到的问题,但如今,你可以看到它被用于各种不同的使用场景中,成为普及人工智能的工具和例证。