【钛坦白】地平线机器人罗恒:应用深度学习的门槛是在降低吗?

摘要: 哪些地方的门槛在降低?未来哪些地方可能形成新的门槛?

在钛媒体Pro专业用户和付费用户专享的“钛坦白”在线课堂第33期,我们再次请来三位钛客分享对机器学习的思考 。本期钛客之一、地平线机器人资深算法研究员罗恒,2011年博士毕业于上海交通大学,后师从于AI巨头Yoshua Bengio从事博士后研究。学习期间,在学术期刊与国际会议上发表多篇论文,并被大量引用。2014年加入百度深度学习实验室,参与深度学习在搜索中的应用、PaddlePaddle研发等工作。现任地平线模型压缩和加速方向负责人。

本文节选自罗恒在钛坦白的分享。如果您还不是钛媒体Pro用户,希望查看钛坦白所有干货,进入钛坦白九个专业群交流,并查看更丰富的专业数据和信息,可点击:http://www.tmtpost.com/pro 注册。

以下根据罗恒在钛坦白的分享实录整理:

大家晚上好,我是地平线机器人的罗恒,很高兴能来钛坦白和大家分享我对于应用深度学习的一些想法。

我所经历到的深度学习的复兴

我的博士是在上海交通大学念的,刚开始的时候其实并没有确定自己研究方向,只是对机器学习很感兴趣,看了很多机器学习方面的书和论文,最感兴趣的是“支持向量机”,感觉实际中有广泛应用,同时又有非常完善的理论,所以花了一定的精力在读相关的论文和书。看了一段时间之后,发现Vapnik似乎已经把所有他想要解决的问题都解决完了,很多识别的问题解决得不好,是由于没有专家设计出合理的核和函数,而这不是SVM或统计学习理论所关心的问题。当时看到这儿,感觉好像已经没什么工作可做了。

在这个时候看到了Yoshua Bengio写的一个关于深度学习的一个技术报告,觉得很有趣,因为角度完全不一样。SVM考虑的问题都是如何限制模型的复杂度,如何来增强模型的推广能力,而在Bengio的论文里讨论的都是如何学习数据的表示,他认为如果我们能够学习到关于数据的抽象表示,那么分类就会变得非常简单,也就是说我们不需要去用一个像知识像机那么复杂的分类器,可能一个简单的线性分类器就能实现我们的目标。

当时就觉得这个非常有潜力,这可能是一个全新的方向,那时候是2008年,关注神经网络、深度学习的人还比较少,我也从来没有想到过后来会有这样大的发展,当时觉得最大的可能也就是在学术界引起一波新的研究的热潮,想不到深度学习后来会被广泛应用到实际中,并且又一次引发了公众对于人工智能的关注。

开始做深度学习研究的时候,面临一个很大的困扰。别人问我在做什么,回答在做深度学习,那么下一个问题一定是“什么是深度学习”。甚至论文投出去有很多审稿人会觉得你怎么在做神经网络,这不都是已经很古老的东西了吗?没想到,过了短短的五六年之后,再去开会的时候,当有人问我在做什么方向,我回答说做深度学习的时候,往往换回来的回应都是“怎么又是在做深度学习”,那时候好像所有人都在做深度学习了。

好不容易发了几篇论文能够毕业了,一次开会正好遇见Yoshua Bengio,他正好在招博士后,就去了他那里做博士后。其实当时觉得自己博士毕业后很大可能是去学术界,想先做博士后,回国找个学校教书。

做了两年博士后之后,突然发现深度学习已经变得非常火爆了,不但是在学术界引起了非常大的轰动,甚至在工业界也开始有很多人关注起来,甚至很多深度学习的应用都已经被应用到了工业系统里边。所以2014年初离开加拿大回国,一方面很好奇工业界用深度学习到底怎么样,想来看一看,另一方面也是学术界的工作其实不是太好找,工业界反倒工作很多,所以就加入了百度IDL深度学习研究院。在百度实际上就是做一些应用深度学习到搜索系统中的工作,也参与了Paddlepaddle开发,周一的时候于洋已经介绍了Paddlepaddle的一些情况(相关文章:http://www.tmtpost.com/2584884.html),我和于洋认识好久了。

去年加入了地平线机器人,现在在地平线机器人做一些模型压缩方面的工作,我们的想法就是希望能够把硬件、芯片、算法到应用场景打通,把它们放在一起联合优化,其实这个也就好象做深度学习总是喜欢端到端来进行,end to end来训练模型。我们希望能够把从应用场景中的需求一直传递到软件,传递到算法,传递到硬件,传递到芯片,能够把它放在一起联合优化。

AI的泡沫

先简单回顾下深度学习的发展。深度学习是源于上世纪60年代开始神经网络进一步的发展,它现在在机器视觉、自然语言理解、一些工业级的应用都产生了巨大的影响。近来还慢慢出现了一些受深度学习启发的新应用方向,比如医疗图像分析、自动驾驶。国内的情况是,自从百度在2013年的时候创建了深度学习研究院,这些年来一些大公司也都开始有一些部门从事深度学习相关的研究工作。

真正引起人工智能火爆的是去年出现的AlphaGo。一方面,我本人也下围棋,当然我是普通的业余爱好者的水平,另外一方面,我自己也做机器学习,因此也常常会关注这方面的进展,但是其实在AlphaGo出现之前,总觉得电脑击败人类顶尖棋手是一个非常遥远的事情。

我在大概2011年、2012年的时候,看到过Hinton的学生发表的一篇论文,里面开始用卷积神经网络来处理棋谱,把棋谱当成一张图片输入卷积神经网络,然后去预测下一步的位置。那篇论文估计也只是两个学生的游戏之作,发表在不是很著名的会议上。我当时觉得这个想法很有意思,因为其实从下棋人的角度,很多时候他就是凭着大致的一个感觉,并没有很多的计算,只是对棋的形状的一种感觉,常常可以做出一些直觉上的判断,而且很多时候这种判断还比较准。

但是只是对棋行的把握是远远不够的。所以当我听说DeepMind在做围棋的时候,就觉得可能会有突破(从本质上讲,围棋和DeepMind之前做的那些打游戏的任务,并没有什么不同)。听说能够赢了樊辉(职业棋手)当时就觉得很震惊了,以往的围棋软件大概只能到业余棋手的水平,而业余棋手到职业棋手往往有一条非常巨大的难以跨越的鸿沟。而很快,AlphaGo就击败了李世石。李世石是大概十多年才一出的天才,从樊辉到李世石,这中间其实也有一条非常大的鸿沟。让人没有想到的是,对于AlphaGo来说,似乎这两条巨大的鸿沟都不存在,只是不停的去训练,机器就不断的提升,轻松击败人类的天才,带领人类看到前所未见的围棋新境界。这当时对我是很大的震撼,而且从后来来看,其实对整个世界都有巨大的震撼。

AlphaGo一定会成为人工智能史上的里程碑,但是这并不意味着AI会迅速到来。现在对于AI的火爆关注,里面存在相当的泡沫。更何况,目前AlphaGo本身的细节其实只有DeepMind的少数人知道,前两天田渊栋来地平线访问也聊起过这个,他遇到黄士杰,聊起了他们新的进展。黄士杰的讲法就是在Nature论文之后,又做了很大的改进,那么这很可能意味着沿着Nature那篇论文继续往下做会遇到瓶颈。而且从应用AlphaGo的角度,如何应用到实际问题,会有什么样的商业模式,都是完全不确定的。所以我个人怀疑现在的这种火爆的场面里面有相当的泡沫的成份存在。

这些泡沫造成什么样的影响呢?从去年到今年,出现了大量的AI相关的创业公司,然后突然之间做算法的,无论是做机器视觉、自然语言理解、语音识别,还是深度学习算法,突然出现了很多的高薪职位,然后不断传出新毕业的学生拿到了如何如何的高薪。除此之外,很多大公司也在纷纷的成立AI相关的部门、相关的研究院等等。

这次钛坦白课程的题目是大概一个月前确定的,当时只是想讲一些个人的看法,然后就很巧,前两天迅雷的创始人陈浩写了一篇文章,也讨论了一些AI创业公司的事,还挺有意思的。他其中就提到了现在的很多AI的创业公司大多是由有技术背景甚至是研究背景的创始人创立的,都有很强的技术,但是对于应用场景、商业模式的考虑都很少,而且往往是有点拿着锤子找钉子的感觉。

应用深度学习的门槛是在降低吗?

从我的角度和我的感觉来说,是的,应用深度学习的门槛是在降低,而且是在非常迅速的在降低。但是随着深度学习的进一步应用,可能会形成一些新的门槛。

说到职位的薪水,实际上在过去一二十年,编程人员也就是码农都有很高的薪水,相对于社会其他的职位来说。为什么码农能够有比较高的薪水,一方面当然是从个人计算机到互联网时代新的市场的出现,然后产生了很多超额利润的公司,但是另外一方面也是在于程序员本身就是在不断的自动化一些事情,不断地提高生产效率。程序员写了软件,即使程序员下班了这个软件其实还在工作,还在为公司挣钱,而不像传统工人,当他休息的时候机器也就休息了。

从这个角度来说,深度学习以及神经网络从诞生的开始就一直是在试图减少人的工作,使本来需要人的工作可以交由机器自动完成。

下面我先简单回顾一下神经网络的历史。上个世纪的60年代开始出现了感知器,当时的感知器就是一个单层神经网络,它的输入实际上是需要专家来设计的特征,这个感知器起的基本上就是一个分类器的作用,试图取代的就是人利用特征分类。目标就是将一个完整的识别任务拆成两部分,专家设计好特征,这些特征是对分类有帮助的,然后我们给感知器数据,感知器能够自动的去找到特征和类别之间的关系,最后自动化的进行分类。上个世纪的90年代,出现了多层感知器(由于反向传播算法的出现),使得我们能够训练带有隐藏层的感知器,那么这个时候的神经网络就已经能够开始学习一些简单的特征了,依赖专家的程度开始减少。从2006年到现在,随着最开始的非监督预训练以及后来大量的带标签的数据,还有一些神经网络的新的方法,深度学习开始能够自动的学习越来越复杂的特征,同时比较好的完成分类识别。领域专家设计特征在构造分类器的过程中消失了。

最近一段时间李开复老师经常会讲,人工智能要到来了,未来很多职业将会消失,很多一些简单的重复性的工作将会被人工智能取代。开复老师讲的是未来的事情,是对未来的一些展望。我在这里就讲讲过去的事情,已经发生了的人被机器取代。从深度学习诞生到现在,已经取代了很多人的工作,而这些人都是一些专家,他们从事的都是一些相对高技术的工作。

刚才讲到了开始的时候,神经网络的最初的形态感知器需要专家来设计特征,然后把特征交给神经网络,然后神经网络才决定如何来进行分类。那么随着深度学习的发展,其实已经取代了很多的专家,大家可能没有很意识到,我这里就讲几个方面:首先就是机器视觉方面的一些专家,在深度学习出现以前,可能大量的机器视觉的研究人员,他们想方设法都是在设计各种各样的特征,然后利用这些特征再去完成一个复杂的机器视觉的任务,如何去设计合理的特征,往往需要非常多的经验,甚至需要天赋在里面,而即使是设计好了很好的特征,当应用到一个新的场景的时候,往往需要做很多新的设计才能够在新的场景下做得比较好。那么在深度学习出现之后,现在如果大家再去看一看新的机器视觉的文章,像这些设计特征的文章的数目已经变得非常的少了,而大量的都是使用神经网络,使用深度学习方法,从数据中学习特征,那么这其实就降低了机器视觉使用的门槛,也实际上取代了这部分人的工作。由于深度学习的出现,之前的那些需要高超技巧的特征设计专家被取代了,现在只需要大量不需要太多技巧的数据标注人员,加上少量的有一些深度学习算法经验的人员。并且随着深度学习的进展,无论是对标注人员还是深度学习算法人员的需求也在下降。

另外一个例子,就是广告推荐系统。之前的这些系统也是依赖很多专家来设计各种各样的特征,甚至一个好的广告推荐系统,完全取决于特征工程做得如何。做特征工程的专家往往需要很强的统计、机器学习背景,同时又对业务逻辑、系统有深刻的理解。但是随着深度学习的出现,大量的公司现在有个趋势,就是使用神经网络,利用用户的点击数据,就能得到非常好的结果,远远超出了通过搞特征工程,加上一些线性模型的结果。

所以我想说的是,深度学习的出现,甚至人工智能的出现,可能并不是如大家所想象的那样,先去取代那些简单的重复性的劳动,而很有可能一开始就是要取代那些专家。无论是十年一出的围棋天才,还是受过高等教育有着丰富经验的研究人员。

最后是一个正在发生的例子,从去年到今年开始有很多的医疗图像分析的公司出现,这些公司收集了大量的数据,这些数据里就体现着很多不同的领域医生的知识,体现着大量不同病情的表现,通过深度学习方法,这些公司都在努力从这些数据中学习这些知识。目前他们已经取得了一些成功,未来很可能在医疗图像分析领域机器会做得比人更好,这些机器不知疲倦、不会犯错,自然会取代一部分人的工作。

回到深度学习本身,随着深度学习的进一步发展,也会减少现在算法人员的工作。而这个其实就是整个学术界还有工业界从事深度学习的人每天的努力的方向。大家每天的工作其实就是如何使自己的工作能够变得更加的简单,更加的高效,更少人的干预,也就是说由于这些最优秀的算法人员的努力,使得应用深度学习变得越来越容易,越来越简单。

应用深度学习的哪些门槛在慢慢消失呢?首先是开发的门槛现在基本消失了,像我刚开始做深度学习研究的时候,代码都要自己写,我是在Matlab下面做实验,有的时候如何使用Matlab也需要很多的技巧才能使得程序高效起来。而现在这些全部都不是问题了,当你需要应用深度学习的时候,不需要了解各种算法实现的细节,也不需要担心性能的优化,甚至不需要担心编程语言,像比如说MXnet、TensorFlow还有Paddlepaddle都能支持各种各样的语言的接口,你可以用你喜欢的语言做非常简单的高层的、高效的深度学习应用的开发,而把后面的优化、性能交给专家去考虑。同时,深度学习是一个非常开放的学术圈,大家都非常乐意公开论文实验的代码,往往一篇论文一出来,谁都可以利用他的代码来完美的复现实验,迅速地站上巨人的肩膀。深度学习系统的开发的门槛现在已经基本消失了。

另外一个门槛过去网上讨论的也很多,就是所谓的调参,这个的门槛现在也在消失之中,深度学习曾经充满了各种各样的小技巧,为什么说是技巧呢?因为它从理论上讲不清,同时有时候有效有时候没有效,而何时应用又往往需要依赖于使用者的经验。不知道大家有没有看过《Neural Networks: Tricks of the trade》,这本书就是专门讲神经网络的一些训练的技巧的,这本书出版过两次,一次是1998年,那个时候是神经网络上一次火爆刚要结束的时候,还有一次是2012年,这是深度学习神经网络又一次兴起的时候。

当年一篇论文出来,一个新的结果出来,别人想复现都非常困难,因为这里面牵扯着不同的代码实现,还有大量的超参数,有时候是作者有意回避,有时候也是限于论文的篇幅,很难事无巨细的把所有的实现的细节都讲进去,甚至有时候有些作者都没有意识到真正起作用的东西可能就是在他忽略的一些细节里面。如今随着一些Batch Normalization、Adam之类的新技术出现,训练神经网络变得非常的容易。大概在我刚开始做深度学习的时候,那个时候一批新的数据,一个新的模型往往要折磨好久才能够有结果,而现在随着使用这些新的技术,我花在调参上的时间已经微乎其微了。

最近几年,深度学习的一些进展,比如说在ImageNet上的一些突破,其实就是在于一些新的网络结构的设计,而且在实践中大家也发现,除了数据之外,一个合理的设计良好的网络,往往能够带来很大的收益。这个情况现在也正在慢慢的改变,首先就是网络结构在慢慢的固定,大家可以发现,近一年来,已经没有太大的新的结构、新的突破出现了,基本上大家就会使用ResNet,其实表现的都很好,此外,似乎这些网络也都有一定的普适性,也就是说尽管这些网络都是针对ImageNet设计的,但是实际上在其他的一些数据集上,在其他一些视觉任务上表现的都不错,另外一个好处就是这些网络在各种的开源平台上都有实现,而且有相应的实验的结果,大家非常方便的可以拿来改造、复用。

深度学习可能出现的一些新的门槛

我认为深度学习在将来可能出现的新门槛有四个:

1、利用模型Debug数据。现在所有的模型的行为基本依赖背后的数据,基本上是你给他什么样的数据,他就记住什么样的规则,也就是说如果数据中有问题,模型也会把这些问题都记住。所以如何使用模型来对数据做Debug,发现数据中的偏差,能够纠正数据,这可能是一个新的门槛,也可能是大家新的努力的方向。

2、针对不同的计算平台,优化模型。和过去不一样,过去可能我们只是让模型跑在GPU上,或者跑在CPU上就很好,在未来可能需要把模型跑在各种各样非常不同的计算平台上,如何针对这些平台来优化模型,可能就会有很多新的方向出现,这也可能会形成一些门槛。

下面这张图横轴表示相应网络的计算的次数,纵轴是在ImageNet上Top-1的准确率,圈大圈小就表示模型的参数的量。大家可以看到,总体的规律是随着计算量的增加,随着模型的变大,结果会越来越好,但是从这里也可以看出来,这里面有非常多的折中,也就是有时候可以用存储换性能,有时候可以用计算换性能,如果是在不同的平台上去训练使用,可能会带来一些新的网络设计方面的问题。另外在这张图上没有表现出来,就是不同的结构又是有相同的准确率,但是收敛的情况会有不同,对于一些对训练时间敏感的任务这些也需要考虑。

3、利用模型提升标注效率。这些年随着AI公司的出现,还有这些大公司开始使用深度学习,需要大量的标注数据,从而出现了一批数据标注公司,目前的标注方式效率其实很低,大量使用人工,未来随着对数据的进一步需求,这部分成本会凸显出来。如何使用模型提升标注效率,甚至比如说未来能够和Active learning结合,如何让模型去选择最需要标注的那部分数据来标注,这当然也是一个问题。此外现在也有一些利用GAN来能简化标注过程,可能也是一个新的方向。

4、持续优化一个复杂的系统。随着深度学习使用的越来越多,未来可能我们会面临一些复杂系统,比如像现在的一些搜索系统,一些广告系统,甚至未来的自动驾驶系统、辅助驾驶系统,这里面都可能包含了大量的基于规则的决策过程,也包含了大量的深度学习的模型。这些模型的背后,刚才已经提到过了,就是模型的行为模式实际上都是依赖于他背后的数据,这个里面实际上就存在一些问题,也就是说理想情况下,我们去做一个复杂系统,我们需要每个模块之间的耦合比较小,每个单一的模块我们都能够对他进行抽象,我们能够方便的测试他,而现在每一个模块背后可能是非常多的数据,然后可能是很多训练的超参数,如何能够去测试、评估、优化这样一个复杂系统,可能也会带来新的门槛。

此外一个新的复杂系统,这个系统的组件依赖于数据,这个系统当投入到使用之中,他会改变用户、外界环境的行为模式,从而改变数据,而这个系统又是建立在数据之上的,所以会产生各种各样的反馈的形式出现。那么如何能够在这种情况下,持续优化这个复杂系统,可能也会形成新的门槛。

钛坦白群友互动:

1、罗博士,目前的深度学习检测、跟踪对小目标是不是存在天然性的缺陷,该怎么解决?

罗恒:我不觉得深度学习检测追踪对小目标有什么天然性的缺陷,我觉得人本身看小目标也会有困难,我相信可能对于这些长远的来看还是需要对于场景的理解,就是对于人来说,人很多时候,小的东西他看不清,但是他依赖环境,他能够大概或者对于这个世界的知识他能够揣测这大致是一个什么东西。

2、罗博士,我刚刚在paddle的docker内跑了一下个性化推荐的demo,结合现在K8S的大规模应用,基于docker的这种AI框架是不是会有更多的应用优势?

罗恒:关于Docker,关于Paddle,还是要请于洋来回答了。

于洋:谢谢罗博士引荐,Docker或者K8S应该不只是会在AI领域里面有深远影响,目前来看应该会在各种各样的应用里,比如web应用,都会有广泛影响。这看起来是目前发展的趋势。相对于之前用hadoop搭一个hadoop集群,用web搭一个ngnix集群,用Docker和K8S是明显的进步。目前主要的公有云平台都是直接支持K8S的。

3、请教罗博士,像是一些小数据集调参基本上靠Trick,大数据集调参数基本上都是欠拟合。那调参数本身是不是变得没啥价值了?如果是您的话,有哪几个调参秘籍是必须要尝试的,哪些东西是可以忽略的?

罗恒:其实现在调参变得很好,基本上有了我今天提到那些新的技术的话,我觉得如果不是牵扯到网络结构改变的话,好像没有什么参数需要调了。

关于欠拟合这是比较大的问题,其实首先目前我们用到的神经网络的容量其实是很大的,那么如何很好的利用这个容量,这确实是一个问题,所以现在有很多做模型压缩方面的工作,其实就是如何充分利用模型的容量。但是回到现实的问题中说,很多时候所谓的欠拟合,可能不见得是真正的欠拟合,我的理解欠拟合就是拟合得不够好,我怀疑,这些欠拟合多半是数据中本身有自相矛盾的地方,所以模型左右振荡左右振荡,所以总是表现欠拟合,所以最好的办法还是先去查查训练数据是不是有我说的这些互相矛盾的。

4、不过看来看去,我还是觉得调参这个事情比较复杂。有没有什么方法论可以推荐?

罗恒:说实话现在真的感觉调参越来越不重要了。其实之前在百度的时候,对于这种比较稀疏的,然后分布非常不均匀的长尾的数据adagrad就运行得很好,其实我调来调去也没有觉得有什么东西比adagrad更好。至于图像,batch norm加上adam 就很好用。

其实没什么方法可推荐,就是动手试一试,总有一个短暂的痛苦的过程,多试几个之后,就会发现没什么太多东西需要调。

5、谢谢罗恒博士的精彩分享,您博士后的找工作经历让人觉得非常亲切。在分享的开始,你提到了AI泡沫和几年后众多深度学习的人才找工作的可能性。对于那些想涉足深度学习的学生和企业,您有什么好的建议吗?

罗恒:我也说不好有什么建议,我感觉无论是想从事深度学习哪方面的工作,其实最简单还是要自己动手,无论是动手做些实验还是动手写写东西,但是我觉得最关键的还是不断要问自己做的这个东西到底有什么用。

(本文独家首发钛媒体,根据地平线机器人资深算法研究员罗恒博士在钛坦白上的分享整理)

……………………………………

钛坦白第33期,AI已来之机器学习2,三晚上的分享已经结束了

干货会陆续发布:http://www.tmtpost.com/tag/1508094

钛坦白第34期预告:二手“大”市场

孔夫子旧书网创始人、回收宝合伙人、转转公司3C事业部总经理,将带来精彩分享~

地点:钛坦白|文娱社交(微信群)

报名听课、交流:

钛坦白目前有医疗健康、人工智能、文娱社交、VR/AR、区块链、支付创新、体育、云计算、SaaS等九个专业群。

1、钛媒体Pro专业版用户,可以点击链接http://www.tmtpost.com/pro,登录账号,在线免费、任意选择自己要进入的群,按提示操作;

2、非钛媒体Pro专业版用户,可以添加微信号taitanbai0,在通过好友后,发99元红包给小钛,你将有权利从九个群中任选一个群进入,长期听课、交流。请告诉小钛你要进入哪一个群,然后等待小钛拉你入群~

推荐钛客、赞助、合作:

请与钛坦白负责人佳音联系,邮箱jiayinge@tmtpost.com

更多精彩内容,关注钛媒体微信号(ID:taimeiti),或者下载钛媒体App

本文系钛媒体原创,未经授权不得使用,如需获取转载授权,请点击这里
分享到:

第一时间获取TMT行业新鲜资讯和深度商业分析,请在微信公众账号中搜索「钛媒体」或者「taimeiti」,或用手机扫描左方二维码,即可获得钛媒体每日精华内容推送和最优搜索体验,并参与编辑活动。

佳音
佳音

钛媒体资深运营编辑、微信社群运营总监,jiayinge@tmtpost.com。个人微信公号“空谷低语”

评论(1

  • 孟聪 孟聪 2017-04-19 07:47 via iphone

    流程

    0
    0
    回复

Oh! no

您是否确认要删除该条评论吗?

分享到微信朋友圈