2014年,人工智能领域正处于深度学习的快速发展时期,但在训练深层神经网络时,仍存在一些无法绕过的核心难题,其中“梯度消失”和“梯度爆炸”问题尤其突出。 当马库斯和林枫的对话逐渐转向这些人工智能瓶颈时,他们自然聊到了这个话题。 对于人工智能涉及到的梯度消失和梯度爆炸这个问题,对于前世就从事人工智能方面工作的林枫来说,他自然是不陌生。 梯度消失和梯度爆炸是神经网络训练中常见的问题。 了解梯度消失和梯度爆炸首先要了解神经网络。 简单说,神经网络是一种模仿人脑工作原理的计算模型。 它由很多“神经元”组成,这些神经元分成多层,数据会从一层传到另一层,最终得到一个结果。 训练神经网络的过程就是不断调整这些神经元之间的“连接强度”,让网络的输出越来越接近我们想要的结果。 为了调整神经网络中的这些连接强度,我们需要用到一种叫“梯度”的东西。 简单来说,梯度就是用来指引我们“往哪里走”的方向,就像你爬山时要知道往哪边是上坡、哪边是下坡。 我们通过“梯度”来知道哪些参数需要调整,从而让网络的表现变得更好。 那“梯度消失”和“梯度爆炸”又是什么呢? 假设你在玩一个滑滑梯,当你站在滑梯的最高处,往下滑时,你能很快感受到速度在增加,因为坡度很大。 但是,如果滑到快要到底部的地方,坡度变得很小,你几乎就感觉不到滑动的速度了。 这里的“坡度”就像是“梯度”——当坡度变小,滑动的速度也变小。 在神经网络中,类似的事情也会发生。 如果我们给网络很多层,它们之间的梯度会越来越小,传到前面几层时,梯度几乎“消失”了。这就是“梯度消失”问题。 梯度太小,无法有效调整那些神经元的连接强度,网络的训练就会变得非常困难。 想象你在爬一个大山,山的坡度越来越平,最终你几乎感受不到自己在上升了,这时你很难再判断该怎么继续往上爬。 在神经网络里,梯度消失的问题就是这种感觉,网络不知道该如何继续改进。 而梯度爆炸又是另外的一个极端。 假设这次你站在一座非常陡的悬崖边,一不小心就滚下去了! 因为坡度太陡了,你的速度变得非常快,失控了。 在神经网络中,这种情况也被称为“梯度爆炸” 当梯度太大时,参数的调整会变得过于剧烈,网络的学习变得不稳定,甚至会导致训练失败。 这就像你在陡峭的悬崖边滑落,一下子失去了控制。 网络的参数变化过大,导致结果变得很不稳定,甚至完全错误。 概括地说: 梯度消失就像在一座越来越平的山坡上,梯度变得很小,神经网络不知道该怎么调整,进而学习变得很慢,甚至无法进步。 梯度爆炸就像从悬崖边滚下去,梯度变得很大,网络的学习变得过于剧烈,结果会非常不稳定,训练过程变得不可控。 这两个问题经常会出现在深层神经网络中。 而这也是马库斯所要倾诉的困扰。 “说起来,最近的研究还卡在了‘梯度消失’的问题上。”马库斯苦笑着说道,靠在沙发上,“我们在训练一些更深层次的神经网络时,发现模型一旦超过一定的深度,反向传播算法中的梯度会逐渐趋近于零,根本无法有效更新权重。深度越大,梯度就越容易消失,整个网络的学习效率大幅下降。” 马库斯知道林枫硕士是麻省理工学院的计算机硕士,因此也就全都用专业术语表述了。 对于这些林枫当然能听明白,非但能听明白,而且作为一个资深的人工智能从业人员。 林枫也清楚知道马库斯面临的难题。 林枫对AI的发展也有所了解,涉及到梯度问题在2014年是深度学习研究中的一个巨大挑战。 甚至可以说解决不了梯度问题就很难有真正的深度学习,也就不会有后来的人工智能成果的一系列井喷。 林枫心说,自己这是一不小心站在了技术发展的最前沿了吗? 不得不说,这种举手投足之间就能影响时代命运的感觉是真的无比美妙。 “梯度消失的问题一直存在,尤其是深层网络。梯度爆炸倒是相对好解决,但梯度消失会直接导致学习过程停滞不前。”林枫沉思片刻,补充道,“这不仅是你们实验室的问题,也是整个领域的瓶颈。反向传播的基本原理决定了,当信号在网络中层层传递时,梯度的变化会以指数级缩小。” 马库斯脑海中泛起了大大的问号,梯度爆炸问题好解决吗? 他怎么觉得梯度爆炸问题也挺麻烦的? 不过聊天本来就是求同存异,既然林同样认为梯度消失难以解决就够了。 马库斯也没纠结为什么林说梯度爆炸容易解决,而是继续就梯度消失发表观点说道:“是啊,哪怕有了ReLU(修正线性单元)激活函数的引入,虽然能在一定程度上减轻梯度消失,但对深层网络还是不够。” 林枫想了想,说道:“你们有考虑过改进网络结构吗?”