演讲稿丨杨铭 深度学习发展的新趋势-阿里云开发者社区

开发者社区> 沉默术士> 正文

演讲稿丨杨铭 深度学习发展的新趋势

简介:
+关注继续查看

       大家好,我是杨铭。非常荣幸有这样的机会跟大家分享我们对深度学习研究发展新趋势的一些思考和总结,我们将这些新发展的首字母缩写成一个单词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年的发展情况来看,深度学习现在的非常简化的思路是,如果有个比较新的问题,要做的事情首先是把问题描述好,保证输入到最终的目的这个过程每步是可微分的,然后把其中最难的部分插入深度神经网络,实现端对端的学习。之前提到的几个新趋势,大体上都是这种思路。


       无论是社会大众还是媒体,或者是研究人员自己,我们可能对深度学习还有一些不同角度的认识。我个人认为这是计算机科学领域非常纯粹的计算问题,探索如何把这些数据本质的内容和结构抽象理解得更好。希望今天提到的一些深度学习的新趋势,对大家有所帮助和借鉴。谢谢大家!

本文来源于"中国人工智能学会",原文发表时间"2016-04-27"

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
4148 0
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
7435 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4620 0
【让高中生掌握深度学习】掀起DL炼金术之争的Ali,这次要像教物理那样教深度学习
在NIPS 2017与LeCun论战,说深度学习是炼金术的Ali Rahimi,近日发表文章探讨“深度学习是否已经成熟到可以在高中教学”的问题。如今大量新人涌入,我们有的却更多是预训练模型和设定好的参数。
3636 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
8268 0
专访阿里巴巴徐盈辉:深度学习和强化学习技术首次在双11中的大规模应用
淘宝的搜索和推荐发展到今天,正在从智能的依靠机器学习能力解决业务问题,向更高效的从不确定性中探索目标的学习+决策的能力进化。今年双11,人工智能技术在搜索与推荐场景里有怎样的创新应用,阿里巴巴研究员徐盈辉将在本次在线论坛中和大家分享。
12122 0
+关注
5518
文章
253
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载