刘铁岩:人工智能的挑战与机遇|对偶学习推动人工智能的新浪潮
本文转自:战略技术前沿
近日,四位来自微软亚洲研究院的AI大咖在中国科技大学进行了一场以“开启智能计算的研究之门”为主题的前沿分享。
今天,我们与大家分享的是刘铁岩博士的演讲—— 人工智能 的挑战与机遇,全文如下(文字内容略有精简)。
今天我要讲的内容主要是一些对人工智能这个领域的看法。说到智能计算,我们就不能不提人工智能,人工智能从 1956 年的达特茅斯会议开始,到现在 61 年的历史,发展过程中风风雨雨,可以看到几起几落,至少我们经历过两个所谓人工智能的冬天。
每一次人工智能的崛起都是因为某种先进的技术发明,而每一次人工智能遇到了它的瓶颈,也都是因为人们对于人工智能技术的期望太高,超出了它技术能达到的水准。所以政府、基金会等撤资,导致了研究人员没有足够的资金去从事研究。
那么今天我们处在一个什么阶段呢?有人说现在是人工智能的春天,有人说是夏天,还有人悲观一点,说是秋天,秋天的意思就是冬天马上就来了。作为人工智能的学者,我们该怎么看待这件事情,我们能做些什么?不管大家怎么预测,至少今天还是一个人工智能的黄金时代。
为什么这么讲呢?接下来先给大家展示一些最近人工智能取得的成果,确实是之前十几年我们完全想不到的。
首先,我们讲人工智能在语音方面的突破,人工智能在语音识别、语音合成上面最近都取得了非常瞩目的结果。2016 年 10 月份由微软研究院发布的一个语音识别的最新结果实现了错误率为 5.9% 的新突破,这是第一次用人工智能技术取得了跟人类似的语音识别的错误率。
其次,在图像方面,人工智能也有很多长足的进步,比如图像识别的 ImageNet 比赛,用计算机去识别数据集中 1000 个类别的图像。在 2015 年,来自微软亚洲研究院的技术 —— ResNet,获得了 2015 年 ImageNet 的冠军,错误率是 3.5%,而人的错误率大概是 5.1%。所以可看出在特定领域、特定类别下,其实计算机在图像识别上的能力已经超过了人的水平。2016 年我们微软亚洲研究院再接再励,在比图像识别更难的一个任务 —— 物体分割上面取得了冠军。
除了语音和图像以外,其实人工智能在自然语言上面也取得了很大的进展。左边这张图描述了各大公司都在不断地提高各自语音机器翻译的水准和技术,右边这张图展示的是去年 12 月微软发布了 Microsoft Translator 的一个新功能,它支持 50 多种语言,可以实现多个人多种语言的实时翻译,比如大家每个人可能来自不同的国家,只要拿着手机用这个 APP 我们就可以互相交流。你说一句话或者输入文字,对方听到/看到的就是他的母语。
前面说的这些语音、图像、语言,听起来还都是一些感知方面的东西。大家也知道,最近这段时间,人工智能在一些传统我们认为可能很难由机器来取得成功的领域也获得了突破。比如左边这张图描述的是用人工智能技术来打游戏,大家可以看到这个敲砖块的游戏,在 120 分钟训练的时候,人工智能就找到了很有效的得分的途径。当我们继续去训练这个人工智能的机器人,到了 240 分钟以后,它又达到了那种所谓骨灰级玩家的水准,它发现了一些平时我们自己都玩不出来的窍门。
右边展示的是围棋比赛,大家都知道 AlphaGo 非常火,使用了深度增强学习的技术,经过了非常长的训练时间,引用了大量数据做 self-play,最终是以压倒性的优势,4:1 战胜了当时的世界冠军李世石。在去年的 IJCAI 上面,AlphaGo 主要的开发人员做了一个 keynote,说自战胜了李世石之后,AlphaGo 并没有停下脚步,因为它是一个 self-play 的 process,可以继续训练,只要给它足够的运算时间和样例,它就可以不断地去训练。所以也能理解为什么今年年初 Master 重新回到大家视野里,可以对围棋高手 60 连胜,因为这个差距太大了。
这些事情都是以前人们觉得人工智能不可以去企及的领域。但正是因为这些计算机科学家、人工智能科学家不断地去模仿人的决策过程,比如他们训练了 value network,训练了 policy network,就是怎么样根据现在的棋局去评估胜率,去决定下一步该走什么子,而不是走简单的穷举,用这些 value network 来对搜索树进行有效的剪枝,从而在有限的时间内完成一个非常有意义的探索,所有这些都是人工智能技术取得的本质的进展,让我们看到了一些不一样的结果。
说了人工智能的这些辉煌之后,其实有很多问题是需要我们去冷静思考和回答的。
我们的主题是开启智能计算的研究之门,我想从一个研究者的角度跟大家讨论一下我们还能做些什么,甚至是更有意义的是去做些什么。人工智能表面看起来很火,其实如果把这张魔术的台布展开,你就会发现它千疮百孔,各种各样非常基础的问题其实并没有解决,甚至有很多哲学的方法论的东西从我们的角度来看可能也不准确。
面对这样的情况,更有意义的事情可能是冷静下来,去从事一些能够改变人工智能现状以及未来的很本质的基础研究工作,甚至是去反思人工智能发展的路线图,看看我们是不是应该重启一条道路。这些事情才能使得我们不仅仅是随波逐流,不仅仅是变点现,骗点钱,而是在人工智能发展的真正道路上留下我们自己的足迹,过了几十年当大家回忆的时候,另外一个人站在台上讲述人工智能一百年的时候,他会在那个图上标着一个星星,那里面讲的是你的故事。
前面这些人工智能现象的背后是什么?说到技术层面,现在最火的两个词,一个叫 Deep Learning(深度学习),一个叫 Reinforcement Learning(增强学习)。
深度学习是什么?通俗地讲,它就是一个端到端的学习,我们不需要一些 feature engineering,而是用一个非常复杂的、容量很大的模型去直接拟合输入输出,让模型自己探索有意义的中间表达。
什么是增强学习?通俗地讲,就是学习机器不断地跟环境做自主的互动,在互动的过程中用长远的收益来指导当下该做什么决策,通过不断的跟环境互动去调整决策的最优性。
之所以现在深度学习和增强学习能够取得很大的成功,背后有一个很大的原因,就是基于巨大的数据和巨大的运算量训练出的拥有巨大容量的模型,所以它们的成功离不开硬件系统,这也是为什么现在 GPU 这么火,包括云计算、多机协作已经成了我们必不可少的环节。
这是现在人工智能的现状。面对这样的现状,我们是按照大家指定的这条道路去走,多搞几个 GPU 去训练一些模型跟别人 PK,还是反思一下这条路对不对、有没有什么问题。接下来我想跟大家讨论的就是人工智能的诸多问题。我只列了一些其中的代表,但其实问题远远不止这些。
第一件事,现今的人工智能技术,尤其是以深度学习为代表的,需要大量的标注数据,来让我们能够训练一个有效的模型,它不太依赖于人的先验知识,要从零学起。
如果想从零开始学习就需要有大量的样本提供规律。比如,图像分类,现在通常会用上千万张图像来训练;语音识别,成千上万小时的有标注的语音数据;机器翻译一般都是在千万量级的双语语对上去做训练,这样的数据之前是不可想象的,但是我们这个时代是大数据时代,所以有了这些数据,就使得深度学习训练成为了可能。
但这是不是一剂万能的灵药呢?其实在很多领域里是不可能或者是很难获得类似的数据的。比如医疗上面,很多疑难杂症,全世界也没有几例,那怎么能够对这个类别搜集大数据。所以从这个意义上讲,如果我们能够找到一种方法克服对大的标注数据的需求,我们才能够使得现在的人工智能技术突破目前数据给它划定的边界,才能够深入到更多的领域里面去。
第二个挑战是关于模型大小以及模型训练难度的问题。
前面提到了深度神经网络有很多层,而且一般参数都很大,几十亿的参数是家常便饭。面对这样的网络,至少有两个困难,一个是我们经常提到的梯度消减和梯度爆炸的问题,当深层网络有非常多层次的时候,输出层和标签之间运算出来的残差或者是损失函数,是很难有效地传递到底层去的。
所以在用这种反向传播训练的时候,底层的网络参数通常不太容易被很有效的训练,表现不好。人们发明了各种各样的手段来解决它,比如加一些 skip-level con NEC tion,像我们微软亚洲研究院发明的 ResNet 技术就是做这件事情的,还有很多各种各样的技巧。但这些其实都只是去解决问题的技巧,回过头来,原来的这个问题本身是不是必要的,是需要我们反思的。
再有就是模型爆炸。
前面说了几十亿的参数是家常便饭,几十亿甚至上百亿个参数意味着什么,意味着模型本身的存储量是非常大的。
举一个简单的例子,如果我们用神经网络来做语言模型,给出的训练数据集是 Clueweb 整个网络上的网页,大概有十亿个网页的量级。这样的一个数据,如果要去用循环神经网络去训练一个语言模型,简单计算一下就会知道,它需要用到的模型的大小大概是 80 G 到 100 G 的大小,听起来好像不太大,但是现在主流的 GPU 板上的存储 24 G 已经算是高配,换句话说,80 G 到 100 G 的大小已经远远超过一个 GPU 卡的容量,那么就一定要做分布式的运算,还要做模型并行,有很多技术难度在里面。即便有一个 GPU 卡,能够放下这 80 G 或 100 G 的模型,如此大的训练数据过一遍也可能要用上百年的时间,这听起来也相当不靠谱。
到底需不需要这么大的模型,有没有必要我们非要把自己放在一个内存也不够用、计算时间也非常长、也不能忍受的境地呢,这个是值得思考的问题。
说到大模型,标注数据很大,那必然要提到分布式运算,分布式运算听起来是一个相对成熟的领域,因为系统领域已经对分布式计算研究了很多年。但是回到我们分布式机器学习这件事情上是有所不同的:这里我们做分布式运算的目的是为了让我们能够用更多的资源来容纳更大的模型,使得运算的时间缩短到能接受的程度,但是我们不想丢掉运算的精度。
举个例子,原来用上百年的时间可以得到一个非常精准的语言模型,现在有 100 台机器,虽然算的很快,但出来的语言模型不能用了,这件得不偿失。
说到分布式运算有两个主流的方式,一个是同步的并行方式,一个是异步的并行方式。
同步的并行方式是什么?就是很多机器都分了一个子任务,大家每计算一步之后要互相等待,交换一下计算的结果,然后再往前走。这个过程能够保证对整个分布式运算的流程是可控的,可以知道发生了什么,在数学上可以做建模,能够在理论上有所保证。但它的问题就是所谓的木桶原理,这个集群里面只要有一台机器很慢,分布式运算就会被这台机器拖垮,就不会得到好的加速比。
所以人们开始做异步的并行方式,异步的意思就是每台机器各自做自己的事情,互相不等待,把当前按照各自的数据训练出来的模型更新推到某一个服务器上,再更新整体模型。但这时候又出现了一个新的问题,就是乱序更新的问题,这个过程是不能被我们原来的数学模型所描述的,违背了优化技术的一些基本假设。比如当我们使用随机梯度下降法的时候,可以证明当时用一个不断减小的学习率时,优化过程是有收敛性的。这是因为我们每一次增加的那个梯度是在上一次计算的模型基础上算出来的梯度。一旦加上去的梯度可能是旧的,不是依据前一个模型算出来的,到底优化过还能不能收敛,就不那么清楚了,所以虽然速度快,精度却可能没有保证。
第四个,我把它叫做调参黑科技,难言之隐。
这件事情特别有趣,我前一段时间参加过一个论坛,一位嘉宾的一句话给我印象特别深,他说大家知道为什么现在很多公司都有深度学习实验室吗,以前没听说过有一个叫支持向量机实验室的,为什么?这是因为像 SVM 这样的技术训练过程非常简单,需要调节的超参数很少,基本上只要按部就班去做,得到的结果都差不多。
但深度学习这件事情,如果不来点调参黑科技,就得不到想要的结果。所谓深度学习实验室,就是一批会调参的人,没有他们深度学习就没那么好用。虽然是句玩笑,但是深度学习力要调的东西确实太多了,比如说训练数据怎么来,怎么选,如果是分布式运算怎么划分,神经网络结构怎么设计,10 层、100 层还是 1000 层,各层之间如何连接,模型更新的规则是什么,学习率怎么设,如果是分布式运算各个机器运算出来的结果怎么聚合,怎么得到统一的模型,等等,太多需要调的东西,一个地方调不好,结果可能就大相径庭。这就是为什么很多论文里的结果是不能重现的,不是说论文一定不对,但至少人家没有把怎么调参告诉你,他只告诉了你模型长什么样而已。
下一个挑战,叫做黑箱算法,不明就里。
这不仅仅是神经网络的问题,更是统计机器学习多年来一直的顽疾,就是用一个表达能力很强的黑盒子来拟合想要研究的问题,里面参数很多。这样一个复杂的黑盒子去做拟合的时候,结果好,皆大欢喜。如果结果不好,出现了反例,该怎么解决呢,这里面几亿、几十亿个参数,是谁出了问题呢,其实是非常难排错的事情。
相反,以前有很多基于逻辑推理的方法,虽然效果没有神经网络好,但是我们知道每一步是为什么做了决策,容易分析、排错。所以最近几年有一个趋势,就是把基于统计学习的方法和基于符号计算的方法进行结合,造出一个灰盒子,它既具备很强的学习能力,又能在很大程度上是可理解、可支配、可调整的。
到现在为止,这几件事都是现在人工智能技术层面的问题。接下来,谈的是更像方法论和哲学的问题,仅为个人的观点,跟大家一起分享。
其中一条,我叫做蛮力解法,舍本逐末。
这句话什么意思?刚才我提到过深度学习之所以这么成功,是因为它有一个特别强的表达能力,在历史上人们证明过深层神经网络有 universal approximation theorem,只要隐结点的数目足够多,任意给一个连续函数,它都可以无限逼近这个函数,换言之,有了很强的表达能力,什么问题都可以学的很好。
听起来好像是挺美好的事,但实际上它背后存在一个问题:它拟合的是数据的表象,数据表象可以非常复杂,但是数据背后驱动的规律是不是真的那么复杂呢,如果我们只看到表象不去研究数据产生的本质,很可能你花了很大的力气去拟合,但是浪费了很多时间,得到的结果也不鲁棒。
举个例子,我们发现大自然也好,人类社会也好,其实没有想象的那么复杂,虽然你看到的很多数据很复杂,它们背后的规律可能非常简单。像量子力学有薛定谔方程、量子化学、流体力学、生物遗传学、经济学、社会学也都有类似的简单方程,科学家发现那么纷繁复杂的现象都可以被一个动态系统所刻划,而动态系统背后的规律可能就是一个最高二阶的偏微分方程。
大家可以想象,如果不知道这些机理,不对动态系统做建模,只对动态系统的产出数据做建模,就会觉得这个问题非常复杂,要有一个容量非常大的神经网络去逼近这个数据。但反过来,如果目光焦点在这个动态系统身上,可能就两三个参数的一个二阶微分方程就搞定了。
下面也是一个值得思考的问题——动物智能,南辕北辙。
虽然前面提到人工智能产生了很多的进步,但其实目前所做的还主要是认知的事情,做一个 Pattern Recognition,听听声音,看看图像,这是动物也能做的事。今天的人工智能没有回答一个关键的问题,就是动物和人的区别。可能有人会讲,据说猴子的大脑比人的大脑小很多,有可能是体量的不同。但人的祖先跟大猩猩在脑容量上应该没有本质的区别,那到底为什么经过漫长的进化,人能成为万物之灵主宰地球了呢?
我自己的观点是因为人类发明了很多动物界没有的机制和规律。比如我们有文字,我们可以把我们对世界的认知,总结出来的规律写下来,把它变成书,变成资料传给我们的下一代。当老一辈的人去世之后,孩子们读读书,就掌握了之前几百年几千年人们对世界的认识。但是老一代大猩猩死掉之后,它的孩子就要从头学起。
另外,我们人类有强大的教育体系,人从幼儿园开始,小学,中学,一直进入大学,用了十几年的时间,就把几百年、几千年的知识都掌握在身上了,可以站在巨人的肩膀上继续往前走,这非常了不起。好的老师,会教出好的学生,教学相长,薪火相传。
这些人类的精髓在今天的人工智能技术里面是并没有充分体现,而没有它们我们怎么能指望深度神经网络达到人的智商呢?
前面列了很多方面,是我们对人工智能领域的一些看法,不管是从技术层面,还是方法论层面,都有很多值得进一步挖掘的点,只有这些问题真正解决了,人工智能才可能稳稳妥妥的往前走,而不只是昙花一现。
基于这些考虑,我所在的微软亚洲研究院机器学习组,对研究方向做了一个相应的布局,比如对偶学习,它解决的就是没有大规模标注数据的时候,该怎么训练一个神经网络、怎么训练一个增强学习模型。该论文发表在去年的 NIPS 大会上,获得了很大的反响。
还有,我们叫精深学习(Light Learning),为什么叫 Light?前面提到很多模型太大,放不到 GPU 里,训练时间很长,我们这个研究就是去回答是否真的需要那么大的模型。我们展示了一个很有趣的深度学习算法,叫 Light RNN,用该技术,只需要用一个非常小的模型在几天之内就可以把整个 Clueweb 数据学完,而且它得到的结果要比用大模型训练很长时间得到的结果还要好。
并行学习,之前提到并行学习有很多同步异步之间的权衡,我们发明了一个技术,它有异步并行的效率,但是能达到同步并行的精度,中间的技术解决方案其实很简单,在网上也有论文。我们用了泰勒展开,一个非常简单的数学工具,把这两者给结合在一起。
符号学习,就是想去解决黑白之间的那个灰盒子问题。
自主学习,是想去解决深度学习调参的黑科技,既然调参这么复杂,能不能用另外一个人工智能算法来调呢,能不能用增强学习的方法来调呢,所以我们做了一系列的工作来解决怎么去调各种各样的参数,怎么用另外一个机器学习来做这个机器学习。
最后一个方向,我们叫做超人类学习,我们想受大自然的启发,受人类社会发展的启发,去使得我们的人工智能技术接近人类,甚至超过人类,这背后是整个人工智能方法论的变化。
刘铁岩:对偶学习推动人工智能的新浪潮12 月 17 日,中国人工智能学会、中国工程院战略咨询中心主办,今日头条、IEEE《计算科学评论》协办的2016机器智能前沿论坛暨2016 BYTE CUP 国际机器学习竞赛颁奖仪式在中国工程院举办,论坛邀请到今日头条、微软、IBM 等业界科学家以及清华大学、北京大学、Santa Fe 研究所、Georgia Institute of Technology(佐治亚理工)等国内外知名院校学者共同探讨了机器学习的研究现状、前沿创新及应用发展等问题。微软亚洲研究院首席研究员刘铁岩博士受邀发表演讲。本文由机器之心授权转载。
对偶学习推动人工智能的新浪潮
刘铁岩
谢谢大家,感谢组委会的邀请,让我有这个机会与大家分享我们的研究工作。我刚才坐在台下聆听了孙茂松老师和 David 的报告,都获益匪浅。首先,老师非常全面的回顾了机器翻译的历史,又有高屋建瓴的讨论,让我们从中学到了很多的东西。其次,很荣幸我的报告排在 David 之后,做优化和机器学习的同事们应该都非常熟悉 David 的 No Free Lunch Theory,尤其在今天全世界都希望用神经网络这「一招鲜」来解决所有问题的时候,更应该仔细琢磨一下这个定理,对大家会有很大的启示。
今天我分享的主题是对偶学习。在对这个主题进行深入讨论之前,我想同大家一起回顾一下最近这段时间人工智能领域的一些飞速发展。我举几个例子,首先是语音识别。
可能很多同学都看到过这则新闻,微软研究院在语音识别方面取得了重大突破,第一次机器学习算法在日常对话场景下取得了和人一样好的语音识别能力,词错误率降低至 5.9%。
第二个例子是有关图像识别和物体分割,在这方面微软研究院同样也有世界领先的研究成果。
2015 年,我们研究院发明的 ResNet 算法在 ImageNet 比赛中力拔头筹,超过了人类的识别水平。人眼辨识图像的错误率大概为 5.1%,而 ResNet 的错误率低至 3.5%。今年,在 COCO 物体分割竞赛中,我们研究院同样获得了第一名,和第二名拉开了很大的差距。物体分割比图像分类更难,不但要识别出图片里有什么,还要能够把它的轮廓勾勒出来。
第三个例子是机器翻译,最近相关产业界的发展突飞猛进。这一方向微软同样有着世界领先的技术。
比如在微软的 Skype Translator 软件里,对话双方可以用不同语言进行交流,系统实现实时语音翻译。如果今天会场上大家使用 Skype Translator 的话,可能就不需要聘请同声传译公司了。
第四个例子,最近这段时间人工智能之所以吸引了那么多的眼球,一个重要原因就是它在一些需要 极 高智商的比赛中取得了关键性胜利。比如 AlphaGo 4:1 战胜了围棋世界冠军李世石。在这场人机大战之后,DeepMind 的科学家没有停止他们的训练,据说今天的 AlphaGo 已经达到了人类专业围棋十三段的水平,十三段对决九段那简直就是秒杀。
人工智能的这些成果非常令人振奋,那么这些成果背后又是怎样的技术呢?这就不得不提到深度学习和增强学习。
深度学习使用的是非常复杂,层次很深,容量很大的非线性模型,如深层神经网络,这样的模型可以很好的拟合大量的训练数据,从而在很多识别任务中表现突出。增强学习是一种持续学习技术,它不断地和环境进行交互,根据环境的反馈更新模型。这两种技术还可以相互结合,我们称之为深度增强学习。AlphaGo 背后的核心技术就是深度增强学习。那么,到底深度学习和增强学习是不是真的已经非常完美,可以解决我们面临的所有人工智能问题呢?
其实答案是否定的。仔细分析一下,就会发现这两项技术都存在本质的弱点。首先,目前深度学习的成功离不开大量的有标签训练数据。但是获得海量有标签数据的代价是非常高的,在某些特定的邻域甚至是不可能完成的任务。比如医疗领域的疑难杂症,本身样本就非常少,有钱也无法取得大量的有标签数据。正所谓成也萧何,败也萧何,大数据推动了深度学习的成功,但也成为了深度学习进一步发展的瓶颈。其次,增强学习虽然不需要利用传统意义上的有标签数据,但是它的学习效率并不高,需要跟环境进行大量交互从而获得反馈用以更新模型。然而,有时和环境的频繁交互并不现实。比如,在我们学开车的时候,依赖于频繁地和环境(周围的路况,其他的车辆)进行交互是很危险的,可能还没学会开车就已经发生交通事故了。这就解释了为什么增强学习取得成功的领域很多都是模拟环境,比如说打电子游戏、下围棋等等,它们规则明确,可以无限次重复。但当把增强学习应用到一些实际场景里,需要和实际用户进行交互,还可能带有无法挽回的风险,是不是还能取得同样的效果呢?目前还没有被证实。
了解了深度学习和增强学习的弱点以后,我们不禁要问:有没有一种新的学习范式可以克服他们的弱点?能否可以不依赖于那么多有标签的数据,能否不需要跟真实环境做那么多次交互,就可以学到有效的模型?为了回答这个问题,我们首先来对现有的人工智能任务做一个仔细的分析。
通过分析,我们发现了一个非常重要的现象:现实中,有意义、有实用价值的人工智能任务,往往是成对出现的。比如在做机器翻译的时候,我们关心从英语翻译到汉语,我们同样也关心从汉语翻译回英语。再比如,在语音领域,我们既关心语音识别的问题,也关心语音合成的问题(TTS)。图像领域,我们既关心图像识别,也关心图像生成。类似这样的对偶任务还有很多,比如在对话引擎、搜索引擎等场景中都有对偶任务。这种现象给了我们什么启示呢?
第一点,由于存在特殊的对偶结构,两个任务可以互相提供反馈信息,而这些反馈信息可以用来训练深度学习模型。也就是说,即便没有人为标注的数据,有了对偶结构,我们也可以做深度学习了。第二,这两个对偶任务,可以互相充当对方的环境,这样我们就不必跟真实的环境做交互,这两个对偶任务之间的交互就可以产生有效的反馈信号了。总而言之,如果我们能充分地利用对偶结构,就有望解决刚才提到的深度学习和增强学习的瓶颈——训练数据从哪里来、和环境的交互怎么持续进行下去。
基于以上的思考,我们提出了一个新的学习范式,叫做对偶学习。它的思路非常简单。我们假设学习过程中有两个智能体,其中一个智能体从事的是原任务,就是从 X 到 Y 的学习任务;而另外一个智能体从事的是对偶任务,也就是从 Y 到 X 的学习任务。假如我们把 X 用第一个智能体的模型 F 映射成 Y,再利用第二个智能体的模型 G 把它反映射成 X’。通过比较 X 和 X'我们其实就可以获得非常有用的反馈信号。
其实这个做法在刚才孙茂松老师的演讲中已经提到过,有人曾经用这种翻过去再翻回来的方式判断机器翻译模型的好坏。如果 X 和 X'的差异很大,就说明这个翻译系统不靠谱,说明模型 F 和 G 至少有一个不好;如果 X 和 X'很接近,就给了我们一个利好的消息,就是这两个模型都不错。除了比较 X 和 X'的差异,其实还有很多其他的反馈信息可以被利用。下面我们以机器翻译为例,做个详细的说明。
假设我们有一个英文的句子 X,通过翻译模型 F 的作用,得到一个中文句子 Y。那么 Y 作为一个中文句子是不是符合语法,是不是顺畅,X 到 Y 之间的关系是否和英汉词典一致等等,都可以作为反馈信息。同样,当我们用模型 G 把 Y 再变成英文句子 X'以后,也可以去衡量 X'是不是符合语法,是否顺畅、X'与 Y 的关系是否与英汉词典一致,以及 X'和 X 是否相似等等,都可以作为反馈信息。利用这些反馈信息,我们可以使用包括 Policy Gradient 在内的方法,来一轮一轮地更新我们的模型,直到最终得到两个满意的模型。
上面的这个过程可以无限循环下去,每次随机地抽选一个单语语句,做对偶学习,更新模型,然后再抽选下一个单语语句,进行对偶学习。那么这个过程会不会收敛呢?其答案是肯定的,以机器翻译为例,我们可以证明,只要机器翻译模型 F 和 G 的解码部分都使用的是随机算法,比如 beam search,这个对偶学习过程就一定是收敛的,也就是说你最终会学到两个稳定的模型 F 和 G。
那么接下来,我们就来看看这样的稳定模型是否有效。我们对比的算法是一个非常经典的神经机器翻译方法,而且用的是他们自己开源的代码。为了训练这个对比算法,我们使用了全部的双语标注数据。而我们自己提出的对偶学习算法并不需要双语标注数据,用单语数据就可以进行学习和迭代了。不过万事开头难,我们还是要给这个学习过程一个初始化。在初始化过程中,我们使用了 10% 的双语语料训练了一个相对比较弱的模型,然后用对偶学习的迭代过程不断提高它。也就是说,在初始化完成之后,我们就不再使用任何双语的标注语料了,而是靠两个对偶任务互相提供反馈信息进行模型训练。好,那我们来看看实验结果如何。
这两张图展示了法英和英法翻译的实验结果。以第一张图为例,最左边这根柱子对应的是用 10% 双语语料训练的初始模型;最右边这根柱子对应的是用 100% 双语语料训练的翻译模型。可以看出,初始模型确实比较弱。当我们使用对偶学习的方法,虽然不再利用任何有标注的双语数据,我们仍可以很快的接近甚至超过用百分之百的双语语料训练出来的模型。这个结果非常令人振奋。不仅如此,我们的实验发现,对偶学习更不容易饱和,因为无标签的单语数据非常丰富、非常多样化,因此通过不断调节单语数据源和调整反馈信息,可以持续提高模型的有效性。相反,使用双语语料比较容易饱和,过几遍数据以后,当信息被挖掘得足够充分,想要再提升模型精度就变得非常困难了。
如上这种振奋人心的结果是否只局限在机器翻译领域呢?其他领域是否也可以使用类似的方法得到提升呢?答案是肯定的,前面我提到的很多人工智能的任务都具有对偶结构,因此都可以用对偶学习来解决。
这张 PPT 展示了在语音识别和语音合成方面如何定义反馈信号,从而进行对偶学习。
同样,这张 PPT 展示了在图像识别和图像生成方面如何定义反馈信号,从而进行对偶学习。
而这张 PPT 则展示了在对话引擎方面如何定义反馈信号,从而进行对偶学习。
说到这里,可能很多人会有疑问,虽然我们说对偶学习应用很宽泛,但是我们举的例子都有一个共同特点,就是真实的物理世界里确实存在两个对偶的任务。那么,如果我们要解决的问题并不存在一个天然的对偶任务怎么办?其实这个也没关系,即使没有物理上的对偶性,也可以通过虚拟的对偶性来完成对偶学习。我举两个例子。第一个是在深度神经网络领域常用的 Auto Encoder,仔细分析一下,它其实是对偶学习的一个特例。
Auto Encoder 原本的任务是要学习从输入层到隐层的一个映射(即编码),为了有效地学习这种映射,我们人为添加了一个虚拟任务:就是从隐层到输入层的逆映射(即解码,请注意图中的输出跟输入是一样的数据),这样就形成了机器学习的闭环。如果用对偶学习的语言描述一下,就是这张图:通过人为增加解码回路,使虚拟的对偶性得以成立,从而实现对偶学习。不过需要指出的是,Auto Encoder 和对偶学习有一些小差别,Auto Encoder 只关心单边任务的模型(也就是编码器),而在标准的对偶学习中,我们同时关心两个模型,想把它们都学好。
另一个例子是最近这两年特别火的——Generative Adversarial Nets(GAN)。它的目标是学习一个图像生成器,为此通过一个鉴别器不断给生成器提供反馈信息(也就是判别生成器生成的东西是真是假)。这样的博弈过程可以获得一个非常有效的图像生成器,用它可以自动制造训练样本来进行深度学习。很显然,GAN 也可以用对偶学习的语言进行描述,并且它也只是对偶学习的一个特例:它只关心单边生成器的有效性,而标准的对偶学习会同时关心生成器和鉴别器的有效性。
到此为止,无论是天然的对偶学习,还是虚拟的对偶学习,都是用来解决无监督学习问题的。那么,如果实际中我们的训练数据已经非常多了,对偶学习的思想还有用吗?我们的答案是:有用,而且非常有用。
让我们来看一下监督学习的例子。我们有一个样本 X,原任务是要预测它的标签 Y。为此,我们可以使用已有的很多监督学习技术加以实现。但如果我们再给它人为增加一条对偶回路会怎样呢?假设存在一个对偶任务,是从标签 Y 到 X 的预测。那么原任务和对偶任务其实存在着非常内在的联系。利用全概率公式和贝叶斯公式我们可以很容易知道,这两个任务背后的条件概率是互相约束的,利用这一点可以构造一个非常强的正则项来提高模型的学习效率。我们在机器翻译上的实验表明,加入这个对偶正则项,翻译模型的 BLEU score 有大幅度的提升。
同样的道理,对偶学习的思想甚至可以提高 inference 的性能。假设我们的模型已经训练好了,原任务是要用它来做预测。传统的做法是,给定一个样本 X,基于已有模型,寻找能够使其条件概率 P(Y|X) 最大化的 Y 作为 inference 的结果。如果我们运用对偶学习的思想,就会发现问题还可以反过来看。从对偶任务的模型出发,利用贝叶斯公式,同样也可以导出条件概率 P(Y|X) 来。按理说这两个条件概率应该是一致的,但是因为原任务和对偶任务是独立进行的,实际中它们可能并不完全一致,那么如果综合考虑这两个条件概率,我们的置信度会得到提升。相应地,inference 的结果也会得到明显的提升。
到此为止我们介绍了对偶学习在无监督学习上的应用、在没有天然对偶结构时如何使用虚拟回路实现对偶学习、以及如何把对偶学习的思想延展到有监督学习和 inference 之中。
事实上,对偶学习是一个新的学习范式,而不单是一个技巧。它和我们熟知的很多学习范式,如无监督学习、半监督学习、co-training、多任务学习、迁移学习都有联系,又有显著不同。它提供了一个看待这个世界的不同视角,对很多难题提供了新的解题思路。我们非常有信心对偶学习在更多的领域将会取得成功。我们组的同事们正在这个方向上积极探索,也希望在座的各位能够加入我们,一起去推动对偶学习的发展,掀起人工智能的新浪潮,谢谢大家!
创客总部
创客总部是北大校友、联想之星创业联盟成员企业2013年发起, 专注实验室技术投资和孵化,是科技成果变现第一站, 专业投资孵化高校和科研院所的前沿技术与技术精英,提供早期投资、产业链业务对接和办公场地等服务,帮助技术项目和大型企业建立业务合作关系,同时为大型企业引入前沿技术,促进大型企业转型升级。是中关村创新型孵化器,国家级众创空间。专注投资孵化领域包括:人工智能、新材料、医疗健康和消费升级等。截至2017年1月,通过评审入孵的项目有275个,有122个项目获得投资,共获得11.3亿元人民币投资,单个项目单次获得最高融资2.3亿元人民币,其中创客总部投资了50个项目。
<