深度神经网络算法的优缺点没有自适应能力只是靠设计运行?

2018年11月18日下午,计算机科学与技术学部主任、人工智能学院焦李成教授在成都参加了由中国人工智能学会主办的人工智能大讲堂并做特邀报告,焦李成教授在报告中回顾了深度神经网络发展历程,阐述了复杂影像的智能解译与识别问题,并激励大家在人工智能领域勇攀学术高峰,以下为报告记录:

焦李成教授:很高兴有这个机会跟大家一起交流。今天的演讲是命题作文,人工智能学会今年开始做人工智能大讲堂,学会理事会将其作为重要的品牌在做,以前是到各个学校去做,现在拿到高峰论坛来做是第一次。上午的也是张院长的命题作文,一定要谈人工智能,人才的培养,我觉得很高兴有这个机会,跟大家一起交流。

一个名字,深度神经网络,两句话大家记住了,李院士讲的是深度学习不是万能的,但是离开深度学习是万万不能的。

这件事情作为我们内行人来讲,今年讲的也比较多,内行人也很自然能理解,给我们行业内讲是不讲这个事的,但是给一般的听众讲,包括给政府机关、百千万人才、长江杰青大讲堂都讲了这句话,这句话的意思是只要是能够结构化的、只要是能够有规则的、只要你是有数据的,那么这个问题,你不要企图和人工智能去拼

围棋就是这样,象棋也是这样,它们是封闭、完备的,在这些问题上你算不过人工智能,没有它算得快,同时这些规则在短时间内的实施性,人做不到,人有感情,机器没有感情,它下错一步,你说它怎么这么臭,它并不正视你,而是继续下,人工智能一秒钟算三千步,三万步,而人看三十步已经很伟大了。

这两个视频,一个是我学生做的,西安英卓未来公寓,另外一个是旷视做的。

英卓未来公寓从房门开启一直到最后的离开都是通过智能完成的。当然你见不着人,但是人通过智能给了你最好的服务。所以他们开了第四家酒店,让大众能够体验到智能家居的生活、享受到智能的品质。

旷视在做人脸识别这件事情,最早做这个事是商汤的Mark,我的学生、也是汤晓鸥老师的第一个学生,他做了20年的人脸识别,20年的坚守厚积薄发,去年的7月份到9月份,三个月内机场、高铁、银行全都用了他的技术。

大家都知道,这是波士顿动力狗。

大家看,它的三级跳,人都不一定能够做得到,就是这么灵活,整个机器人经过这么几代以后,智能的行为、协调、所有的动作做的很棒,我觉得对我们人类是一种挑战。在反恐、排爆、探险,救险这些领域当中,这些技术是非常有用且必要的。

我的学生做了一款为渐冻人服务的眼球控制智能出行及家居生活的轮椅系统,做了三代,正好有一位渐冻人“泰山英雄”,他的腿动不了,手也不能完全控制,但他靠着手登上了泰山、华山,所以公众叫他“泰山英雄”,有媒体联系到了我们,那么我们将赠送一台智能轮椅给他。

人工智能确实能够改变我们人在某些情况下的不方便,我个人感觉还是一件非常有意义的事。

这套轮椅系统能让渐冻人及其他肌肉或骨骼受损的人不仅在室外能自己走,跟刚才说的智能公寓结合起来,通过眼睛的控制,能完成从开门到开关灯、开关窗帘、洗澡间等所有的智能生活起居。

在杭州的一个比赛中,这套系统也很轰动,得到了大家的认可,拿了一个奖项。当然回来了我们认识了“泰山英雄”,能让他有了适合他的轮椅、能切切实实的帮到渐冻人,这是更重要的,我和我的学生都感到非常高兴。

大家可能看不见,这是星载的,就是照相机和雷达装在卫星上然后拍摄地面的视频,船在动、高速上面的车在动、然后机场的飞机在起飞,这是卫星的视频。

卫星视频数据量非常大也非常高维,我们同时做到了在卫星视频数据量级上的舰船、飞机、车辆的监测、跟踪和分类,就是你传送多少、运动速度多少、未知的信息全部能够同时的实时识别出来。

将来首先失业的有可能是播音员,为什么呢?现在的语音合成技术完全可以和董卿一样、和李梓萌一样,听上去有感情,但是声音是合成的。(视频)这样的话就可以全天候的进行播音。

刚才举的波士顿动力、渐冻人的轮椅和智能工艺的结合、播音员的语音合成等例子都是活生生正在发生的。所以教育部也很重视人工智能,教育部各个专家组+咨询组31个人,整个分布在十几个高校。

其实我国的人工智能发展计划归结为三步走,四大任务,五大智能技术方向。

三步走我们怎么跟、四大任务我们怎么去完成,还有五大方向我们在科研人才的培养上怎样去进行匹配,这是我们需要考虑的问题。

我认为可以从四个部分考虑:

第四是智能化基础设施,智能基础设施建设怎么和物联网和云计算的基础设施的建设相互协调起来,是我们需要思考的。

工信部的《新一代人工智能产业发展三年行动计划》大家应该去看,目标很清楚,产品要出来,核心技术要突破,实际上是为整个智能社会和2025智能制造做准备,这件事大家一定要去做,要思考互联网、大数据、人工智能三个支撑体系和基础设施怎么样相互协同,相互协调,共同促进,你跟不上,你一定会落后。

人工智能对全社会来讲是共性的技术、普适的技术,对教育来讲同样是共性的、普适的课程,这一点我们现在都无法去想象,人工智能对于教育或者是智慧教育带来的挑战,我希望大家一定要去关注。

高校的行动计划,今年教育部连发五文,时间规划涉及到2020年、2025年、2030年,内容涉及创新体系,人才培养体系,成果转化和示范应用的基地。

它的目标是想干什么?对于高校教师,写写论文,带带学生已经不够了。

人工智能的方向有什么呢?李院士讲了,这是经过多少次争论后列出来的主要方向,6到8个,要根据各个不同的学校、不同的单位,不同的特色去建相应的方向,一定要有特色而不能同质化。

围绕基础理论的研究,基金委是有布局的,也经过了专家组充分的论证。

人工智能的理论研究从56年到现在,一直在争论也一直在斗争,但不管你是三起三落还是八起八落,搞学术的人都得搞。别人不做的时候我们在做,别人不待见的时候我们也在做,高潮来的时候,该怎么样还怎么样,做学术的人就要初心不改做自己的事。

所以人工智能从诞生之初到现在,从需要模拟人的基本智能,推理、知识、规划、学习、交流、感知到移动和操作物体的能力,始终在延伸,始终在往前走,水平在不断的去提高。

人工智能不是人的智能,而是希望能够像人那样去思考,像自然演化那样去学习和进化。

另外,进化计算和自然计算结合起来有一些挑战和问题,我觉得这两个之间的概括需要有人去做,我已经讲过几回,今天先不讲,未来希望有机会也跟大家聊一聊进化计算和自然计算的结合。

智能的两条道,学习和感知、优化和识别的能力什么时候都需要、什么时候都是智能的主体,怎么样能够把这两个结合起来?

我认为这个时代说对了一部分,这部分就是可以用梯度算法去做,另外一部分是,进化计算在结构优化上一定是比BP强的,梯度从哪儿求这件事情我觉得还是值得思考,无法获得梯度怎么办?

人工智能从开始的符号、联结、行为、贝叶斯到类推,人怎么认知、自然怎么学习演化、人是怎么想的、怎么看的、怎么听的、怎么说的、怎么走的、怎么动的……神经网络都做到了吗?

我想说的是,从专家系统到中间基于特征的,再到声音、语言,文字、图像以及现在的感知行动结合起来,这件事上是值得我们去走的。

我个人认为人工智能四大挑战,无教师的学习何时能来?无监督的学习深度何时能做?机器人能够像人一样去感知和理解这个世界吗?机器的情感在哪里?

前面说的这些都是网络范式去做的,而人是在环境、场景中、运动中去感知,首先是感知这个世界,然后理解这个世界,之后去指挥自己的行为,最后再做一系列的事情。

所以最终人工智能要对环境、对场景、对情感去感知和理解,形成动力系统。更进一步,人工智能的发展最重要的还是人,这个时候带来的伦理、法律、道德、宗教等等深刻的社会问题我们怎么去思考它、怎么去理解它以及怎么去面对它。

美国白宫成立了人工智能研究中心,这是绝无仅有的,MIT结合AI成立新的计算机学院。这件事情我觉得对我们整个改革学校的教育,改革下一代的教育都有影响,我们要思考这意味着什么。

人工智能改造了计算机的教育,斯坦福始终在创新引领的前沿,我们要思考他们做什么事情,我们要做以人为中心的人工智能的教育和改革。

这件事情上,我们教育部的官员和教育工作者都要去好好学习,更要去看别人怎么去做。

所以说到对人工智能的战略投资,包括对社会的变革、长期的革命,MIT这件事情拿了10亿美金,CMU创办了世界上第一个人工智能本科专业,我知道在纽约办了一个艺术学院与人工智能的结合,他们用6.4亿美金,专门办了一个艺术学院。

我们不能只知道人家做了这件事,更要看这件事的内容是什么,要眼光面向全世界,要看清楚怎么去做,我们要去引领。

我就觉得这三件事情都是今年的,都是刚刚发生的事,所以这件事情上,我觉得美国还是清醒的,站在这个制高点,不能说我们人工智能计划已经很完美。

当然国内的布局也很快,这件事情应该说叫做“顺势而为,趁势而上”,但我们千万不要说吃了一碗面条,我们脑子就很聪明,好像不是那么回事,要懂得做全局优化。

我想再强调一下,人工智能、机器学习和深度学习我们内行人应该要搞清楚。现在当然说没有比深度学习更有效的机器学习的办法,人工智能当然要去做事,肯定得靠深度学习,因为你面对的是黑箱、不完全的数据,而且宏观上是大数据,微观上对问题来讲又是小样本。所以对于深度学习,我们内行人离不开他但也不要起哄。

在传统的体系结构下,机器学习和深度学习是什么?这个对话不在一个频道上。

有监督、无监督、半监督和强化的算法怎么用,要看是什么情况,我们自己做这个内行的人,千万不要说你那个能干什么,这个能干什么,用的场合和问题不一样,你可能在不同的场合,不同的任务,不同的问题需要用不同的方法去解决。

我现在就害怕大家陷入一个坑,我们再回到神经网络,最早1990年我出的书里神经网络的四个范式,反馈网络就是现在大家通常讲的网络,或者是递归反馈的。还有自组织网,以及没有体现的完全无监督的学习。

大数据就讲一句,我们所有处理的问题、深度学习的方法,机器学习的方法都一定是面向大数据的问题,但是单个问题拿到的又只是小样本,一定得记住这一点,这个意义上来讲,是大数据小样本再加学习,这件事情上我们一定要把它结合起来做。

面对大数据,面对海量数据,面对结构和非结构的数据,大部分深度神经网络是不可解释的、是黑箱的。

大数据处理的很多方法,同样是不可解释的,因为我们现在处理这些数据时只讲大、只讲海,但处理数据其实也是物理过程,应当像人的认知过程那样是有生物意义和物理意义的,这个层面上来讲,你把那两个意义丢掉了,拿一堆数据就玩、算法递归迭代,最后什么都不解释,人的经验、规则哪里去了呢?你没有用上。

我经常讲的,过马路的时候,对面有一个大美女,打了一个手机,还接了一个领导的电话,大车也穿过来了,旁边还有一个小偷跟着你,你怎么处理?肯定保命要紧,先过马路再说,人会分轻重缓急,而且是协同去做。

回过头来,我认为最初研究神经网络的几个人是要提的。

通过学习的概念,通过学习感知的思想,通过学习优化的思想,这个是神经网络的精髓。

然后在这个基础上再去做。中间需要把任务完成得好,就要优化去做这件事情。

所以说一定是学习、优化、协同、控制和数据结合的。

我的印象应该是在1988年Lippman的文章,所有神经网络做模式识别边界的分析,边界是那个时候划出来的。

大家第一次知道,非线性的问题变得如此简单。

那个时候才出来三层神经网络,但三层神经网络可以逼近任意函数,是理论上证明的,不是今天才做的。

之后结构的设计、算法的构造,使得方法变得更加有效、实用,离问题更近。

以前是数据不够、训练方法欠缺,同时人们的要求也没有那么迫切,硬件的运行也没有那么好。

而现在这四个条件,大概相对30年前已经有了巨大的改善,我第一次看神经网络大概是83年,那个时候在成都听加州大学伯克利分校的蔡少棠讲了学一个月,讲的非线性和混沌,那时因为客观条件所限,研究发展不像现在那么迅速,而大数据的出现是应景了,这两者是契合了。

这个意义上来讲,在具备了有利客观条件的今天,我们要把问题研究得更透彻,你怎么去进行感知、判断、决策,哪一个是决策者、哪一个是训练层、哪一个是推理层、哪一个是优化层得搞清楚了。

非线性的嵌套是有结构的。从简单的特征,到特征的表征,到特征的学习,特征的表征与学习,现在演变成特征的表征学习,神经网络的演化进程是有脉络、有逻辑的。

关于神经网络和专家系统,专家系统三个要点要记住:知识的表示,知识的学习,知识的推理。

早期推理知识的办法不多、表征的框架不多、手段不多。神经网络给了大家思想和方法,我希望大家记住对神经网络真正有贡献的是这些人:

43年Hebb规则和MP模型。1962年Widrow和他的学生提出了LMS。第一台PC机是他发明的,其算法奠定了自适应信号处理和自适应控制技术基础。这个是俄罗斯籍的斯坦福的教授,这个人记住,其貌不扬,我觉得大家都应该记住他Werbos,BP算法是他提出来的,1974年在哈佛大学拿博士学位的时候,就发表了一篇论文就没有论文了,但是博士学位是拿到了,真正的BP算法是他提出来的,使三层神经网络可学习。整个大概十几年的时间很红火,而且是自己也做过世界神经网络学会的主席和先驱,加州工学院Hopfield,三篇文章奠定了他的基础。

另外一个记住一个C.Mead,美国的三院院士,世界第一块神经网络的芯片是他做的,这个人在集成电路一直是明星,大家一定要记住这件事情,神经网络不仅是今天。

这个是芬兰皇家科学院的院长T.Kohonen教授,他来过很多回,提出了自组织特征映射网。径向基神经网络出自Billing手,因为他是用基函数来做这件事情,做控制的人全部是用的,很高效。

支撑向量机,这些都是神经网络模型,而且都是学习机,大家不要认为是完全跟神经网络没有关系,只是说那一阵跟神经网络“划清界限”。

浅层到深层的学习,大家要明白,本质性上改变的是什么?你说前面的网络浅,那在哪里深呢?规模深、特征深、还是机理深?还是怎么做的呢?我说理解深度的时候,我们要去做深在什么地方,对数据的匹配在哪些上面是做了本质性的突破和改变,这件事情上我们一定要去做的。

我还是把他们列在一起,你记住所谓深度大咖的时候,别忘了上面这些人,这些人是他们的祖师爷。

中国神经网络的发展也是有一个过程的。

我们一直不说,但是路一直在走。

简单的数据到了具体的对象,到了图像,从小波变换到了小波网络,从伸缩平移到了方向,到了图像旋转变换。

所以说包括从地上到了天上,到了空中机载的。对象在变,需求在变,神经网络也好,机器学习也好,方法也在不断的往前走。

所以我们是把这个结合起来在走。

刚才为什么说我希望讲一下这些道理,因为进化计算的第一篇文章,不叫人工智能,是优化和学习在走,包括免疫的学习优化,包括我们用到多目标上面去做,包括做协同的、量子的,而且用到了真正目标的识别上,我们都做了。

这个过程我们回过头来说,对于人工智能人才的培养,为什么我们心里面不太慌,经过了十四五年的实践和培养,反正我们也出了这些书,不敢说水平有多高,但是研究生,本科的教材是有参考的,我自己写的,我也在不断的更新。

我们几十本书,应了人才培养教材之需,去年就包括做量子的,光学的,红外的,包括到认知的,稀疏的,一直到高分辨遥感,老先生一定要改成雷达图像,我们一路走过来,今年完成的是量子计算,计算智能,简明人工智能等七八本,大概也有好几十万字。

计算智能还有模式识别,反正都是在50、60万字以上,还有自然计算的前沿,就是相当于深度学习的前沿,还有一个大数据智能挖掘的。

从第一代到第二代,一直到现在的第三代神经网络,变化在什么地方,本质在什么地方,做这件事情,我们一定要去。

第一个是卷积神经网络,我理解的跟别人理解的卷积神经网络不一样,很简单就是内积。然后在电路里面,在学习信息里面,很简单,怎么走?一卷不就出来了嘛,卷积的概念大家知道是从数字信号处理出来的概念,物理概念和描述很清楚。其实最开始的时候,卷积也不火,不像现在牛哄哄的。

递归神经网络,一定有联想记忆的。其实模式识别,以前叫做联想记忆,联想记忆学习优化。这四件事情,要是在神经网络里实现了,你的功能就比单纯的卷积去做要强大得多。所以递归同样是可以做这件事情。

深度置信网提供的思想一定要记住,我能够通过概率的判断做某件事情。我通过概率的判断和生成,能够使这个神经网络的构造性设计更加合理和有效。

这是置信网的贡献。其实现在更热的是贝叶斯网络学习。

贝叶斯的分布。分布完了以后,参数少。接下来就是可学习,这个参数我们可以学出来,学习关键的参数,那么这个分布就找到了,或者优化的分布就找到了。

实际上就是做了一个分布的估计。

贝叶斯的描述、表征,估计和深度结合起来,这是贝叶斯网络火起来最重要的原因。

很自然,大家好不容易抓住一个贝叶斯分布,而且可以去做。深度可以给你学,何乐而不为,大家一定要找到一个结合点才能做这件事情。

生成对抗网大家觉得是突破,相对传统的网络来讲,多了一个判别器。所以这个是不一样,而且是跟概率结合起来,大家觉得一人搞了一种。

我这么告诉你,有了卷积网,有了对抗网,你还要有新模型,千万不要觉得谁好用,谁不好用,这就是深度网络的全部。

那是你本事不高,你有本事弄一个深度神经网络模型出来,联想记忆,学习,优化还要到后面的推理,你把这些功能实现了,就像人一样,你的功能就强大了。

但是现在,为什么大家关注核心,是把感知和决策结合起来,通过概率,态势,估计和学习是有用的。这应该是非常有用的。

两件事情,浅层模块+堆栈理念就等于深度网络。

梯度不好的时候,结合一下,混合一下去做。都是不同的选择,也有不同的学习方式,不管怎么样,都是为了提高它的效率,这件事情大家去做,就不讲那么多了。但是,讲大数据。

第二个是过拟合。哪一个方法不过拟合。调参,哪一个方法不调参,你说缺乏可解释性,现有的机器学习方法,哪几个可解释,试试看。

你不能说他不解释,这个不弄,那个不说,多任务的时候,人人都做不了,大家都在同一个起跑线上,你要勇闯无人区,要做领头雁就做一个算法出来。

现在回想起来,我觉得还是有一些工作,小波SVM网络,用在小样本上,包括ridgelet网络,深度contourlet网络模型等,和利用免疫进行优化学习,量子进化学习,多智能体协同进化学习与多尺度稀疏理论学习框架等。

量子的免疫的,我刚才说的是两个学习进化,我们结合起来去做,可并行,可以非线性的表征和编码,这两件事情结合起来,量子优化也是这么去做。不是回到量子的器件,我们不做这事,但是思想是可以学的。

免疫优化学,相对传统的,我们多了免疫项,多了引导项,多了容错经验项,那么你的学习优化就不一样。

我们做了20万TSP和函数优化,做了千万级的皇后分类,后来我们这些结果,都是最好的结果,后来人们也不跟我们比了。

那么你做到了极限了,你试试看。

我能做的九个目标的优化问题,那么你去算算,这个东西就难。

我们做了大数据深度学习系统。

我跟大家说一个结果,12万×16万的图像,0.5的分辨率,57个G,2766条船,将近300架飞机,整幅图像处理我们在128秒之内全部检测分类出来。

人是怎么做的呢?刚才讲的人看、听、说、触觉,声音连接图像。

所有的声音的处理,输入,获取是人脑处理的基础。

那么从这个意义上来讲,它的共性是什么?

首先,它是稀疏性的,它是可学习的,是有选择的,同时是方向的。这四个是我们感知的基础,这不是我说的,这是生物上证明的。

从这个意义上讲,大家光拿一个卷积网,其实没有回过头来想它的生物基础是什么。谁能回答这个问题?或者有多少体现了。

这个也是到现在有将近20年的历程,生物上不断证明这件事情,而且喜欢看牛人,看大咖,一直到现在,证明了大脑中是存在的,所有的这些结果都是有的。

我们的方法做到了吗?我们的深度做到了吗?

我们一代深度神经网络,二代深度神经网络,三代深度神经网络怎么体现人脑做这些事呢?

从这个意义上来讲,你怎么去做稀疏感知,稀疏表征和稀疏学习。

我们成功研制了国内第一个压缩感知雷达,就是把稀疏感知和稀疏学习这两件事情结合起来。所以说你要观得见、要观得清、辨得明,而且还要理解得了。

从这个意义上来讲,不仅仅是场景的感知,而且是目标信息的感和知。昨天两位院士讲的成像的,知才是理解的过程。我刚才讲的模型,多小波也好,都做这件事情。

Wishart深度堆栈网络是我们提出来的,将这种物理特性是和神经网络结合起来,实现的结构网络,我们找到了 Wishart深度堆栈网络。

我们做的任务是极化SAR图像分类。

同样我们做了Wishart的DBN网络,做到了物理获取的机理,视觉的机理和脑处理的机理和结构的结合,构造了相应的深度神经网络。

深度神经网络一定是将物理的、生物的、数学的原理结合起来。当然你要更有效,还要在平台上去实现这件事情。

刘芳教授已经做了很多工作,毕业了很多学生。

做了哪件事情?语义深度网络。

我们现在都在语法上想对策,考虑了数据之间的关联特性,这是理解数据的基础,是推理决策的基础,也是深度学习必由之路。尤其是在星载的电磁波雷达的摄像机,装在卫星上去做。

这件事恰好是把物理的特性和生物的结合起来,我们结合了人是怎么理解的,人是通过语义、通过过程、通过数据之间的关联关系,而不仅仅是看数据多和少,要看数据之间的关联特性。

我们做到了在线表征,屈嵘老师做的超启发式学习优化,她的工作能够用在医院,车站,工厂。

深度神经网络还没有做这件事情,超启发式的学习算法和深度神经网络在哪里?应该是打开现在大数据小样本,人工智能大数据瓶颈问题的一把钥匙,期待大家去努力,有问题向屈教授请教。

这件事情上做到了,表征这件事情做得很好。

表征完了,找到了好的基函数。所以表征、滤波,函数和深度学习结合起来,就给出了深度的,张量的滤波,我们团队也在做深度,谁只拿卷积用用,这个稿子论文毕业都不行,出都出不了门,出了北门就是出了国门。

学术只有一个标准,那就是国际标准,不存在哈佛和MIT的标准之分。

从这个意义上来看,管他大咖,小咖,解决问题就是咖。从某种意义上来讲,误差小,结构要设计得好,能够实现得了,而且还能算得快。这件事情上是我们做深度的基础。

你不是要做嘛,那个算法是要上星上弹,在导弹上,卫星上装的,你载荷要小,怎么办?就要学得快,在线学习就得增量学习。

怎么去做?不仅是增量的,而且还能自表征的,把那些经验不断找回来,然后半监督的去学习。我们承担了国家自然基金的重大专项,完成了星载的在线处理,就是做的这件事情。

另外一个,是眼睛看的,脑子想的,还有眼睛怎么看的,脑子怎么想,那就是显著看的(注意看的)。选择注意的特征(看这个信息的时候,选择看的,注意看的,稀疏看的),然后脑子再去学它,跟生物结合起来。

不管是雷达上还是光学相机上。我们用了变化检测,显著检测,前面讲的所有的模型你去做。

有一个核心点,你一定能说出来,你的想法在哪里?你的目标在哪里?你是解决什么样的问题的,你是怎么样去提高的,你的生物意义在哪里。物理意义在哪里,结构上做了哪些变化,这个是怎么匹配的。多示例去做,特点在什么上面呢?不同的传感器获得像不一样,光学的,你的任务是多任务学习,你怎么去学的。

我们做的整个的方法,当时就是比别人的好,所以这个冠军就是我们。

这个方法,应该说物理生物、再将深度的思想结合起来,是我们做工作的基本出发点。然后匹配稀疏的,大数据的,小样本的问题。而且能够满足在线的,在轨的大数据的需要。

将学习和优化结合起来,多小波和多尺度的网络模型是我们自己提的。多小波的大概是30年前就提了这样的事情。协同进化优化学习,这是第一个国奖,解决了优化和学习的一些基础性的问题。

第二个找到了这些图像,需要表征,找到了这些特征,而且把中间的机理分析了,给出了重构的模型。

第三个国奖就是找到了怎么编码,怎么稀疏。而且优化了模型,求解了,一代二代三代做了。那好,这就是这三个国奖。

近五年拿的,都在人工智能领域。所以围绕的都是这样的问题去做的。

后来我们还是回过头来,这些东西国外才不给你。这个时候从眼睛,比如说大脑,第一件事情候院长我们做了。全世界第一个把眼睛装到大脑上,类脑别人没有做。而且看和理解同时做,我们全部变成铁块,变成了机箱。

第二个,刚才说的编码,这是探月的相机。只用很小的像素就可以成像,而且不失真。表征学习和应用,做这件事情。

后来就是人像到画像,画像到人像,然后再做识别。

警察很厉害,山东的,把这个家伙画出来了。全黑的,画出来了。我们把这个人找出来,章颖莹的冤屈得到了伸张,至少把这个坏家伙找到了。所以我们也是参与其中,应该说为祖国人民也做了一点事情。

刚才我说的东西就不说了。

应该说XX艘航母回港的时候,我们同时把它全部的像拿到了,视频也做了,把我们最新的算法,装在了我们自己的FPGA上,只有这样才能用。

我们团队,有三个长江学者创新团队,三个国家平台,六个省部级平台,有111国家创新引智基地,我们有一支队伍在做这个事情。

联合实验室有十几个。本科专业,05年开招,现在14届,今年招了249名,再加上58名转专业的同学,现在是四个人才能选一个过来,研究生招了240多人。

这么多年在人工智能领域做工作,这个专业叫智能科学与技术,是国家级特色专业,我们本科生培养了2千多人,研究生培养了2千多。拿奖拿到手软。拿不到冠军都不愿意说。

今年拿了两个国际的冠军。一个就是ECCV的无人机的竞赛。

给大家看一下。ECCV的无人机的竞赛的数据。

全部数据主办方给的,他们飞的。这个数据看那个羊在哪里?所有的羊都是一样的。这个是所有的车,遮挡的情况下,无处可逃。

这算法全是拿主办方的数据,在他们的机子上运行的。这是多目标的,你有多少目标,多少数据,都可以检测跟踪。

我们的无人机,给大家看我们飞的视频。这个是西安南二环实况,检测、跟踪、分类全部是实时的,还能把几何参数找出来。包括人,包括三轮车,所有的分类检测跟踪,有多少给多少,遮挡也能捣腾出来。

}
  • 1 深度神经网络通俗解释
  • 2 通用近似定理—万能神经网络
  • 3 神经网络模型变宽与变深
  • 4 神经网络加深的问题
  • 5 深度神经网络模型训练解决方案
    • 主流的滤波器剪枝(filter pruning)方法都是在第一轮训练完成之后用各种metrics(比如filter norm大小)直接剔除不那么重要的filters,并重新finetune模型以补偿剪枝过程中带来的性能损失。按soft pruning[1]的说法,这类剪枝方法应该叫hard pruning,也就是在训练之后强行将一部分filters剔除。

      • 取出每一个CNN的卷积核
      • 计算每个卷积核的所有权重之和大小
      • 设置一个阈值,比如为1
      • 如果这个卷积核的权重值和小于1则直接剔除掉
      • 最后生成新的model和网络文件

      这种方法可以瞬间减小你的model的尺寸,并且加快速度,因为你的计算量明显减小了,并且model中的卷积核的个数也少了,也就是说你总体的权重少了,剩下来的都是默认有用的卷积核或者权重,但是问题来了,就是精度会大大降低,因为这个也没告诉你怎么剪枝,具体每层每层之间怎么裁剪,只能不断尝试。对于channel,这边的channel就是某个卷积层通过乘以每个卷积核得到的那些feature 注意:前面一两层最好不剪枝,或者少量剪枝;和SSD有关联的层尽量不剪枝,或者少剪枝;剪枝之后一定要再训练,acc会上升一些,但是不要次数过多,会过拟合。

      量化就是将无限域的值转化为有限域离散值的过程。假设我们有一张灰度图像。量化(N级)就是将图像中的每个像素点的颜色用N份权重来表示。而二进制化只会给出图像的两个灰度级别(灰或非灰)。
      网络量化通过减少表示每个权重所需的比特数来压缩原始网络。量化限制了可用于我们内核中的不同权重数目。对于N个比特位,可以表示2的N次方个权重。我们的目的是修改内核中的权重只能取2的N次方个值。因此,低于四个比特位参数量化虽然准确率没有受到很大损失,但却很难表示权重。

      低秩分解的方法其实就是运用了矩阵分解和矩阵乘法的结合律。实际上就是把较大的卷积核分解为两个级联的行卷积核和列卷积核。常见的就是一个3×3的卷积层,替换为一个3×1的卷积层加上一个1×3的卷积核。
      低秩估计的方法的优势在于,没有改变基础运算的结构,不需要额外定义新的操作。分解后的网络仍是用卷积操作来实现的,所以其适用面比较广泛。分解方法多种多样,但一般分解后的网络都需要参数调优,以保证分解后网络模型的准确率。
      常见的低秩分解有:奇异值分解SVD、CP分解、Tucker分解、Tensor Train分解和Block Term分解等,用低秩矩阵近似原有权重矩阵。

      理想AI模型的目标不是拟合训练数据,而是学习如何泛化到新的数据。所以蒸馏的目标是让student学习到teacher的泛化能力,理论上得到的结果会比单纯拟合训练数据的student要好。另外,对于分类任务,如果soft targets的熵比hard targets高,那显然student会学习到更多的信息。
      模型蒸馏也叫知识蒸馏,是Hinton在NIPS2014提出了知识蒸馏(Knowledge Distillation)的概念,最基本的想法就是将大模型学习出来的知识作为先验,将先验知识传递到小规模的神经网络中,之后实际应用中部署小规模的神经网络。这样做有三点依据:

      • 大规模神经网络得到的类别预测包含了数据结构间的相似性;
      • 有了先验的小规模神经网络只需要很少的新场景数据就能够收敛;
      • Softmax函数随着温度变量(temperature)的升高分布更均匀。

      对于网络压缩和加速,模型蒸馏则直接设计了一个简单结构的小网络,那小网络的准确率怎么和大网络比呢?Hinton前辈提出了一个非常简单且有效的方法——网络蒸馏。主要思想是用预训练好的网络,是指通常结构较复杂,准确率较高的网络,来指导小网络的训练,并使小网络达到与复杂网络相近的准确率。大网络类比于老师,小网络类比于学生,老师经过漫长时间的“训练”摸索出一套适用于某个任务的方法,于是将方法提炼成“知识”传授给学生,帮助学生更快地学会处理相似的任务。整个思想中最大的难题在于如何有效地表达“知识”,并有效地指导小网络的训练。

}

algorithm),亦是人工智能领域的一个重要分支。从快速发展到实际应用,短短几年时间里,深度学习颠覆了语音识别、图像分类、文本理解等众多领域的算法设计思路,渐渐形成了一种从训练数据出发,经过一个端到端(end-to-end)的模型,然后直接输出得到最终结果的一种新模式。那么,深度学习有多深?学了究竟有几分?本文将带你领略深度学习高端范儿背后的方法与过程。

Artificial Intelligence,也就是人 工智能,就像长生不老和星际漫游一样,是人类最美好的梦想之一。虽然计算机技术已经取得了长足的进步,但是到目前为止,还没有一台电脑能产生“自我”的意识。

是的,在人类和大量现成数据的帮助下,电脑可以表现的十分强大,但是离开了这两者,它甚至都不能分辨一个喵星人和一个汪星人。

图灵(图灵,大家都知道吧。计算机和人工智能的鼻祖,分别对应于其著名的“图灵机”和“图灵测试”)在 1950 年的论文里,提出图灵试验的设想,即,隔墙对话,你将不知道与你谈话的,是人还是电脑。

这无疑给计算机,尤其是人工智能,预设了一个很高的期望值。但是半个世纪过去了,人工智能的进展,远远没有达到图灵试验的标准。这不仅让多年翘首以待的人们,心灰意冷,认为人工智能是忽悠,相关领域是“伪科学”。

但是自 2006 年以来,机器学习领域,取得了突破性的进展。图灵试验,至少不是那么可望而不可及了。至于技术手段,不仅仅依赖于云计算对大数据的并行处理能力,而且依赖于算法。这个算法就是,Deep Learning。借助于 Deep Learning 算法,人类终于找到了如何处理“抽象概念”这个亘古难题的方法。

2012年6月,《纽约报》披露了Google Brain项目,吸引了公众广泛关注。这个项目是由著名的斯坦福大学的机器学习教授Andrew Ng和在大规模计算机系统方面的世界顶尖专家JeffDean共同主导,用16000个CPU Core的并行计算平台训练一种称为“深度神经网络”(DNN,Deep Neural Networks)的机器学习模型(内部共有10亿个节点。这一网络自然是不能跟人类的神经网络相提并论的。

要知道,人脑中可是有150多亿个神经元,互相连接的节点也就是突触数更是如银河沙数。曾经有人估算过,如果将一个人的大脑中所有神经细胞的轴突和树突依次连接起来,拉成一根直线,可从地球连到月亮,再从月亮返回地球),在语音识别和图像识别等领域获得了巨大的成功。

项目负责人之一Andrew称:“我们没有像通常做的那样自己框定边界,而是直接把海量数据投放到算法中,让数据自己说话,系统会自动从数据中学习。”

另外一名负责人Jeff则说:“我们在训练的时候从来不会告诉机器说:'这是一只猫。’系统其实是自己发明或者领悟了“猫”的概念。”

2012年11月,微软在中国天津的一次活动上公开演示了一个全自动的同声传译系统,讲演者用英文演讲,后台的计算机一气呵成自动完成语音识别、英中机器翻译和中文语音合成,效果非常流畅。据报道,后面支撑的关键技术也是DNN,或者深度学习(DL,DeepLearning)。

2013年1月,在百度年会上,创始人兼CEO李彦宏高调宣布要成立百度研究院,其中第一个成立的就是“深度学习研究所”(IDL,Institue of Deep Learning)。

为什么拥有大数据的互联网公司争相投入大量资源研发深度学习技术。听起来感觉deeplearning很牛那样。那什么是deep learning?为什么有deep learning?它是怎么来的?又能干什么呢?目前存在哪些困难呢?

这些问题的简答都需要慢慢来。咱们先来了解下机器学习(人工智能的核心)的背景。

机器学习(Machine Learning)是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能的学科。机器能否像人类一样能具有学习能力呢?

1959年美国的塞缪尔(Samuel)设计了一个下棋程序,这个程序具有学习能力,它可以在不断的对弈中改善自己的棋艺。

4年后,这个程序战胜了设计者本人。又过了3年,这个程序战胜了美国一个保持8年之久的常胜不败的冠军。

这个程序向人们展示了机器学习的能力,提出了许多令人深思的社会问题与哲学问题(呵呵,人工智能正常的轨道没有很大的发展,这些什么哲学伦理啊倒发展的挺快。什么未来机器越来越像人,人越来越像机器啊。什么机器会反人类啊,ATM是开第一枪的啊等等。人类的思维无穷啊)。

机器学习虽然发展了几十年,但还是存在很多没有良好解决的问题:

例如图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐等等。目前我们通过机器学习去解决这些问题的思路都是这样的(以视觉感知为例子):

从开始的通过传感器(例如CMOS)来获得数据。然后经过预处理、特征提取、特征选择,再到推理、预测或者识别。最后一个部分,也就是机器学习的部分,绝大部分的工作是在这方面做的,也存在很多的paper和研究。

而中间的三部分,概括起来就是特征表达。良好的特征表达,对最终算法的准确性起了非常关键的作用,而且系统主要的计算和测试工作都耗在这一大部分。但,这块实际中一般都是人工完成的。靠人工提取特征。

截止现在,也出现了不少NB的特征(好的特征应具有不变性(大小、尺度和旋转等)和可区分性):例如Sift的出现,是局部图像特征描述子研究领域一项里程碑式的工作。

由于SIFT对尺度、旋转以及一定视角和光照变化等图像变化都具有不变性,并且SIFT具有很强的可区分性,的确让很多问题的解决变为可能。但它也不是万能的。

然而,手工地选取特征是一件非常费力、启发式(需要专业知识)的方法,能不能选取好很大程度上靠经验和运气,而且它的调节需要大量的时间。

既然手工选取特征不太好,那么能不能自动地学习一些特征呢?答案是能!Deep Learning就是用来干这个事情的,看它的一个别名UnsupervisedFeature Learning,就可以顾名思义了,Unsupervised的意思就是不要人参与特征的选取过程。

那它是怎么学习的呢?怎么知道哪些特征好哪些不好呢?我们说机器学习是一门专门研究计算机怎样模拟或实现人类的学习行为的学科。好,那我们人的视觉系统是怎么工作的呢?为什么在茫茫人海,芸芸众生,滚滚红尘中我们都可以找到另一个她(因为,你存在我深深的脑海里,我的梦里 我的心里 我的歌声里……)。

人脑那么NB,我们能不能参考人脑,模拟人脑呢?(好像和人脑扯上点关系的特征啊,算法啊,都不错,但不知道是不是人为强加的,为了使自己的作品变得神圣和高雅。) 近几十年以来,认知神经科学、生物学等等学科的发展,让我们对自己这个神秘的而又神奇的大脑不再那么的陌生。也给人工智能的发展推波助澜。

1981 年的诺贝尔医学奖,颁发给了 David Hubel(出生于加拿大的美国神经生物学家) 和TorstenWiesel,以及 Roger Sperry。前两位的主要贡献,是“发现了视觉系统的信息处理”:可视皮层是分级的:

我们看看他们做了什么。1958 年,DavidHubel 和Torsten Wiesel 在 JohnHopkins University,研究瞳孔区域与大脑皮层神经元的对应关系。他们在猫的后脑头骨上,开了一个3 毫米的小洞,向洞里插入电极,测量神经元的活跃程度。

然后,他们在小猫的眼前,展现各种形状、各种亮度的物体。并且,在展现每一件物体时,还改变物体放置的位置和角度。他们期望通过这个办法,让小猫瞳孔感受不同类型、不同强弱的刺激。

之所以做这个试验,目的是去证明一个猜测。位于后脑皮层的不同视觉神经元,与瞳孔所受刺激之间,存在某种对应关系。一旦瞳孔受到某一种刺激,后脑皮层的某一部分神经元就会活跃。

经历了很多天反复的枯燥的试验,同时牺牲了若干只可怜的小猫,David Hubel 和Torsten Wiesel 发现了一种被称为“方向选择性细胞(Orientation Selective Cell)”的神经元细胞。当瞳孔发现了眼前的物体的边缘,而且这个边缘指向某个方向时,这种神经元细胞就会活跃。

这个发现激发了人们对于神经系统的进一步思考。神经-中枢-大脑的工作过程,或许是一个不断迭代、不断抽象的过程。这里的关键词有两个,一个是抽象,一个是迭代。从原始信号,做低级抽象,逐渐向高级抽象迭代。人类的逻辑思维,经常使用高度抽象的概念。

例如,从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。

这个生理学的发现,促成了计算机人工智能,在四十年后的突破性发展。

总的来说,人的视觉系统的信息处理是分级的。从低级的V1区提取边缘特征,再到V2区的形状或者目标的部分等,再到更高层,整个目标、目标的行为等。也就是说高层的特征是低层特征的组合,从低层到高层的特征表示越来越抽象,越来越能表现语义或者意图。

而抽象层面越高,存在的可能猜测就越少,就越利于分类。例如,单词集合和句子的对应是多对一的,句子和语义的对应又是多对一的,语义和意图的对应还是多对一的,这是个层级体系。

敏感的人注意到关键词了:分层。而Deep learning的deep是不是就表示我存在多少层,也就是多深呢?没错。那Deep learning是如何借鉴这个过程的呢?毕竟是归于计算机来处理,面对的一个问题就是怎么对这个过程建模?

因为我们要学习的是特征的表达,那么关于特征,或者说关于这个层级特征,我们需要了解地更深入点。所以在说Deep Learning之前,我们有必要再啰嗦下特征(呵呵,实际上是看到那么好的对特征的解释,不放在这里有点可惜,所以就塞到这了)。

特征是机器学习系统的原材料,对最终模型的影响毋庸置疑。如果数据被很好的表达成了特征,通常线性模型就能达到满意的精度。那对于特征,我们需要考虑什么呢?

学习算法在一个什么粒度上的特征表示,才有能发挥作用-?就一个图片来说,像素级的特征根本没有价值。

例如下面的摩托车,从像素级别,根本得不到任何信息,其无法进行摩托车和非摩托车的区分。而如果特征是一个具有结构性(或者说有含义)的时候,比如是否具有车把手(handle),是否具有车轮(wheel),就很容易把摩托车和非摩托车区分,学习算法才能发挥作用。

既然像素级的特征表示方法没有作用,那怎样的表示才有用呢?

他们收集了很多黑白风景照片,从这些照片中,提取出400个小碎片,每个照片碎片的尺寸均为 16x16 像素,不妨把这400个碎片标记为 S[i], i = 0,.. 399。接下来,再从这些黑白风景照片中,随机提取另一个碎片,尺寸也是 16x16 像素,不妨把这个碎片标记为 T。

他们提出的问题是,如何从这400个碎片中,选取一组碎片,S[k], 通过叠加的办法,合成出一个新的碎片,而这个新的碎片,应当与随机选择的目标碎片 T,尽可能相似,同时,S[k] 的数量尽可能少。用数学的语言来描述,就是:

为解决这个问题,Bruno Olshausen和 David Field 发明了一个算法,稀疏编码(Sparse Coding)。稀疏编码是一个重复迭代的过程,每次迭代分两步:

经过几次迭代后,最佳的 S[k] 组合,被遴选出来了。令人惊奇的是,被选中的 S[k],基本上都是照片上不同物体的边缘线,这些线段形状相似,区别在于方向。Bruno Olshausen和 David Field 的算法结果,与 David Hubel 和Torsten Wiesel 的生理发现,不谋而合!

也就是说,复杂图形,往往由一些基本结构组成。比如下图:一个图可以通过用64种正交的edges(可以理解成正交的基本结构)来线性表示。比如样例的x可以用1-64个edges中的三个按照0.8,0.3,0.5的权重调和而成。而其他基本edge没有贡献,因此均为0 。

另外,大牛们还发现,不仅图像存在这个规律,声音也存在。他们从未标注的声音中发现了20种基本的声音结构,其余的声音可以由这20种基本结构合成。

小块的图形可以由基本edge构成,更结构化,更复杂的,具有概念性的图形如何表示呢?这就需要更高层次的特征表示,比如V2,V4。因此V1看像素级是像素级。V2看V1是像素级,这个是层次递进的,高层表达由底层表达的组合而成。专业点说就是基basis。

从文本来说,一个doc表示什么意思?我们描述一件事情,用什么来表示比较合适?用一个一个字嘛,我看不是,字就是像素级别了,起码应该是term,换句话说每个doc都由term构成,但这样表示概念的能力就够了嘛,可能也不够,需要再上一步,达到topic级,有了topic,再到doc就合理。但每个层次的数量差距很大,比如doc表示的概念->topic(千-万量级)->term(10万量级)->word(百万量级)。

一个人在看一个doc的时候,眼睛看到的是word,由这些word在大脑里自动切词形成term,在按照概念组织的方式,先验的学习,得到topic,然后再进行高层次的learning。

我们知道需要层次的特征构建,由浅入深,但每一层该有多少个特征呢?

任何一种方法,特征越多,给出的参考信息就越多,准确性会得到提升。但特征多意味着计算复杂,探索的空间大,可以用来训练的数据在每个特征上就会稀疏,都会带来各种问题,并不一定特征越多越好。

好了,到了这一步,终于可以聊到Deep learning了。上面我们聊到为什么会有Deep learning(让机器自动学习良好的特征,而免去人工选取过程。

还有参考人的分层视觉处理系统),我们得到一个结论就是Deep learning需要多层来获得更抽象的特征表达。那么多少层才合适呢?用什么架构来建模呢?怎么进行非监督训练呢?

O,如果输出O等于输入I,即输入I经过这个系统变化之后没有任何的信息损失(呵呵,大牛说,这是不可能的。信息论中有个“信息逐层丢失”的说法(信息处理不等式),设处理a信息得到b,再对b处理得到c,那么可以证明:a和c的互信息不会超过a和b的互信息。

这表明信息处理不会增加信息,大部分处理会丢失信息。当然了,如果丢掉的是没用的信息那多好啊),保持了不变,这意味着输入I经过每一层Si都没有任何的信息损失,即在任何一层Si,它都是原有信息(即输入I)的另外一种表示。

现在回到我们的主题Deep Learning,我们需要自动地学习特征,假设我们有一堆输入I(如一堆图像或者文本),假设我们设计了一个系统S(有n层),我们通过调整系统中参数,使得它的输出仍然是输入I,那么我们就可以自动地获取得到输入I的一系列层次特征,即S1,…, Sn。

对于深度学习来说,其思想就是对堆叠多个层,也就是说这一层的输出作为下一层的输入。通过这种方式,就可以实现对输入信息进行分级表达了。

另外,前面是假设输出严格地等于输入,这个限制太严格,我们可以略微地放松这个限制,例如我们只要使得输入与输出的差别尽可能地小即可,这个放松会导致另外一类不同的Deep Learning方法。上述就是Deep Learning的基本思想。

浅层学习是机器学习的第一次浪潮。

20世纪80年代末期,用于人工神经网络的反向传播算法(也叫Back Propagation算法或者BP算法)的发明,给机器学习带来了希望,掀起了基于统计模型的机器学习热潮。这个热潮一直持续到今天。

人们发现,利用BP算法可以让一个人工神经网络模型从大量训练样本中学习统计规律,从而对未知事件做预测。这种基于统计的机器学习方法比起过去基于人工规则的系统,在很多方面显出优越性。这个时候的人工神经网络,虽也被称作多层感知机(Multi-layer Perceptron),但实际是种只含有一层隐层节点的浅层模型。

20世纪90年代,各种各样的浅层机器学习模型相继被提出,例如支撑向量机(SVM,Support Vector Machines)、 Boosting、最大熵方法(如LR,Logistic Regression)等。这些模型的结构基本上可以看成带有一层隐层节点(如SVM、Boosting),或没有隐层节点(如LR)。

这些模型无论是在理论分析还是应用中都获得了巨大的成功。相比之下,由于理论分析的难度大,训练方法又需要很多经验和技巧,这个时期浅层人工神经网络反而相对沉寂。

深度学习是机器学习的第二次浪潮

2006年,加拿大多伦多大学教授、机器学习领域的泰斗Geoffrey Hinton和他的学生RuslanSalakhutdinov在《科学》上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮。

这篇文章有两个主要观点:

1)多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;

2)深度神经网络在训练上的难度,可以通过“逐层初始化”(layer-wise pre-training)来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的。

当前多数分类、回归等学习方法为浅层结构算法,其局限性在于有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定制约。

深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,表征输入数据分布式表示,并展现了强大的从少数样本集中学习数据集本质特征的能力。(多层的好处是可以用较少的参数表示复杂的函数)

深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。因此,“深度模型”是手段,“特征学习”是目的。

区别于传统的浅层学习,深度学习的不同在于:

1)强调了模型结构的深度,通常有5层、6层,甚至10多层的隐层节点;

2)明确突出了特征学习的重要性,也就是说,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易。

与人工规则构造特征的方法相比,利用大数据来学习特征,更能够刻画数据的丰富内在信息。

深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。深度学习是无监督学习的一种。

深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。

Deep learning本身算是machine learning的一个分支,简单可以理解为neural network的发展。大约二三十年前,neural network曾经是ML领域特别火热的一个方向,但是后来确慢慢淡出了,原因包括以下几个方面:

1)比较容易过拟合,参数比较难tune,而且需要不少trick;

2)训练速度比较慢,在层次比较少(小于等于3)的情况下效果并不比其它方法更优;

所以中间有大约20多年的时间,神经网络被关注很少,这段时间基本上是SVM和boosting算法的天下。但是,一个痴心的老先生Hinton,他坚持了下来,并最终(和其它人一起Bengio、Yann.lecun等)提成了一个实际可行的deep learning框架。

Deep learning与传统的神经网络之间有相同的地方也有很多不同。二者的相同在于deep learning采用了神经网络相似的分层结构,系统由包括输入层、隐层(多层)、输出层组成的多层网络,只有相邻层节点之间有连接,同一层以及跨层节点之间相互无连接,每一层可以看作是一个logistic regression模型;这种分层结构,是比较接近人类大脑的结构的。

而为了克服神经网络训练中的问题,DL采用了与神经网络很不同的训练机制。传统神经网络中,采用的是back propagation的方式进行,简单来讲就是采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前输出和label之间的差去改变前面各层的参数,直到收敛(整体是一个梯度下降法)。

而deep learning整体上是一个layer-wise的训练机制。这样做的原因是因为,如果采用back propagation的机制,对于一个deep network(7层以上),残差传播到最前面的层已经变得太小,出现所谓的gradient diffusion(梯度扩散)。这个问题我们接下来讨论。

BP算法作为传统训练多层网络的典型算法,实际上对仅含几层网络,该训练方法就已经很不理想。深度结构(涉及多个非线性处理单元层)非凸目标代价函数中普遍存在的局部最小是训练困难的主要来源。

(1)梯度越来越稀疏:从顶层越往下,误差校正信号越来越小;

(2)收敛到局部最小值:尤其是从远离最优区域开始的时候(随机值初始化会导致这种情况的发生);

(3)一般,我们只能用有标签的数据来训练:但大部分的数据是没标签的,而大脑可以从没有标签的的数据中学习;

如果对所有层同时训练,时间复杂度会太高;如果每次训练一层,偏差就会逐层传递。这会面临跟上面监督学习中相反的问题,会严重欠拟合(因为深度网络的神经元和参数太多了)。

2006年,hinton提出了在非监督数据上建立多层神经网络的一个有效方法,简单的说,分为两步,一是每次训练一层网络,二是调优,使原始表示x向上生成的高级表示r和该高级表示r向下生成的x'尽可能一致。方法是:

1)首先逐层构建单层神经元,这样每次都是训练一个单层网络。

2)当所有层训练完后,Hinton使用wake-sleep算法进行调优。

将除最顶层的其它层间的权重变为双向的,这样最顶层仍然是一个单层神经网络,而其它层则变为了图模型。向上的权重用于“认知”,向下的权重用于“生成”。然后使用Wake-Sleep算法调整所有的权重。让认知和生成达成一致,也就是保证生成的最顶层表示能够尽可能正确的复原底层的结点。

比如顶层的一个结点表示人脸,那么所有人脸的图像应该激活这个结点,并且这个结果向下生成的图像应该能够表现为一个大概的人脸图像。Wake-Sleep算法分为醒(wake)和睡(sleep)两个部分。

1)wake阶段:认知过程,通过外界的特征和向上的权重(认知权重)产生每一层的抽象表示(结点状态),并且使用梯度下降修改层间的下行权重(生成权重)。也就是“如果现实跟我想象的不一样,改变我的权重使得我想象的东西就是这样的”。

2)sleep阶段:生成过程,通过顶层表示(醒时学得的概念)和向下权重,生成底层的状态,同时修改层间向上的权重。也就是“如果梦中的景象不是我脑中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概念”。

1)使用自下上升非监督学习(就是从底层开始,一层一层的往顶层训练):

采用无标定数据(有标定数据也可)分层训练各层参数,这一步可以看作是一个无监督训练过程,是和传统神经网络区别最大的部分(这个过程可以看作是feature learning过程)

具体的,先用无标定数据训练第一层,训练时先学习第一层的参数(这一层可以看作是得到一个使得输出和输入差别最小的三层神经网络的隐层),由于模型capacity的限制以及稀疏性约束,使得得到的模型能够学习到数据本身的结构,从而得到比输入更具有表示能力的特征;在学习得到第n-1层后,将n-1层的输出作为第n层的输入,训练第n层,由此分别得到各层的参数;

2)自顶向下的监督学习(就是通过带标签的数据去训练,误差自顶向下传输,对网络进行微调):

基于第一步得到的各层参数进一步fine-tune整个多层模型的参数,这一步是一个有监督训练过程;第一步类似神经网络的随机初始化初值过程,由于DL的第一步不是随机初始化,而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够取得更好的效果;所以deep learning效果好很大程度上归功于第一步的feature learning过程。

Deep Learning最简单的一种方法是利用人工神经网络的特点,人工神经网络(ANN)本身就是具有层次结构的系统,如果给定一个神经网络,我们假设其输出与输入是相同的,然后训练调整其参数,得到每一层中的权重。

自然地,我们就得到了输入I的几种不同表示(每一层代表一种表示),这些表示就是特征。自动编码器就是一种尽可能复现输入信号的神经网络。为了实现这种复现,自动编码器就必须捕捉可以代表输入数据的最重要的因素,就像PCA那样,找到可以代表原信息的主要成分。

具体过程简单的说明如下:

1)给定无标签数据,用非监督学习学习特征:

在我们之前的神经网络中,如第一个图,我们输入的样本是有标签的,即(input, target),这样我们根据当前输出和target(label)之间的差去改变前面各层的参数,直到收敛。但现在我们只有无标签数据,也就是右边的图。那么这个误差怎么得到呢?

如上图,我们将input输入一个encoder编码器,就会得到一个code,这个code也就是输入的一个表示,那么我们怎么知道这个code表示的就是input呢?我们加一个decoder解码器,这时候decoder就会输出一个信息,那么如果输出的这个信息和一开始的输入信号input是很像的(理想情况下就是一样的),那很明显,我们就有理由相信这个code是靠谱的。

所以,我们就通过调整encoder和decoder的参数,使得重构误差最小,这时候我们就得到了输入input信号的第一个表示了,也就是编码code了。因为是无标签数据,所以误差的来源就是直接重构后与原输入相比得到。

2)通过编码器产生特征,然后训练下一层。这样逐层训练:

那上面我们就得到第一层的code,我们的重构误差最小让我们相信这个code就是原输入信号的良好表达了,或者牵强点说,它和原信号是一模一样的(表达不一样,反映的是一个东西)。

那第二层和第一层的训练方式就没有差别了,我们将第一层输出的code当成第二层的输入信号,同样最小化重构误差,就会得到第二层的参数,并且得到第二层输入的code,也就是原输入信息的第二个表达了。

其他层就同样的方法炮制就行了(训练这一层,前面层的参数都是固定的,并且他们的decoder已经没用了,都不需要了)。

经过上面的方法,我们就可以得到很多层了。至于需要多少层(或者深度需要多少,这个目前本身就没有一个科学的评价方法)需要自己试验调了。

每一层都会得到原始输入的不同的表达。当然了,我们觉得它是越抽象越好了,就像人的视觉系统一样。

到这里,这个AutoEncoder还不能用来分类数据,因为它还没有学习如何去连结一个输入和一个类。它只是学会了如何去重构或者复现它的输入而已。或者说,它只是学习获得了一个可以良好代表输入的特征,这个特征可以最大程度上代表原输入信号。

那么,为了实现分类,我们就可以在AutoEncoder的最顶的编码层添加一个分类器(例如罗杰斯特回归、SVM等),然后通过标准的多层神经网络的监督训练方法(梯度下降法)去训练。

也就是说,这时候,我们需要将最后层的特征code输入到最后的分类器,通过有标签样本,通过监督学习进行微调,这也分两种,一个是只调整分类器(黑色部分):

另一种:通过有标签样本,微调整个系统:(如果有足够多的数据,这个是最好的。end-to-end learning端对端学习)

一旦监督训练完成,这个网络就可以用来分类了。神经网络的最顶层可以作为一个线性分类器,然后我们可以用一个更好性能的分类器去取代它。

在研究中可以发现,如果在原有的特征中加入这些自动学习得到的特征可以大大提高精确度,甚至在分类问题中比目前最好的分类算法效果还要好!

AutoEncoder存在一些变体,这里简要介绍下两个:

当然,我们还可以继续加上一些约束条件得到新的Deep Learning方法,如:如果在AutoEncoder的基础上加上L1的Regularity限制(L1主要是约束每一层中的节点中大部分都要为0,只有少数不为0,这就是Sparse名字的来源),我们就可以得到Sparse AutoEncoder法。

如上图,其实就是限制每次得到的表达code尽量稀疏。因为稀疏的表达往往比其他的表达要有效(人脑好像也是这样的,某个输入只是刺激某些神经元,其他的大部分的神经元是受到抑制的)。

降噪自动编码器DA是在自动编码器的基础上,训练数据加入噪声,所以自动编码器必须学习去去除这种噪声而获得真正的没有被噪声污染过的输入。因此,这就迫使编码器去学习输入信号的更加鲁棒的表达,这也是它的泛化能力比一般编码器强的原因。DA可以通过梯度下降算法去训练。

如果我们把输出必须和输入相等的限制放松,同时利用线性代数中基的概念,即O = a1*Φ1 + a2*Φ2+….+ an*Φn, Φi是基,ai是系数,我们可以得到这样一个优化问题:

Min |I – O|,其中I表示输入,O表示输出。

通过求解这个最优化式子,我们可以求得系数ai和基Φi,这些系数和基就是输入的另外一种近似表达。

因此,它们可以用来表达输入I,这个过程也是自动学习得到的。如果我们在上述式子上加上L1的Regularity限制,得到:

这种方法被称为Sparse Coding。通俗的说,就是将一个信号表示为一组基的线性组合,而且要求只需要较少的几个基就可以将信号表示出来。“稀疏性”定义为:只有很少的几个非零元素或只有很少的几个远大于零的元素。

要求系数 ai 是稀疏的意思就是说:对于一组输入向量,我们只想有尽可能少的几个系数远大于零。选择使用具有稀疏性的分量来表示我们的输入数据是有原因的,因为绝大多数的感官数据,比如自然图像,可以被表示成少量基本元素的叠加,在图像中这些基本元素可以是面或者线。

同时,比如与初级视觉皮层的类比过程也因此得到了提升(人脑有大量的神经元,但对于某些图像或者边缘只有很少的神经元兴奋,其他都处于抑制状态)。

稀疏编码算法是一种无监督学习方法,它用来寻找一组“超完备”基向量来更高效地表示样本数据。虽然形如主成分分析技术(PCA)能使我们方便地找到一组“完备”基向量,但是这里我们想要做的是找到一组“超完备”基向量来表示输入向量(也就是说,基向量的个数比输入向量的维数要大)。

超完备基的好处是它们能更有效地找出隐含在输入数据内部的结构与模式。然而,对于超完备基来说,系数ai不再由输入向量唯一确定。因此,在稀疏编码算法中,我们另加了一个评判标准“稀疏性”来解决因超完备而导致的退化(degeneracy)问题。

我们可以按照上面的式子通过basis的线性组合得到,而sparse matrix就是a,下图中的a中有64个维度,其中非零项只有3个,故称“sparse”。

这里可能大家会有疑问,为什么把底层作为Edge Detector呢?上层又是什么呢?这里做个简单解释大家就会明白,之所以是Edge Detector是因为不同方向的Edge就能够描述出整幅图像,所以不同方向的Edge自然就是图像的basis了……而上一层的basis组合的结果,上上层又是上一层的组合basis……(就是上面第四部分的时候咱们说的那样)

1)Training阶段:给定一系列的样本图片[x1, x 2, …],我们需要学习得到一组基[Φ1, Φ2, …],也就是字典。

稀疏编码是k-means算法的变体,其训练过程也差不多(EM算法的思想:如果要优化的目标函数包含两个变量,如L(W, B),那么我们可以先固定W,调整B使得L最小,然后再固定B,调整W使L最小,这样迭代交替,不断将L推向最小值。

训练过程就是一个重复迭代的过程,按上面所说,我们交替的更改a和Φ使得下面这个目标函数最小。

a)固定字典Φ[k],然后调整a[k],使得上式,即目标函数最小(即解LASSO问题)。

b)然后固定住a [k],调整Φ [k],使得上式,即目标函数最小(即解凸QP问题)。

不断迭代,直至收敛。这样就可以得到一组可以良好表示这一系列x的基,也就是字典。

2)Coding阶段:给定一个新的图片x,由上面得到的字典,通过解一个LASSO问题得到稀疏向量a。这个稀疏向量就是这个输入向量x的一个稀疏表达了。

假设有一个二部图,每一层的节点之间没有链接,一层是可视层,即输入数据层(v),一层是隐藏层(h),如果假设所有的节点都是随机二值变量节点(只能取0或者1值),同时假设全概率分布p(v,h)满足Boltzmann 分布,我们称这个模型是Restricted BoltzmannMachine (RBM)。

下面我们来看看为什么它是Deep Learning方法。首先,这个模型因为是二部图,所以在已知v的情况下,所有的隐藏节点之间是条件独立的(因为节点之间不存在连接),即p(h|v)=p(h1|v)…p(hn|v)。

同理,在已知隐藏层h的情况下,所有的可视节点都是条件独立的。同时又由于所有的v和h满足Boltzmann 分布,因此,当输入v的时候,通过p(h|v) 可以得到隐藏层h,而得到隐藏层h之后,通过p(v|h)又能得到可视层,通过调整参数,我们就是要使得从隐藏层得到的可视层v1与原来的可视层v如果一样,那么得到的隐藏层就是可视层另外一种表达,因此隐藏层可以作为可视层输入数据的特征,所以它就是一种Deep Learning方法。

如何训练呢?也就是可视层节点和隐节点间的权值怎么确定呢?我们需要做一些数学分析。也就是模型了。

而某个组态的联合概率分布可以通过Boltzmann 分布(和这个组态的能量)来确定:

因为隐藏节点之间是条件独立的(因为节点之间不存在连接),即:

然后我们可以比较容易(对上式进行因子分解Factorizes)得到在给定可视层v的基础上,隐层第j个节点为1或者为0的概率:

同理,在给定隐层h的基础上,可视层第i个节点为1或者为0的概率也可以容易得到:

我们最大化以下对数似然函数(最大似然估计:对于某个概率模型,我们需要选择一个参数,让我们当前的观测样本的概率最大):

也就是对最大对数似然函数求导,就可以得到L最大时对应的参数W了。

如果,我们把隐藏层的层数增加,我们可以得到Deep Boltzmann Machine(DBM);如果我们在靠近可视层的部分使用贝叶斯信念网络(即有向图模型,当然这里依然限制层中节点之间没有链接),而在最远离可视层的部分使用Restricted Boltzmann Machine,我们可以得到DeepBelief Net(DBN)。

DBNs是一个概率生成模型,与传统的判别模型的神经网络相对,生成模型是建立一个观察数据和标签之间的联合分布,对P(Observation|Label)和 P(Label|Observation)都做了评估,而判别模型仅仅而已评估了后者,也就是P(Label|Observation)。对于在深度神经网络应用传统的BP算法的时候,DBNs遇到了以下问题:

(1)需要为训练提供一个有标签的样本集;

(3)不适当的参数选择会导致学习收敛于局部最优解。

DBNs由多个限制玻尔兹曼机(Restricted Boltzmann Machines)层组成,一个典型的神经网络类型如图三所示。这些网络被“限制”为一个可视层和一个隐层,层间存在连接,但层内的单元间不存在连接。隐层单元被训练去捕捉在可视层表现出来的高阶数据的相关性。

首先,先不考虑最顶构成一个联想记忆(associative memory)的两层,一个DBN的连接是通过自顶向下的生成权值来指导确定的,RBMs就像一个建筑块一样,相比传统和深度分层的sigmoid信念网络,它能易于连接权值的学习。

最开始的时候,通过一个非监督贪婪逐层方法去预训练获得生成模型的权值,非监督贪婪逐层方法被Hinton证明是有效的,并被其称为对比分歧(contrastive divergence)。

在这个训练阶段,在可视层会产生一个向量v,通过它将值传递到隐层。反过来,可视层的输入会被随机的选择,以尝试去重构原始的输入信号。最后,这些新的可视的神经元激活单元将前向传递重构隐层激活单元,获得h(在训练过程中,首先将可视向量值映射给隐单元;

然后可视单元由隐层单元重建;这些新可视单元再次映射给隐单元,这样就获取新的隐单元。执行这种反复步骤叫做吉布斯采样)。这些后退和前进的步骤就是我们熟悉的Gibbs采样,而隐层激活单元和可视层输入之间的相关性差别就作为权值更新的主要依据。

训练时间会显著的减少,因为只需要单个步骤就可以接近最大似然学习。增加进网络的每一层都会改进训练数据的对数概率,我们可以理解为越来越接近能量的真实表达。这个有意义的拓展,和无标签数据的使用,是任何一个深度学习应用的决定性的因素。

在最高两层,权值被连接到一起,这样更低层的输出将会提供一个参考的线索或者关联给顶层,这样顶层就会将其联系到它的记忆内容。而我们最关心的,最后想得到的就是判别性能,例如分类任务里面。

在预训练后,DBN可以通过利用带标签数据用BP算法去对判别性能做调整。在这里,一个标签集将被附加到顶层(推广联想记忆),通过一个自下向上的,学习到的识别权值获得一个网络的分类面。

这个性能会比单纯的BP算法训练的网络好。这可以很直观的解释,DBNs的BP算法只需要对权值参数空间进行一个局部的搜索,这相比前向神经网络来说,训练是要快的,而且收敛的时间也少。

DBNs的灵活性使得它的拓展比较容易。一个拓展就是卷积DBNs(Convolutional Deep Belief Networks(CDBNs))。DBNs并没有考虑到图像的2维结构信息,因为输入是简单的从一个图像矩阵一维向量化的。

而CDBNs就是考虑到了这个问题,它利用邻域像素的空域关系,通过一个称为卷积RBMs的模型区达到生成模型的变换不变性,而且可以容易得变换到高维图像。

DBNs并没有明确地处理对观察变量的时间联系的学习上,虽然目前已经有这方面的研究,例如堆叠时间RBMs,以此为推广,有序列学习的dubbed temporal convolutionmachines,这种序列学习的应用,给语音信号处理问题带来了一个让人激动的未来研究方向。

目前,和DBNs有关的研究包括堆叠自动编码器,它是通过用堆叠自动编码器来替换传统DBNs里面的RBMs。这就使得可以通过同样的规则来训练产生深度多层神经网络架构,但它缺少层的参数化的严格要求。

与DBNs不同,自动编码器使用判别模型,这样这个结构就很难采样输入采样空间,这就使得网络更难捕捉它的内部表达。但是,降噪自动编码器却能很好的避免这个问题,并且比传统的DBNs更优。它通过在训练过程添加随机的污染并堆叠产生场泛化性能。训练单一的降噪自动编码器的过程和RBMs训练生成模型的过程一样。

深度学习是关于自动学习要建模的数据的潜在(隐含)分布的多层(复杂)表达的算法。换句话来说,深度学习算法自动的提取分类需要的低层次或者高层次特征。

高层次特征,一是指该特征可以分级(层次)地依赖其他特征,例如:对于机器视觉,深度学习算法从原始图像去学习得到它的一个低层次表达,例如边缘检测器,小波滤波器等,然后在这些低层次表达的基础上再建立表达,例如这些低层次表达的线性或者非线性组合,然后重复这个过程,最后得到一个高层次的表达。

Deep learning能够得到更好地表示数据的feature,同时由于模型的层次、参数很多,capacity足够,因此,模型有能力表示大规模数据,所以对于图像、语音这种特征不明显(需要手工设计且很多没有直观物理含义)的问题,能够在大规模训练数据上取得更好的效果。

此外,从模式识别特征和分类器的角度,deep learning框架将feature和分类器结合到一个框架中,用数据去学习feature,在使用中减少了手工设计feature的巨大工作量(这是目前工业界工程师付出努力最多的方面),因此,不仅仅效果可以更好,而且,使用起来也有很多方便之处,因此,是十分值得关注的一套框架,每个做ML的人都应该关注了解一下。

当然,deep learning本身也不是完美的,也不是解决世间任何ML问题的利器,不应该被放大到一个无所不能的程度。

深度学习目前仍有大量工作需要研究。目前的关注点还是从机器学习的领域借鉴一些可以在深度学习使用的方法特别是降维领域。例如:目前一个工作就是稀疏编码,通过压缩感知理论对高维数据进行降维,使得非常少的元素的向量就可以精确的代表原来的高维信号。

另一个例子就是半监督流行学习,通过测量训练样本的相似性,将高维数据的这种相似性投影到低维空间。另外一个比较鼓舞人心的方向就是evolutionary programming approaches(遗传编程方法),它可以通过最小化工程能量去进行概念性自适应学习和改变核心架构。

Deep learning还有很多核心的问题需要解决:

(1)对于一个特定的框架,对于多少维的输入它可以表现得较优(如果是图像,可能是上百万维)?

(2)对捕捉短时或者长时间的时间依赖,哪种架构才是有效的?

(3)如何对于一个给定的深度学习架构,融合多种感知的信息?

(4)有什么正确的机理可以去增强一个给定的深度学习架构,以改进其鲁棒性和对扭曲和数据丢失的不变性?

(5)模型方面是否有其他更为有效且有理论依据的深度模型学习算法?

探索新的特征提取模型是值得深入研究的内容。此外有效的可并行训练算法也是值得研究的一个方向。当前基于最小批处理的随机梯度优化算法很难在多计算机中进行并行训练。

通常办法是利用图形处理单元加速学习过程。然而单个机器GPU对大规模数据识别或相似任务数据集并不适用。在深度学习应用拓展方面,如何合理充分利用深度学习在增强传统学习算法的性能仍是目前各领域的研究重点。

}

我要回帖

更多关于 神经网络算法的优缺点 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信