神经网络训练中的梯度消失与梯度爆炸

层数比较多的神经网络模型在训练时也是会出现一些问题的,其中就包括
梯度消失问题(gradient vanishing problem)和梯度爆炸问题(gradient exploding problem)。
梯度消失问题和梯度爆炸问题一般随着网络层数的增加会变得越来越明显。

例如,对于下图所示的含有 3 个隐藏层的神经网络,梯度消失问题发生时,接近于输出层的hidden layer 3等的权值更新相对正常,但前面的hidden layer 1的权值更新会变得很慢,导致前面的层权值几乎不变,仍接近于初始化的权值,这就导致hidden layer 1相当于只是一个映射层,对所有的输入做了一个同一映射,这是此深层网络的学习就等价于只有后几层的浅层网络的学习了。

神经网络训练中的梯度消失与梯度爆炸
神经网络训练中的梯度消失与梯度爆炸
神经网络训练中的梯度消失与梯度爆炸
神经网络训练中的梯度消失与梯度爆炸
神经网络训练中的梯度消失与梯度爆炸
其实梯度爆炸和梯度消失问题都是因为网络太深,网络权值更新不稳定造成的,本质上是因为梯度反向传播中的连乘效应。对于更普遍的梯度消失问题,可以考虑用ReLU**函数取代sigmoid**函数。另外,LSTM的结构设计也可以改善RNN中的梯度消失问题。

relu函数的导数要么是0要么是1, 能遗留下来的神经元relu函数必然是1, 导数值较好, 既不会导致梯度消失又不会梯度爆炸。