2014年,人工智能领域正处于深度学习的快速发展时期,但在训练深层神经网络时,仍存在一些无法绕过的核心难题,其中“梯度消失”和“梯度爆炸”问题尤其突出。
当马库斯和林枫的对话逐渐转向这些人工智能瓶颈时,他们自然聊到了这个话题。
对于人工智能涉及到的梯度消失和梯度爆炸这个问题,对于前世就从事人工智能方面工作的林枫来说,他自然是不陌生。
梯度消失和梯度爆炸是神经网络训练中常见的问题。
了解梯度消失和梯度爆炸首先要了解神经网络。
简单说,神经网络是一种模仿人脑工作原理的计算模型。
它由很多“神经元”组成,这些神经元分成多层,数据会从一层传到另一层,最终得到一个结果。
训练神经网络的过程就是不断调整这些神经元之间的“连接强度”,让网络的输出越来越接近我们想要的结果。
为了调整神经网络中的这些连接强度,我们需要用到一种叫“梯度”的东西。
简单来说,梯度就是用来指引我们“往哪里走”的方向,就像你爬山时要知道往哪边是上坡、哪边是下坡。
我们通过“梯度”来知道哪些参数需要调整,从而让网络的表现变得更好。
那“梯度消失”和“梯度爆炸”又是什么呢?
假设你在玩一个滑滑梯,当你站在滑梯的最高处,往下滑时,你能很快感受到速度在增加,因为坡度很大。
但是,如果滑到快要到底部的地方,坡度变得很小,你几乎就感觉不到滑动的速度了。
这里的“坡度”就像是“梯度”——当坡度变小,滑动的速度也变小。
在神经网络中,类似的事情也会发生。
如果我们给网络很多层,它们之间的梯度会越来越小,传到前面几层时,梯度几乎“消失”了。这就是“梯度消失”问题。
梯度太小,无法有效调整那些神经元的连接强度,网络的训练就会变得非常困难。
想象你在爬一个大山,山的坡度越来越平,最终你几乎感受不到自己在上升了,这时你很难再判断该怎么继续往上爬。
在神经网络里,梯度消失的问题就是这种感觉,网络不知道该如何继续改进。
而梯度爆炸又是另外的一个极端。
假设这次你站在一座非常陡的悬崖边,一不小心就滚下去了!
因为坡度太陡了,你的速度变得非常快,失控了。