为了解决梯度消失或梯度爆炸的问题以及网络中的退化问题。
梯度消失与梯度爆炸
-
梯度消失(gradient vanishing problem) 我们知道神经网络在进行反向传播(BP)的时候会对参数W进行更新,梯度消失就是靠后面网络层(如layer3)能够正常的得到一个合理的偏导数,但是靠近输入层的网络层,计算的到的偏导数近乎零,W几乎无法得到更新。
-
梯度爆炸(gradient exploding problem) 梯度爆炸的意思是,靠近输入层的网络层,计算的到的偏导数极其大,更新后W变成一个很大的数(爆炸)。
梯度消失和梯度爆炸的影响
- 梯度消失:
- 当梯度消失发生时,接近于输出层的隐藏层由于其梯度相对正常,所以权值更新时也就相对正常;
- 但是当越靠近输入层时,由于梯度消失现象,会导致靠近输入层的隐藏层权值更新缓慢或者更新停滞;
- 梯度爆炸:
- 当梯度爆炸发生时,初始的权值过大,靠近输入层的权值变化比靠近输出层的权值变化更快,就会引起梯度爆炸的问题;
- 会导致模型不稳定,更新过程中的损失出现显著变化;
- 也可能导致训练过程中,模型损失变成 NaN;
退化问题
问题:随着神经网络的不断加深,一定会带来好处吗?
-
不一定。
-
蓝色五角星表示最优值
-
标有Fi的闭合区域表示函数,闭合区域的面积代表函数的复杂程度,在这个区域中能够找到一个最优的模型(可以用区域中的一个点来表示,该点到最优值的距离可以用来衡量模型的好坏)
-
从右图中可以看出,随着函数的复杂度的不断增加,虽然函数的区域面积增大了,但是在该区域中所能找到的最优模型(该区域内的某一点)离最优值的距离可能会越来越远(也就是模型所在的区域随着函数复杂度的增加,逐渐偏离了原来的区域,离最优值越来越远)(非嵌套函数(non-nested function))
-
解决上述问题(模型走偏