深度学习从被监督走向互动
来源:http://tech.163.com/16/0427/07/BLL3TM9M00094P0U.html
编者按:2016年是人工智能诞辰60周年。4月22日,2016全球人工智能技术大会(GAITC) 暨人工智能60年纪念活动启动仪式在北京国家会议中心举行,约1600余专家、学者及产业界人士出席大会。
大会专题报告由中国人工智能学会副秘书长、地平线机器人技术创始人兼CEO余凯博士主持。嘉宾包括中国人工智能学会理事长、中国工程院院士李德毅,IBM中国研究院大数据及认知计算研究总监苏中,百度深度学习研究员“杰出科学家”徐伟,寒武纪科技创始人及首席执行官陈天石,北京云知声信息技术有限公司董事长兼CTO梁家恩等。
在人工智能技术大会上,地平线机器人联合创始人兼软件副总裁杨铭博士发表了演讲,阐述了深度学习发展的新趋势。杨铭称,从2006年开始,深度学习有爆发式增长,原因主要是利用了海量的数据。这些大数据的使用使得原来这种深度神经网络的一些问题都不再是问题了。
杨铭认为,深度学习目前有四个发展新趋势即“MARS”,第一是学习如何记忆(memory networks);第二是学习如何关注与取舍(attention model),把注意力集中到需要关心的细节上;第三个是增强学习(reinforcement learning),学习如何控制主动行动;第四个整体学习任务结构上的新趋势,就是序列化(Sequentialization)。
以下为杨铭的演讲实录:
大家好,我是杨铭。非常荣幸有这样的机会跟大家分享我们对深度学习研究发展新趋势的一些思考和总结,我们将这些新发展的首字母缩写成一个单词MARS。这是和我的同事黄畅博士共同的一些讨论。
简单介绍一下,我是去年夏天加入地平线的,负责软件工程。在此之前我在Facebook人工智能实验室负责人脸识别算法研究和后端系统开发,也曾在NEC美国实验室和徐伟一起工作,学到很多东西。
深度学习的定义
在谈论深度学习的新趋势之前,我们应该首先明确一下深度学习的定义和它现在的发展状态。非常幸运,学术圈对于深度学习的定义有比较清楚的共识。深度学习是指从原始的数据通过不断地学习、不断地抽象,得到这些数据的表达或描述。所以简单地说,深度学习是从原始数据(raw data)学习其表达(learning representations)。这些原始数据可能是图像数据,可能是语音,也可能是文字;这种表达就是一些简洁的数字化的表达。深度学习的关键就是怎么去学这个表达。这个表达是通过多层的非线性的复杂的结构学习的,而这个结构可能是神经网络,也可能其他的结构。关键是希望通过端到端的训练,从数据直接学习到表达。
如果谈到深度学习的起源还是要回到1957年,从一个非常简单的结构单元——“感知机(perception)”开始。一些输入信号被权重加权后,和一个阈值比较得到输出。为什么说这是深度学习的起源?因为这些权重不是由规则预先设计的,而是训练学习得到的。最开始的“感知机”是硬件设计,这些连接就是物理连线,这些权重可能是通过调节电阻实现的。当时媒体就预测,这是一个智能计算机的雏形,能很快学会走路、说话、看图、写作,甚至自我复制或者有自我意识。那么过了60年,目前进展到看图和写作中间的阶段,希望至少再需要至60年能学会自我复制。
深度学习的落与起
深度学习从出现之后,大体上经过了两个落起。一开始大家非常乐观,但很快发现有一些非常简单的问题它解决不了。从2006年开始,在Hinton、LeCun、Bengio、Ng等几位教授的推动下,深度学习得到了一种爆发式的发展,在图像识别、语音识别、语义理解,和广告推荐等问题上,有一些突破性的提高。最新的进展就是今年3月的AlphaGo围棋比赛,以一种很直观的方式让社会大众感受到了深度学习的进展。我们希望再过五年,深度学习的技术能够真正用到千家万户的日常生活中去,让每个设备都可以运行深度学习的模块。
在这几次起落中,深度学习基本的学习方式和网络结构其实没有本质性的变化,还是一种多级的人工神经网络的结构。像这幅图中看到的,输入层是一些原始数据,并且有标注。无论希望学到什么内容,只要有个评价误差的函数(cost function),评价神经网络的误差是多少,那么有了这个输入输出之后,深度学习或者深度神经网络就可以作为一个黑盒子学习这个目标。人工神经网络从结构上讲就是多层的神经元和它们之间的连接,组合成很多层。开始时可能有一个输入和一个目标,比如你希望从人脸图像识别出这个人是谁。这时候神经网络肯定识别不出来,因为它从来没有见过。我们会给神经网络随机设一些值,让它预测这个识别结果,刚开始输出层几乎肯定会是一个错误的识别结果。这也没有关系,我们把这个输出层的误差慢慢地反向传播回去,一点点地修改这些神经元的内部参数和他们之间的连接。通过这种一点点地修改,通过大量的数据,这个网络就学会了一个非常复杂的函数功能。从八十年代到目前,这30年间,这个基本的结构和学习算法是没有变化的。
从2006年开始,深度学习有爆发式增长,归结于下面几个理由。首先是利用了海量的数据,这些大数据的使用使得原来这种深度神经网络的一些问题都不再是问题了(比如对噪声数据敏感,容易在一个小的数据集性能很好,但无法泛化到大的数据集)。能够使用这些大数据学习,需要很高的并行运算的能力。当然,也有算法上的改进,比如dropout、batch normalization、residual networks等,能避免过拟合梯度消失这些问题。但本质上这次深度学习的爆发发展还是通过大数据和计算能力实现的。之前说神经网络本身像黑盒子,结构设定没有很好的指导意见,这个目前还是这个现状。
深度学习为什么这几年能得到这么大的关注?关键原因是性能准确度是随着数据的增长而增加的。其他的机器学习的方法可能随着数据的增加,性能提高到某一个点就饱和了。但目前为止对于深度学习我们还没有观察到这点,这可能是它最值得关注的一点。目前深度学习也取得很多成功,比如如何做好图像分类的问题。对于一个1000类图像分类测试,经过大概不到五年的时间,错误率从25%降到3.5%的水平,已经比人类的识别准确率还要高。这就是我们目前深度学习或者深度神经网络取得的主要的成功点,即学会了如何识别、如何分类。
深度学习研究的新趋势
回到我们的正题,目前深度学习研究的新趋势?我们总结了四个方向。首先是学习如何记忆(memory networks);第二是学习如何关注与取舍(attention model),把注意力集中到需要关心的细节上;第三个是增强学习(reinforcement learning),学习如何控制主动行动;第四个整体学习任务结构上的新趋势,就是序列化(Sequentialization)。我们取首字母,缩写成MARS。
第一个是学习如何记忆。常规的前向神经网络有一个特点:你每次输入和输出是确定的关系,对于一副图像,无论何时输入进神经网络,我们一层一层计算后就会得到一个确定的结果,这是跟上下文不相关的。我们如何把记忆的能力引入到神经网络中去?最简单的一个思路是,在神经网络中加入一些状态,让它能记住一点事情。它的输出不仅取决于它的输入,也取决于它本身的状态。这是一个最基本的递归神经网络的思路。输出取决于本身的状态,我们也可以将其展开成一个时序系列的结构,就是说当前状态的输入不仅包括现在输入,也包含上一时刻的输出,这样就会构成一个非常深的网络。这种办法可以让神经网络记住一些之前的状态。那么输出就取决于在这些状态和现在的输入的结合。但是这个方法有一个局限:这些记忆不会很长久,很快就会被后面的数据冲掉了。之后的深度学习的发展就是长时短时记忆,提出了一个记忆单元(memory cell)的概念,这个单元中加入了三个个门,一个输入门,一个输出门,一个遗忘门。输入门可以控制你的输入是否影响你的记忆当中的内容。输出门是影响你的记忆是否被输出出来影响将来。遗忘门是来看你的记忆是否自我更新保持下去。这种方式使你的记忆得到灵活的保持,而控制记忆如何保持的这些门本身是通过学习得到的,通过不同的任务学习如何去控制这些门。这个长短时记忆单元是1999年提出的,近几年又有一些新的改进如Gated Recurrent Unit,简化成只有两个门,一个是更新门,一个重置门,控制记忆内容是否能继续保存下去。
这些方法其实可以把记忆保存得更长一点,但实际上还是很有限。更新的一些研究方法提出了一种神经图灵机(Neural Turning Machine)的概念:有一个永久的的内存模块,有一个控制模块去控制如何根据输入去读取存储这些内存,并转换成输出。这个控制模块,可以用神经网络实现。举个例子,比如做排序的工作,有一些乱序的数字,希望把它排成顺序的序列。我们之前需要设计不同的排序算法,而这个神经图灵机的思路是我们给定这些输入输出,让这个神经网络自己去学习如何把这些数字通过储存和取出来排序。某种意义上,让神经网络学习如何实现编程实现任务。这也是一个类似的工作,记忆网络(Memory Network),学习去管理这种长时间的记忆,在应用于问答系统后,可以学到一些推理的能力。
第二个方向是把注意力模型(Attention Model),动态的将注意力集中到某些细节,提高识别性能。比如,看图说话图像理解,你可以根据一幅图生成一句话,很可能是非常宏观的。如果我们能够把注意力聚焦在这个机制的从引入到识别的过程中,根据目前的识别结果,动态一步一步调整聚焦到图像的细节,那么可以生成一些更合理或者更精细的表达,比如在图像中,关注一个飞碟,我们可以调整关注区域在图像中把飞碟的找出来,提取它的特征进行识别,得到图像的更准确的文字描述。
第三个就是增强学习(Reinforcement Learning)。在增强学习的框架中有两个部分,一部分是自主控制的单元(agent),一部分是环境(environment)。自主控制单元是通过选择不同的策略或者行为,希望能够最大化自己的长期预期收益,得到奖励;而环境将接收策略行为,修改状态,反馈出奖励。在这个增强学习的框架中有两个部分,一个部分是如何选择这些行为(policy function),另外一部分是如何评价评估自己可能取得的这些收益(value function)。这个增强学习框架本身已经存在很多年了,和深度学习的结合就是指如何选择策略行为的函数,以及如何评估预期奖励的函数,由深度神经网络学习得到,例如AlphaGo围棋中的走棋网络(policy network)和评价网络(value networks)。
总而言之,从研究角度,深度学习正从有监督的学习慢慢向这种互动式的学习发展;网络结构由先向网络向有递归方式、考虑记忆、考虑时序的网络发;同时内容从静态的输入到动态的输入,在预测方式方面是从同时的预测慢慢变成一步一步序列化的预测。从2014年和2015年的发展情况来看,深度学习现在非常简化的思路是,如果有个比较新的问题,要做的事情首先是把问题描述好,保证输入到最终的目的这个过程每步是可微分的,然后把其中最难的部分插入深度神经网络,实现端对端的学习。之前提到的几个新趋势,大体上都是这种思路。
无论是社会大众还是媒体,或者是研究人员自己,我们可能对深度学习还有一些不同角度的认识。我个人认为这是计算机科学领域非常纯粹的计算问题,探索如何把这些数据本质的内容和结构抽象理解得更好。希望今天提到的一些深度学习的新趋势,对大家有所帮助和借鉴。谢谢大家!