原文:https://mp.weixin.qq.com/s/C5Xq2P5v3lGmFOivJ_PTzw
在4月15日举行的2018京东人工智能创新峰会上,①京东集团副总裁、AI平台与研究部负责人周伯文揭开了京东技术布局下的 AI 战略全景图,概括起来说就是“三大主体、七大应用场景和五个人工智能产业化的布局方向”,即:以 AI 开放平台、AI 基础研究、AI 商业创新三个主体,通过产学研相结合,高端人才培养,以及核心人才引进打造科技能力,将 AI 用于金融科技、智慧物流、智能消费、智能供应、对外赋能;②南京大学计算机系主任、人工智能学院院长周志华教授进行了题为《关于深度学习的思考》的主题演讲。周志华教授提出,人工智能时代最缺的就是人才,因为对这个行业来说,你有多好的人才,才可能有多好的人工智能。
周志华教授《关于深度学习的思考》的主题演讲从深度学习的理论基础说起,从模型复杂度的角度探讨了“深度神经网络为什么深”的问题,提出深度学习在有很多成功应用的同时,也存在调参困难、可重复性差等问题,在很多任务上并不是最好的选择。因此,探索深度神经网络之外的模型是很重要的挑战。
以下是周志华教授的演讲内容(摘要):
1. 什么是深度学习?
深度学习的理论基础尚不清楚。
我想大多数人的答案,就是深度学习差不多就等于深度神经网络。著名学会SIAM(国际工业与应用数学学会)的旗舰报纸SIAM news说深度学习是机器学习中使用深度神经网络的的子领域(所以如果我们要谈深度学习的话,是绕不开深度神经网络的)。
首先我们必须从神经网络说起。神经网络其实并不是一个新生事物,在人工智能领域已经研究了超过半个世纪。一般我们会用中间有一个隐层,或者有两个隐层的神经网络,其中,每一个单元是个非常简单的计算模型,由此组成一个系统。
今天的深度神经网络,简单来说,是指用很多层的神经网络。在 2012 年深度学习刚刚开始受到大家重视的时候,那时候 ImageNet竞赛的冠军是用了8层的神经网络,2015年是152层,2016年是 1207层。这是个非常庞大非常巨大的系统,把这么一个系统训练出来,难度是非常大的。神经网络里面的计算单元,最重要的激活函数是连续的、可微的,如sigmoid函数、ReLu函数或者它的变体。这使得我们可以容易地进行梯度计算,利用著名的BP算法来训练神经网络。
2. 深度学习为什么深?模型复杂度的角度
到今天为止,学术界都还没有统一的看法。有很多的论述。周志华教授的以下论述主要从模型的复杂度的角度来讨论。
对于一个机器学习模型:①复杂度实际上和它的容量有关,而容量又跟它的学习能力有关。②如果我们能够增强一个学习模型的复杂度,那么它的学习能力能够提升。
对于神经网络有两条很明显的途径提高复杂度:①模型变深,②模型变宽,显然变深会更有效。当变宽的时候,只不过是增加了一些计算单元,增加了函数的个数,在变深的时候不仅增加了个数,还增加了函数间的嵌入的程度。所以从这个角度来说,我们应该尝试去把它变深。
那大家可能就会问了,那既然要变深,那你们早就不知道这件事了吗?那么现在才开始做?这就涉及到另外一个问题,我们把机器学习的学习能力变强了,这其实未必是一件好事。因为机器学习一直在斗争的一个问题,就是经常会碰到过拟合(overfit)。所以我们以往通常不太愿意用太复杂的模型。
那现在我们为什么可以用这样的模型?有很多因素,第一我们有了更大的数据;第二我们有强力的计算设备;第三我们有很多有效的训练技巧。这使我们可以用高复杂度的模型,而深度神经网络恰恰就是一种很便于实现的高复杂度模型。
为什么扁平的(flat),或者宽的网络做不到深度神经网络的性能?实际上我们把网络变宽,它同样也能起到增加复杂度的能力。从复杂度的角度可能很难回答这个问题,我们需要一点更深入的思考。
3. 深度神经网络里面最本质的东西到底是什么?
深度学习使研究人员不再需要手工去设计特征,模型可以学习到数据特征并进行特征表示。这和以往的机器学习技术相比可以说是一个很大的进步。
对于“端到端学习”,需要从两方面看:一方面,把特征学习和分类器的学习联合起来可以达到一个联合优化的作用(类似于特征选择基于wrapper的方法),这是优点;另外一方面,我们不清楚在学习过程中发生了什么,这样的端到端学习就不一定真的是好的。所以这不是最重要的。
深度神经网络最重要的是表示学习的能力。
表示学习最关键的又是什么呢?就是逐层的处理。最底层是一些像素,一层一层往上会慢慢的学习到边缘、轮廓,甚至对象的部件等,不断在对对象进行抽象。从这个角度可以解释深度学习为什么成功的关键因素,因为扁平神经网络没有办法进行逐层深度的加工。
“逐层地处理”在机器学习里面也不是新东西。如决策树和boosting。它们为什么做不到深度神经网络这么好的原因在于:①它的复杂度不够;第二,学习过程中没有进行特征的变换。
所以现在我们的看法是,深度神经网络成功的关键原因:第一是逐层地处理,第二是内部的特征变换。
4. 深度学习成功的三个因素
综合起来,深度学习成功的三个因素:第一,逐层处理;第二,特征的内部变换;第三,足够的模型复杂度。
5. 深度学习存在的问题
深度模型的常见问题:①容易overfit,所以我们要用大数据;②难训练,我们要有很多训练的trick;③系统的计算开销非常大,所以我们要有非常强有力的计算的设备,比如 GPU 等等。
那如果满足这三个关键因素,我们马上就可以想到不一定要用深度神经网络,用别的模型做也可以,只要能够同时满足这三个条件即可。
第一,深度神经网络要花大量的精力来调参。调参数的经验很难共享。
第二,深度学习的可重复性是最弱的。
第三,深度神经网络的模型复杂度必须是事先指定的。实际上大家做的通常都是设更大的复杂度。
因此过去 3、4 年深度学习这个领域很多最前沿的工作在做的都是在有效的缩减网络的复杂度。如RestNet通过加了shortcuts有效地使得复杂度变小、模型压缩、权重的二值化等。实际上它是先用了一个过大的复杂度,然后我们再把它降下来。那么我们有没有可能在一开始就让这个模型的复杂度随着数据而变化,这点对神经网络可能很困难,但是对别的模型是有可能的。
还有很多别的问题,比如说理论分析很困难,需要非常大的数据,黑箱模型等等。那么从另外一个方面,有人可能说你是做学术研究,你们要考虑这些事,我是做应用的,什么模型我都不管,你只要能给我解决问题就好了。其实就算从这个角度来想,我们研究神经网络之外的模型也是很需要的。
深度神经网络获胜的任务,往往就是在图像、视频、声音这几类典型任务上。凡是涉及到混合建模、离散建模、符号建模这样的任务上,其实它的性能可能比其他模型还要差一些,如随机森林、xgboost等。
我们从学术的观点来总结一下,今天我们谈到的深度模型基本上都是深度神经网络。如果用术语来说的话,它是多层、可参数化的、可微分的非线性模块所组成的模型,而这个模型可以用 BP算法来训练。
6. 探索深度学习之外的方法:深度森林
那么这里面有两个问题。第一,我们现实世界遇到的各种各样的问题的性质,并不是绝对都是可微的,或者用可微的模型能够做最佳建模的。第二,过去几十年里面,我们的机器学习界做了很多很多模型出来,这些都可以作为我们构建一个系统的基石,而中间有相当一部分模块是不可微的。那么这样的东西能不能用来构建深度模型?能不能通过构建深度模型之后得到更好的性能,能不能通过把它们变深之后,使得深度模型在今天还比不上随机森林等等这些模型的任务上,能够得到更好的结果呢?现在有这么一个很大的挑战,这不光是学术上的,也是技术上的一个挑战,就是我们能不能用不可微的模块来构建深度模型?
这个问题一旦得到了回答,我们同时就可以得到很多其他问题的答案。比如说深度模型是不是就是深度神经网络?我们能不能用不可微的模型把它做深,这个时候我们不能用BP算法来训练,那么同时我们能不能让深度模型在更多的任务上获胜?我们提出这个问题之后,在国际上也有一些学者提出了一些相似的看法。可能大家都知道,深度学习非常著名的领军人物Geoffery Hinton教授,他也提出来说,希望深度学习以后能摆脱 BP 算法来做,他提出这件事比我们要晚一些。
我想这样的问题是应该是站在一个很前沿的角度上探索。刚才跟大家分析所得到的三个结论,第一我们要做逐层处理,第二我们要做特征的内部变换,第三,我们希望得到一个充分的模型复杂度。我自己领导的研究组最近在这方面做了一些工作。
Deep Forest(深度森林)。这个方法是一个基于树模型的方法,它主要是借用了集成学习里面的很多的想法。第二,在很多不同的任务上,它的模型得到的结果可以说和深度神经网络是高度接近的。除了一些大规模的图像任务,这基本上是深度神经网络的杀手锏应用,它在很多的其它任务上,特别是跨任务的表现非常好。我们可以用同样一套参数,用不同的任务,性能都还不错,就不再需要逐任务的慢慢去调参数,同时它要调的超参数少很多,容易调的多。还有一个很重要的特性,它有自适应的模型复杂度,可以根据数据的大小,自动的来判定模型该长到什么程度。
另外一方面,我们要看到,这实际上是在深度学习这个学科领域发展思路上一个全新的探索。所以今天虽然它已经能够解决一部分问题了,但是我们应该可以看到它再往下发展下去,它的前景可能是今天我们还不太能够完全预见到的。