从模型复杂度的角度探讨“深度神经网络为什么深”的问题

电子说

1.2w人已加入

描述

人工智能

在昨天举行的2018京东人工智能创新峰会上,南京大学计算机系主任、人工智能学院院长周志华教授进行了题为《关于深度学习的思考》的主题演讲。周志华教授提出,人工智能时代最缺的就是人才,因为对这个行业来说,你有多好的人才,才可能有多好的人工智能。

昨天,2018京东人工智能创新峰会举行,京东集团副总裁、AI 平台与研究部负责人周伯文揭开了京东技术布局下的 AI 战略全景图。这个全景图概括起来说就是“三大主体、七大应用场景和五个人工智能产业化的布局方向”,即:以 AI 开放平台 、AI 基础研究、AI 商业创新三个主体,通过产学研相结合,高端人才培养,以及核心人才引进打造科技能力,将 AI 用于金融科技、智慧物流、智能消费、智能供应、对外赋能。在峰会上,京东AI开放平台NeuHub正式发布,“JD Dialog Challenge” 全球首届任务导向型多轮对话系统大奖赛正式启动。

会上,南京大学计算机系主任、人工智能学院院长周志华教授进行了题为《关于深度学习的思考》的主题演讲。周志华教授从深度学习的理论基础说起,从模型复杂度的角度探讨了“深度神经网络为什么深”的问题,提出深度学习在有很多成功应用的同时,也存在调参困难、可重复性差等问题,在很多任务上并不是最好的选择。因此,探索深度神经网络之外的模型是很重要的挑战。

周志华教授最后提到人工智能产业发展的看法,他说,“人工智能时代最缺的就是人才。因为对这个行业来说,你有多好的人才,才可能有多好的人工智能。”近日,新智元报道周志华教授出任京东集团人工智能研究院学术委员会委员,同时京东集团已启动在南京建立京东人工智能研究院南京分院,周志华教授将担任该分院学术总顾问。南京大学将在AI人才培养等方面和京东展开密切合作。

以下是周志华教授的演讲内容:

人工智能

周志华:

首先很高兴今天来参加京东的活动,各位可能最近都听说我们南京大学成立了人工智能学院,这是中国的 C9 高校的第一个人工智能学院。我们和京东会在科学研究和人才培养等方面开展非常深入的合作,具体的合作内容可能过一段时间会陆续地告诉大家。

感谢周伯文博士的邀请。来之前我问他今天说点什么好,他告诉我在座的有不少技术人士,建议我谈谈关于一些前沿学术问题的思考,所以今天我就跟大家谈一谈我们关于深度学习的一点点非常粗浅的看法,仅供大家来批评,一起来讨论。我们都知道直接掀起人工智能热潮的最重要的技术之一,就是深度学习技术。

今天,其实深度学习已经有各种各样的应用,到处都是它,不管图像也好,视频也好,声音自然语言处理等等。那么我们问一个问题,什么是深度学习?

深度学习的理论基础尚不清楚

我想大多数人的答案,就是深度学习差不多就等于深度神经网络。有一个非常著名的学会叫SIAM,是国际工业与应用数学学会,他们有一个旗舰的报纸叫SIAM news。在去年的 6 月份,这个报纸的头版上就有这么一篇文章,直接就说了这么一句话,说深度学习是机器学习中使用深度神经网络的的子领域。

所以如果我们要谈深度学习的话,是绕不开深度神经网络的。首先我们必须从神经网络说起。神经网络其实并不是一个新生事物,神经网络可以说在人工智能领域已经研究了超过半个世纪。但是以往的话,一般我们会用这样的神经网络,就是中间有一个隐层,或者有两个隐层。在这样的神经网络里面,它的每一个单元是个非常简单的计算模型。我们收到一些输入,这些输入通过一些连接放大,它就是这么一个非常简单的公式。所谓的神经网络,是很多这样的公式经过嵌套迭代得到的一个系统。那么今天当我们说用深度神经网络的时候,其实我们指的是什么?简单来说,就是我们用的层数会很深很深,很多层。在 2012 年深度学习刚刚开始受到大家重视的时候,那时候 ImageNet竞赛的冠军是用了8层的神经网络。那么到了 2015 年是用了 152 层,到了 2016 年是 1207层。这是个非常庞大非常巨大的系统,把这么一个系统训练出来,难度是非常大的。

有一点非常好的消息。神经网络里面的计算单元,最重要的激活函数是连续的、可微的。比如说我们在以往常用这样的sigmoid函数,它是连续可微的,现在大家常用的ReLu函数或者它的变体,也是这样。这使得我们可以容易地进行梯度计算,这样就可以很容易用著名的BP算法来训练。通过这样的算法,我们的神经网络已经取得了非常多的胜利。

但是实际上在学术界大家一直没有想清楚一件事情,就是我们为什么要用这么深的模型?今天深度学习已经取得了很多的成功,但是有一个很大的问题,就是理论基础不清楚。我们理论上还说不清楚它到底是怎么做,为什么会成功,里面的关键是什么?如果我们要做理论分析的话,我们先要有一点直觉,知道它到底为什么有用?这样才好着手去分析。 但现在其实我们根本就不知道该从什么角度去看它。

深度学习为什么深?模型复杂度的角度

关于深度神经网络为什么能深呢?到今天为止,学术界都还没有统一的看法。有很多的论述。我在这里面跟大家讲一个我们前段时间给出的一个论述。这个论述其实主要是从模型的复杂度的角度来讨论。

我们知道一个机器学习模型,它的复杂度实际上和它的容量有关,而容量又跟它的学习能力有关。所以就是说学习能力和复杂度是有关的。机器学习界早就知道,如果我们能够增强一个学习模型的复杂度,那么它的学习能力能够提升。那怎么样去提高复杂度,对神经网络这样的模型来说,有两条很明显的途径。一条是我们把模型变深,一条是把它变宽。如果从提升复杂度的角度,那么变深是会更有效。当你变宽的时候,你只不过是增加了一些计算单元,增加了函数的个数,在变深的时候不仅增加了个数,其实还增加了它的嵌入的程度。所以从这个角度来说,我们应该尝试去把它变深。

那大家可能就会问了,那既然要变深,那你们早就不知道这件事了吗?那么现在才开始做?这就涉及到另外一个问题,我们把机器学习的学习能力变强了,这其实未必是一件好事。因为机器学习一直在斗争的一个问题,就是经常会碰到过拟合(overfit)。这是一种什么样的现象?你给我一个数据集,我做机器学习要把数据集里面的东西学出来,学出来之后,我希望学到的是一般规律,能够用来预测未来的事情。但是有时候呢我可能把这个数据本身的一些特性学出来了,而不是一般规律。错误地把它当成一般规律来用的时候,会犯巨大的错误。这种现象就是所谓的过拟合。

那为什么我们会把这个数据本身的一些特性学出来呢?其实大家都很清楚,就是因为我们的模型学习能力太强。当你的能力非常非常强的时候,你可能就把一些特性学出来,当成一般规律。所以我们以往通常不太愿意用太复杂的模型。

那现在我们为什么可以用这样的模型?有很多因素。第一个因素是现在我们有很大的数据。比如说我手上如果只有 3000 个数据,那我学出来的特性一般不太可能是一般规律。但是如果有 3000 万,3000 万万的数据,那这个数据里面的特性可能本身就已经是一般规律。所以使用大的数据是缓解过拟合的一个关键的途径。第二,今天我们有了很多很强大的计算设备,这使得我们能够训练出这样的模型。第三,通过我们这个领域很多学者的努力,有了大量的训练这样复杂模型的技巧、算法,这使得我们使用复杂模型成为可能。总结一下就是:第一我们有了更大的数据;第二我们有强力的计算设备;第三我们有很多有效的训练技巧。这导致我们可以用高复杂度的模型,而深度神经网络恰恰就是一种很便于实现的高复杂度模型。 

所以用这么一套理论,好像是能够解释我们现在为什么能够用深度神经网络,为什么深度神经网络能成功?就是因为复杂度大。在一年多之前,我们把这个解释说出来的时候,其实国内外很多同行也还很赞同,觉得还蛮有道理的。但是其实我自己一直对这个解释不是特别的满意,因为一个潜在的问题我们一直没有回答。

深度神经网络最重要的是表示学习的能力

如果从复杂度这个角度去解释的话,我们就没法说清楚为什么扁平的(flat),或者宽的网络做不到深度神经网络的性能?实际上我们把网络变宽,虽然它的效率不是那么高,但是它同样也能起到增加复杂度的能力。

实际上只要有一个隐层,加无限多的神经元进去,它的复杂度也会变得很大。但是这样的模型在应用里面怎么试,我们都发现它不如深度神经网络好。所以从复杂度的角度可能很难回答这个问题,我们需要一点更深入的思考。所以我们要问这么一个问题:深度神经网络里面最本质的东西到底是什么? 

今天我们的回答是,表示学习的能力。以往我们用机器学习解决一个问题的时候,首先我们拿到一个数据,比如说这个数据对象是个图像,然后我们就用很多特征把它描述出来,比如说颜色、纹理等等。这些特征都是我们人类专家通过手工来设计的,表达出来之后我们再去进行学习。而今天我们有了深度学习之后,现在不再需要手工去设计特征了。你把数据从一端扔进去,模型从另外一端就出来了,中间所有的特征完全可以通过学习自己来解决。所以这就是我们所谓的特征学习,或者说表示学习。这和以往的机器学习技术相比可以说是一个很大的进步。我们不再需要依赖人类专家去设计特征了。

有些朋友经常说的一个东西是端到端学习。对这个其实我们要从两方面看,一方面,当我们把特征学习和分类器的学习联合起来考虑的时候,可以达到一个联合优化的作用,这是好的方面。但是另外一方面,如果这里面发生什么我们不清楚,这样的端到端学习就不一定真的是好的。因为里面很可能第一个部分在往东,第二个部分在往西,合起来看,好像它往东走的更多一点,其实内部已经有些东西在抵消了。所以实际上机器学习里面早就有端到端学习,比如说我们做特征选择,可能大家知道有一类基于wrapper的方法,它就是端到端的学习,但这类方法是不是比别的特征选择方法一定强呢?不一定。所以这不是最重要的。

真正重要的还是特征学习,或者表示学习。那如果我们再问下一个问题,表示学习最关键的又是什么呢?我们现在有这么一个答案,就是逐层的处理。我引述最近非常流行的一本书,《深度学习》这本书里面的一个图,当我们拿到一个图像的时候,我们如果把神经网络看作很多层,首先它在最底层,好像我们看到的是一些像素这样的东西。当我们一层一层往上的时候,慢慢的可能有边缘,再网上可能有轮廓,甚至对象的部件等等。当然这实际上只是个示意图,在真正的神经网络模型里面不见得会有这么清楚的分层。但是总体上当我们逐渐往上的时候,它确实是不断在对对象进行抽象。我们现在认为这好像是深度学习为什么成功的关键因素之一。因为扁平神经网络能做很多深层神经网络能做的事,但是有一点它是做不到的。当它是扁平的时候,它就没有进行这样的一个深度的加工。 所以深度的逐层抽象这件事情,可能是很关键的。

大家可能就会问,“逐层地处理”在机器学习里面也不是新东西。比如说决策树就是一种逐层处理,这是非常典型的。决策树模型已经有五六十年的历史了,但是它为什么做不到深度神经网络这么好呢?我想答案是这样。首先它的复杂度不够,决策数的深度,如果我们只考虑离散特征的话,它最深的深度不会超过特征的个数,所以它的模型复杂度是有限的。第二,整个决策树的学习过程中,它内部没有进行特征的变换,始终是在一个特征空间里面进行的。这可能也是它的一个问题。大家如果对高级点的机器学习模型了解,你可能会问,那boosting呢?比如说现在很多获胜的模型,xgboost 等等都属于这个boosting的一类,它也是一层一层的往下走。你说他为什么没有取得像深度神经网络这样的成功呢?我想其实问题是差不多的,首先它的复杂度还不够。第二可能是更关键的一点,它始终是在原始空间里面做事情,所有的这些学习器都是在原始特征空间,中间没有进行任何的特征变化。所以现在我们的看法是,深度神经网络到底为什么成功?或者成功的关键原因是什么?我想第一是逐层地处理,第二我们要有一个内部的特征变换。

深度学习成功的三个因素

而当我们考虑到这两件事情的时候,我们就会发现,其实深度模型是一个非常自然的选择。有了这样的模型,我们很容易就可以做上面两件事。但是当我们选择用这么一个深度模型的时候,我们就会有很多问题,它容易overfit,所以我们要用大数据;它很难训练,我们要有很多训练的trick;这个系统的计算开销非常大,所以我们要有非常强有力的计算的设备,比如 GPU 等等。

实际上所有这些东西是因为我们选用了深度模型之后产生的一个结果,它们不是我们用深度学习的原因。所以这和以往的思考不太一样,以往我们认为有了这些东西,导致我们用深度模型。其实现在我们觉得这个因果关系恰恰是反过来,因为我们要用它,所以我们才会考虑上面这些东西。另外还有一点我们要注意的,当我们有很大的训练数据的时候,这就要求我们必须要有很复杂的模型。否则假设我们用一个线性模型的话,给你 2000 万样本还是 2 亿的样本,其实对它没有太大区别。它已经学不进去了。而我们有了充分的复杂度,恰恰它又给我们使用深度模型加了一分。所以正是因为这几个原因,我们才觉得这是深度模型里面最关键的事情。

这是我们现在的一个认识:第一,我们要有逐层的处理;第二,我们要有特征的内部变换;第三,我们要有足够的模型复杂度。这三件事情是我们认为深度神经网络为什么能够成功的比较关键的原因。或者说,这是我们给出的一个猜测。

深度学习存在的问题

那如果满足这几个条件,我们其实马上就可以想到,那我不一定要用神经网络。神经网络可能只是我可以选择的很多方案之一,我只要能够同时做到这三件事,那我可能用别的模型做也可以,并不是一定只能是用深度神经网络。

第一,凡是用过深度神经网络的人都会知道,你要花大量的精力来调它的参数,因为这是个巨大的系统。那这会带来很多问题。首先我们调参数的经验其实是很难共享的。有的朋友可能说,你看我在第一个图像数据集上调参数的经验,当我用第二个图像数据集的时候,这个经验肯定是可以重用一部分。但是我们有没有想过,比如说我们在图像上面做了一个很大的深度神经网络,这时候如果要去做语音的时候,其实在图像上面调参数的经验,在语音问题上基本上不太有借鉴作用。所以当我们跨任务的时候,这些经验可能就很难共享。

第二个问题,今天大家都非常关注我们做出来的结果的可重复性,不管是科学研究也好,技术发展也好,都希望这个结果可重复。 而在整个机器学习领域,可以说深度学习的可重复性是最弱的。我们经常会碰到这样的情况,有一组研究人员发文章说报告了一个结果,而这个结果其他的研究人员很难重复。因为哪怕你用同样的数据,同样的方法,只要超参数的设置不一样,你的结果就不一样。

还有很多问题,比如说我们在用深度神经网络的时候,模型复杂度必须是事先指定的。因为我们在训练这个模型之前,我们这个神经网络是什么样就必须定了,然后我们才能用 BP算法等等去训练它。其实这会带来很大的问题,因为我们在没有解决这个任务之前,我们怎么知道这个复杂度应该有多大呢?所以实际上大家做的通常都是设更大的复杂度。

如果大家关注过去 3、4 年深度学习这个领域的进展,你可以看到很多最前沿的工作在做的都是在有效的缩减网络的复杂度。比如说 RestNet 这个网络通过加了shortcuts,有效地使得复杂度变小。还有最近大家经常用的一些模型压缩,甚至权重的二值化,其实都是在把复杂度变小。实际上它是先用了一个过大的复杂度,然后我们再把它降下来。那么我们有没有可能在一开始就让这个模型的复杂度随着数据而变化,这点对神经网络可能很困难,但是对别的模型是有可能的。 

还有很多别的问题,比如说理论分析很困难,需要非常大的数据,黑箱模型等等。那么从另外一个方面,有人可能说你是做学术研究,你们要考虑这些事,我是做应用的,什么模型我都不管,你只要能给我解决问题就好了。其实就算从这个角度来想,我们研究神经网络之外的模型也是很需要的。

虽然在今天深度神经网络已经这么的流行,这么的成功,但是其实我们可以看到在很多的任务上,性能最好的不见得完全是深度神经网络。比如说如果大家经常关心Kaggle上面的很多竞赛,它有各种各样的真实问题,有买机票的,有订旅馆的,有做各种的商品推荐等等。我们去看上面获胜的模型,在很多任务上的胜利者并不是神经网络,它往往是像随机森林,像xgboost等等这样的模型。深度神经网络获胜的任务,往往就是在图像、视频、声音这几类典型任务上。而在别的凡是涉及到混合建模、离散建模、符号建模这样的任务上,其实它的性能可能比其他模型还要差一些。那么,有没有可能做出合适的深度模型,在这些任务上得到更好的性能呢?

我们从学术的观点来总结一下,今天我们谈到的深度模型基本上都是深度神经网络。如果用术语来说的话,它是多层、可参数化的、可微分的非线性模块所组成的模型,而这个模型可以用 BP算法来训练。

探索深度学习之外的方法:深度森林

那么这里面有两个问题。第一,我们现实世界遇到的各种各样的问题的性质,并不是绝对都是可微的,或者用可微的模型能够做最佳建模的。第二,过去几十年里面,我们的机器学习界做了很多很多模型出来,这些都可以作为我们构建一个系统的基石,而中间有相当一部分模块是不可微的。那么这样的东西能不能用来构建深度模型?能不能通过构建深度模型之后得到更好的性能,能不能通过把它们变深之后,使得深度模型在今天还比不上随机森林等等这些模型的任务上,能够得到更好的结果呢?现在有这么一个很大的挑战,这不光是学术上的,也是技术上的一个挑战,就是我们能不能用不可微的模块来构建深度模型?

这个问题一旦得到了回答,我们同时就可以得到很多其他问题的答案。比如说深度模型是不是就是深度神经网络?我们能不能用不可微的模型把它做深,这个时候我们不能用BP算法来训练,那么同时我们能不能让深度模型在更多的任务上获胜?我们提出这个问题之后,在国际上也有一些学者提出了一些相似的看法。可能大家都知道,深度学习非常著名的领军人物Geoffery Hinton教授,他也提出来说,希望深度学习以后能摆脱 BP 算法来做,他提出这件事比我们要晚一些。 

我想这样的问题是应该是站在一个很前沿的角度上探索。刚才跟大家分析所得到的三个结论,第一我们要做逐层处理,第二我们要做特征的内部变换,第三,我们希望得到一个充分的模型复杂度。我自己领导的研究组最近在这方面做了一些工作。我们最近提出了一个叫做Deep Forest(深度森林)的方法。这个方法是一个基于树模型的方法,它主要是借用了集成学习里面的很多的想法。第二,在很多不同的任务上,它的模型得到的结果可以说和深度神经网络是高度接近的。除了一些大规模的图像任务,这基本上是深度神经网络的杀手锏应用,它在很多的其它任务上,特别是跨任务的表现非常好。我们可以用同样一套参数,用不同的任务,性能都还不错,就不再需要逐任务的慢慢去调参数,同时它要调的超参数少很多,容易调的多。还有一个很重要的特性,它有自适应的模型复杂度,可以根据数据的大小,自动的来判定模型该长到什么程度。

另外一方面,我们要看到,这实际上是在深度学习这个学科领域发展思路上一个全新的探索。所以今天虽然它已经能够解决一部分问题了,但是我们应该可以看到它再往下发展下去,它的前景可能是今天我们还不太能够完全预见到的。

我经常说我们其实没有什么真正的颠覆性的技术,所有的技术都是一步一步发展起来的。比方说现在深度神经网络里面最著名的CNN,从首次提出到ImageNet上获胜是经过了30年,从算法完全成形算起,到具备在工业界广泛使用的能力也是经过了20年,无数人的探索改进。所以,今天的一些新探索,虽然已经能够解决一些问题,但更重要的是再长远看,经过很多进一步努力之后,可能今天的一些探索能为未来的技术打下重要的基础。

以前我们说深度学习是一个黑屋子,这个黑屋子里面有什么东西呢?大家都知道,有深度神经网络。现在我们把这个屋子打开了一扇门,把深度森林放进来了,那我想以后可能还有很多更多的东西。可能这是从学科意义来看,这个工作更重要的价值。

最后我想谈一谈关于人工智能产业发展的一些看法,因为大家都知道我们南京大学人工智能学院马上要跟京东开展深入的在科学研究和人才培养方面的合作。关于人工智能产业的发展,我们要问一个问题,我们到底需要什么?大家说需要设备吗?做人工智能的研究,不需要特殊机密的设备,你只要花钱,这些设备都能买得到。那么缺数据吗?现在我们的数据收集、存储、传输、处理的能力大幅度提升,到处都是数据。

真正缺的是什么?人工智能时代最缺的就是人才。因为对这个行业来说,你有多好的人才,才可能有多好的人工智能。所以我们现在可以看到,全球是在争抢人工智能人才。不光是中国,美国也是这样。所以我们要成立人工智能学院,其实就有这样的考虑。信息化之后,人类社会必然进入智能化,可以说这是个不可逆转、不可改变的一个趋势。我们基于数据信息,为人提供智能辅助,让人做事的时候更容易,那是我们所有人的愿望。蒸汽机的革命是把我们从体力劳动里面解放出来。人工智能革命应该是把我们从一些繁复性强的、简单智力劳动中解放出来。

人工智能这个学科,它和其他的一些短期的投资风口和短期的热点不太一样。它经过 60 多年的发展,已经有一个庞大的、真正的知识体系。而高水平的人工智能人才稀缺,这是一个世界性的问题。我们的很多企业现在都在重金挖人,但实际上挖人不能带来增量。所以我觉得我们要从源头做起,为国家、社会、产业的发展培养高水平的人工智能人才,所以在这个方面,我们感谢京东作为一个有社会责任感的企业,愿意在我这个学院旁边专门建一个研究院,一起对源头性的人工智能高水平人才培养合作开展新型探索。最后欢迎各界朋友以各种方式支持我们南京大学人工智能学院,谢谢!

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分