让我们一起来学习CNTK吧

2014年,在微软研究院,黄学东博士和他的团队正在致力于对计算机能够理解语音的能力进行更快的改进,但当时使用的工具显然拖慢了他们的进度。于是,一组由志愿者组成的开发团队构想设计了他们自己的解决方案,他们的内部工具成为了目前广为认知的认知工具集(CNTK)的基础。2015年8月,微软公司在CodePlex上宣布了CNTK将开源。5个月后,2016年1月25日,微软公司在他们的GitHub仓库上宣布开源了由微软研究院开发的计算网络工具集CNTK……

本文最后更新于:2017年11月06日,最近一次更新包含了语法修复,以及较小的错误修复和改进。

大家好,我是本专栏的作者王万霖。微软认知工具集(Microsoft Cognitive Toolkit,CNTK),自从2016年1月微软公司在GitHub上开源自家的认知工具集CNTK之后,在这一年多的时间里,经过开发者和开源社区的不断努力,已经取得了巨大的进步:从支持C#/.NET语言接口、通用Windows平台(UWP),到发布了工具集的2.2版本……CNTK工具正在在社区的推动下快速地发展着。

CNTK是什么

根据微软官方的介绍,CNTK 是一个统一的计算网络框架,它将深层神经网络描述为一系列通过有向图的计算步骤。在有向图中,每个节点代表一个输入值或一个网络参数,每个边表示在其中的一个矩阵运算。CNTK 提供了实现前向计算和梯度计算的算法。CNTK中预定义了很多主流的计算网络结构,用户可以轻松地在开源许可证下扩展节点类型。社区可以利用它来更方便地来推进关于人工智能的研究。

CNTK拥有高度优化的内建模型,以及有着良好的多GPU支持,相信已经有不少同学已经使用或者有意向使用CNTK进行机器认知方面的开发了,同时有很多同学已经在他们的博客或者网站分享了他们使用CNTK的经历。


微软官方公布的,CNTK与其他工具集相比执行特定任务的效率对比。可以看到,在同样4GPU的配置下,针对特定的学习任务,CNTK有速度上的优势

CNTK目前的情况

自 CNTK 的首次亮相以来,针对CNTK的开发已大大提高了微软内部实验室的机器学习效率。通过CNTK和Azure GPU实验室的结合,让微软公司能够建立和训练针对深神经网络的Cortana语音识别任务,而且比他们以前的深学习系统快10倍。CNTK 同样可以用来执行其他任务,如ImageNet 分类和深层结构化语义模型。微软公司表示,希望社区能够充分利用 CNTK 的优势,通过和开源社区的交流和代码分享,更快地分享彼此的想法。

在计算性能和灵活性之间有许多设计考虑因素,每个工具包都有其独特的优点。TensorFlow 提供了一个用户友好且易于使用的Python接口;Theano 由其代表性的操作深入人心;Torch使用 Lua 编程语言;Caffe其高效的性能而受到计算机视觉研究者的青睐;而CNTK在自家的Azure GPU实验室中表现出了最高效的分布式计算性能。

在必应搜索引擎关于一些机器学习框架的搜索结果

从另一方面看到,由于CNTK在最近几年才被推出,在网上有关于CNTK的资料还是很有限的,并且很多新的资料均为英文版。我们缺乏本土的,有关CNTK框架的教学内容。在搜索引擎进行相关的搜索,排名靠前的结果均是介绍使用BrainScript来使用CNTK框架的文章。

相比BrainScript的编写,使用Python进行机器认知、机器学习相关的开发更加普遍且易于交流。本专栏希望能够通过更多的文章和优质资料,让大家更好地了解CNTK框架及其应用。欢迎大家多多关注,欢迎有兴趣的同学一起投入到写作中来。

未来的写作方向

截止到2017年11月,本专栏以翻译官方的CNTK入门(指引)文章为主。

在未来的更多时间里,我们将有兴趣针对CNTK的内部实现,以及它的相关应用进行更深入的探讨。

参考资料:

编辑于 2017-11-06

文章被以下专栏收录

    CNTK 是一个统一的计算网络框架,它将深层神经网络描述为一系列通过有向图的计算步骤。在有向图中,每个节点代表一个输入值或一个网络参数,每个边表示在其中的一个矩阵运算。CNTK 提供了实现前向计算和梯度计算的算法。CNTK中预定义了很多主流的计算网络结构,用户可以轻松地在开源许可证下扩展节点类型。社区可以利用它来更方便地来推进关于人工智能的研究。