雷锋网[AI科技评论]按:本文由雷锋网编辑根据刘铁岩博士在中国人工智能学会AIDL第二期人工智能前沿讲习班*机器学习前沿所作报告《迎接深度学习的“大”挑战》编辑整理而来,发文前已得到刘铁岩博士的亲自删减校正。

微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第1张

刘铁岩

刘铁岩博士,微软亚洲研究院首席研究员,领导机器学习和人工智能方向的研究工作。同时他也是美国卡内基-梅隆大学(CMU)客座教授、英国诺丁汉大学荣誉教授、中国科技大学、中山大学、南开大学的博士生导师。刘博士的的先锋性工作促进了机器学习与信息检索之间的融合,被国际学术界公认为“排序学习”领域的代表人物,他在该领域的学术论文已被引用近万次,并受Springer出版社之邀撰写了该领域的首部学术专著(并成为Springer计算机领域华人作者十大畅销书之一)。近年来,刘博士在博弈机器学习、深度学习、分布式机器学习等方面也颇有建树,他的研究工作多次获得最佳论文奖、最高引用论文奖、研究突破奖;被广泛应用在微软的产品和在线服务中、并通过微软认知工具包(CNTK)、微软分布式机器学习工具包(DMTK)、微软图引擎(Graph Engine)等项目开源。他曾受邀担任了包括SIGIR、WWW、KDD、ICML、NIPS、AAAI、ACL在内的顶级国际会议的组委会主席、程序委员会主席、或领域主席;以及包括ACM TOIS、ACM TWEB、Neurocomputing在内的国际期刊副主编。他是国际电子电气工程师学会(IEEE)院士,美国计算机学会(ACM)杰出会员,中国计算机学会(CCF)学术工委,中文信息学会(CIPS)信息检索专委会副主任。

以下为刘铁岩博士所做的现场演讲的第一部分,主要介绍了近年人工智能所取得的应用成果;什么是深度神经网络以及它所带来的挑战等问题。

刘铁岩:非常荣幸今天有机会和大家分享我们的研究成果。我知道这几天课程安排得特别满,一天四场报告,大家有点废寝忘食的感觉,非常辛苦。希望大家听了我们的报告,能够有所收获。

今天我们跟大家分享的题目是:“迎接深度学习的大挑战”。

微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第2张

为什么要讲这个题目呢?深度学习这几年改变了很多行业的状态,今天上午张老师应该也讲了很多关于神经网络的话题,包括怎么学习深度神经网络的结构。今天我会从另一个角度看一看深度学习到底有哪些挑战,这些挑战怎么用学术研究的方式加以解决。

微软亚洲研究院介绍

在此之前,我准备了两张PPT,介绍一下微软亚洲研究院。

微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第3张

微软亚洲研究院成立于1998年,有200多名全职的研究人员,和来自于各大高校的实习生。微软亚洲研究院虽然隶属于公司,但是日常运营的形式很像大学,有很多非常有水平的研究员做导师,有非常高质量的学生跟我们做研究。我本人在微软亚洲研究院负责人工智能和机器学习的领域,我们有十几位全职的研究人员从事这方面的研究,如果大家对我们组感兴趣或者想进行合作,欢迎和我联系。

微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第4张

我们组的研究方向很宽,包括排序学习、大规模机器学习、深度学习、增强学习、机器学习理论等等。除了发表了百余篇论文,被引用万余次以外,我们还致力于把研究成果分享给同仁,所以在过去几年间我们主导、或者参与了多个开源项目,比如微软认知工具包(CNTK),微软分布式机器学习工具包(DMTK)、微软图引擎(Graph Engine) 等等。如果大家对我们的最新动态感兴趣,关注我们的公众号、微博,了解很多新鲜出炉的微软亚洲研究院的故事。

微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第5张

近年来人工智能所取得的应用成果

接下来我们进入今天报告的正题。

微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第6张

我们这次整个AIDL都是关于人工智能和机器学习的,类似的PPT应该已经出现了很多次,所以关于什么是人工智能,人工智能曾经走过什么道路,这里我不想再重复。总之,人工智能在过去的60年里,几起几落,每一次所谓的人工智能寒冬多半都是因为公众和政府对人工智能的期望值太高。因此,作为人工智能行业的参与者,我们有必要提醒公众、提醒政府、提醒产业,对于人工智能技术保持冷静,不要把它过早捧杀。

微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第7张

不过话说回来,回顾过去的十几年,人工智能确实取得了一些前所未有的成果。接下来我们就来看几个例子。深度学习的成功最早是在类似语音图像这些领域取得的。

首先,语音识别,因为有了大量的训练数据,有了DeepLearning的方案,逐步达到了人类的精度。这张PPT展示的是去年10月份我们微软研究院对外宣布的一个语音识别方面的突破性进展。

微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第8张

这是历史上第一次,机器达到了和人没有区别的程度,在个人对话的场景下,取得了非常低的错误率(5.9%)。这个模型是用微软认知工具包(CNTK)训练出来的,大家如果对语音的研究有兴趣,可以试用一下CNTK,它是语音识别领域被最广泛使用的深度学习工具包。

其次,图像方面最近也取得了很大的进展、2015年,来自我们微软亚洲研究院的ResNet技术,在ImageNet competition里取得了冠军,并且超过了人类的识别精度。像ImageNet这样包含上千个类别的图像数据,识别起来其实还是有难度的。即便是人,看一眼也不一定都能分辨出来。

有研究表明,人类的错误率大约是5.1%,而ResNet达到了将近3.5%的错误率。也就是说对于特定领域、特定类别的问题,机器已经超过了人的图像识别能力。这个成功后来又延续到了图像分割领域,图像分割是比图像识别更复杂的任务,不仅要告诉大家这张图像有什么,还要把它圈出来、把边界找到。2016年微软亚洲研究院的技术再次在这个更难的任务上力拔头筹、获得冠军。

微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第9张

上面提到的人工智能技术大多已经被微软产业化,下面给大家放一个视频,是介绍微软认知服务的,之前网上几个很出名的爆款应用,比如How old测颜龄,都是基于微软认知服务开发出来的。

视频中展示场景,包括了前面提到的语音识别、图像识别、文字识别等等。有了微软认知服务,大家如果想做一个创新应用,就不需要对深度学习有非常深的了解,不需要在云上构架一个庞大的服务器集群来训练模型,只要调用一下认知服务的API,就可以实现很多神奇的功能。

除了前面提到的语音和图像以外,在文本理解、机器翻译等方面,人工智能技术最近也取得了很大的进展。

微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第10张

微软有很多与此相关的产品,比如Skype translator、Microsoft translator,可以同时支持多人、多点语音、多语言的实时同声传译。接下来给大家展示的视频是关于Skype translator的,讲的是一个外国摄影师和他的中国向导之间的故事。

其实这项技术早在2012年微软亚洲研究院主办的“21世纪计算大会”上就被展示过。当时我们的研究副总裁Rick Rashid用英文做了一个主题演讲,大家听到的是机器自动同声传译出来的中文表达,听起来就像他真的会讲中文一样。

除了上述认知方面的进展,最近人工智能在博弈方面也取得了很大的进步。比如用人工智能来打电子游戏,用人工智能来下围棋等等。当年AlphaGo战胜李世乭的时候街头巷尾都在讨论。而今master横扫几十位人类高手,又掀起了大家对人工智能的新认识。

微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第11张

左边这张图是关于用人工智能技术来玩Atarti game的。当使用强化学习技术不断地尝试玩这个游戏,一开始机器只会学到一些基本技能,玩着玩着逐渐发现一些高级的策略,甚至获取了超过常人的技巧,比如把小球打到砖块上面去,通过不断回弹实现得分。

右边这张图是关于围棋的。围棋本身的策略空间非常大,每落一子,棋盘上都有很多不同的选择,如果再考虑到后手,则对应于一个非常庞大的搜索树。对这个搜索树进行遍历是远远超过目前计算机的计算能力的,所以大家曾一度认为在围棋这件事情上机器很难战胜人类。但是,最新的人工智能技术巧妙地回避了遍历,像人一样使用了value network来对搜索树进行有效的剪枝,从而在以高概率保留好棋的前提下,把计算的复杂度降低到计算机可以承受的范围内,并且最终战胜了人类的世界冠军。

深度学习技术

前面回顾的所有这些人工智能领域的大事件,背后都离不开“深度学习”技术。

深度神经网络及其优化方法简介

微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第12张

那么什么是深度学习呢?虽然早期大家提DeepLearning这个概念的时候,会联想到很多不同的模型,但是经过多年的演化,目前最主流的深度学习模型就是所谓的深层神经网络。深层神经网络指的是一个有至少包含两个隐层的神经网络。很多实用的深层神经网络甚至会包含成百上千个隐层。

简单起见,我们先举一个有三个隐层的深层神经网络作为例子。从图中可以看到,神经网络包含很多神经元,以及它们之间的拓扑连接。每个神经元做的事情非常简单,就是把上一层所有跟它相连的神经元的输出放在一起,做加权求和,然后再进行非线性变换(激活函数)。在神经元,以及神经元之间的连边上都可以有参数,比如边权和偏差等。

微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第13张

那么有了深层神经网络以后,怎么对它进行学习呢?常用的方法叫做经验风险最小化,也就是最小化神经网络在训练集里所有样本上的损失函数之和。为了最小化经验风险,一个最简单的方法是梯度下降法。但是,我们知道梯度下降法很容易陷入局部极小点,而且它的随机版本可能不收敛,需要通过减小学习率来控制训练过程的收敛性。为了解决这些问题,人们又提出了很多变种的优化算法,比如SVRG等等。

微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第14张

两种特殊的深度神经网络

了解了什么是深度神经网络,以及如何对其进行优化,我们来介绍两种特殊的深层神经网络。

首先是卷积神经网络,之所以称其为卷积神经网络,是因为它的一些基本单元非常像信号处理里的卷积操作。其实,卷积神经网络的提出,也有很多仿生学的背景在里面。咱们回想一下自己做图像识别的过程:

如果给你一幅很大的图片,要在里面识别出某个特定的人,比如张三。假定我们的脑子里有张三的形象,但是不知道他到底在图片的哪个部位,我们会怎么做呢?一个很简单的方式就是从这张图像左上角开始扫描,每次扫描都用我们脑子里的模式去匹配一下看有没有张三,没有的话往后移动一个位置,再进行下一次扫描。整个图像扫描过程中,我们对张三识别的模式是没有改变的,参数是固定的,只是在空间不断平移,这其实是所谓卷积神经网络最基本的思想。

具体来讲,卷积神经网络有三个特点:

    一是使用卷积滤波器;

    二是参数共享;

    三是通过pooling操作实现平移不变性。

    微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第15张

    微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第16张

    如果我们把卷积操作和Pooling操作级联在一起,不断循环往复地构建网络结构,这就会形成深层的卷积神经网络。给大家看一个例子,LeNet,它在输入图像的基础上,进行了多次卷积和pooling操作,最后在实现有效的信息抽取之后,使用全连接的网络对这些信息进行最终的分类。

    微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第17张

    第二个特殊的深层神经网络叫做循环神经网络。它的提出也和仿生学有关。咱们想一下自己是如何读书看报的。我们一般是从每段文字的第一个字开始,一边往后看,脑子里一边利用之前看过的内容的记忆,对当前看到的文字进行理解。如此循环往复,最后把整个段落的意义全都弄清楚。循环神经网络也做了同样的事情,它在标准神经网络的基础上引用了一个memory unit,用来存储和之前输入有关的信息,以帮助我们更好地理解未来的输入。

    微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第18张

    为了更形象地理解循环神经网络,我们把它展开来看。展开之后这些输入就带有时间标签了,比如说这个是你看到的第一个词X0,接下来看到第二个词X1,不断的往下移动。每次看到一个新输入之后,就会对它做某种处理,产生一些对它的认识,并且放到memory里,当看到下一个词的时候,不仅仅针对这个词本身进行理解,还会参照上一个词对应的memory;这样不断地循环下去,就得到了所谓的循环神经网络。循环神经网络和卷积神经网络有点类似,也会在不同阶段共享参数。

    理论上,循环神经网络可以展开成无限深的网络,但是这会带来学习的麻烦。实践中,我们通常进行有限深度的展开,也就是所谓的BPTT技术。展开之后就可以把它当成标准的神经网络用梯度下降的方法来进行参数学习了。

    微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第19张

    深度神经网络所带来的挑战

    到此为止,我们做了一个快速的神经网络简介:我们介绍了什么是神经网络,两个特殊的网络结构,以及如何学习它们的参数。不管是全连接的网络、卷积网络还是循环网络,实际中常常会用到很深的层次,比如成百上千层,那么当深度增加的时候,有什么好处,又是否会带来一些新的挑战呢?

    前面我们提到过神经网络的universal approximation theorem, 它似乎告诉我们只要有一个隐层,神经网络已经可以具备几乎无限的表达能力了。那为什么还要使用那么多的隐层呢?近几年有很多的理论研究表明,当层数增加时,想要取得同样的表达能力,对隐节点总数的要求会变小很多,因此也就会带来更高的学习效率和更小的学习难度。

    反过来看,当隐节点的个数相同的时候,深层网络的表达能力会比浅层网络更强,因此学习能力也就更强。当然,天下没有免费的午餐,深层网络的好处是有代价的,当网络很深的时候,用梯度下降来进行学习时,常常会遇到一些技术难题。接下来这张PPT就展示了两个常见的麻烦。

    微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第20张

      第一个麻烦是Overfitting,它和表达能力是一体两面。当你的网络有非常强的表达能力的时候,就更容易过拟合训练数据,而在未见的测试数据上表现变差。

      第二个麻烦叫Gradient vanishing,当网络很深的时候,预测误差很难通过梯度有效地传导到网络的底层,从而使得网络参数训练不充分。

      为了更好地解释这种现象,我给大家举一个例子。这是一个细长型的深度神经网络。网络参数包括边权w和偏差b。我们以b1这个参数为例,损失函数对它求导的结果如图所示。在这个连乘式里,sigma‘是激活函数的导数,每经过一个隐层,就会出现一项sigma‘。

      这里画了一个常见的sigmoidfunction的导数,它的最高点是在输入为0的时候取得的,最高点取值是0.25,如果你的输入不是0,其取值会更小。大家知道,当我们把一长串很小的数连乘起来,它的结果会很快衰减到接近0,而在当前的参数上加上一个几乎为0 的梯度,对模型是不会有什么改变的,这就解释了为什么深层网络经常训练不充分。

      微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第21张

      为了解决这两个典型的麻烦,人们提出了一系列的技术手段。比如:

      DropOut/DropConnect,其基本思想是在训练过程中引入一些随机因素,让神经网络模型不会那么狠地拟合到训练集上去。为此,可以在训练过程中随机删除一些神经元节点,或者随机删除一些连边。有人证明了,通过DropOut,可以有效降低神经网络的容量(Rademacher Average),从而避免过拟合,取得更好的泛化能力。

      微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第22张

      微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第23张

      另外一个技术是Batch Normalization,也可以有效缓解overfitting和Gradient vanishing的问题。它其实是受到早期人们对神经网络的输入进行白化处理的启发。不同点在于它对深层神经网络的每一层都进行白化处理,而且是参数化的白化。也就是在一个mini batch里计算均值和方差,然后对信号进行0均值、标准方差的变换。这样做的好处是可以去除不同mini batch之间的差异,使得数据变得更加统一,提高泛化性能;同时,由于激活函数的输入被0均值化,也会提高其导数的幅度,从某种程度上减缓gradient vanishing的问题。

      微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(上) AI资讯 第24张

      本文为刘铁岩博士《迎接深度学习的“大”挑战》主题报告(上),后续报告敬请持续关注雷锋网(公众号:雷锋网)[AI科技评论]的报道。

      雷锋网原创文章,未经授权禁止转载。详情见