梯度消失(gradient vanishing problem)和梯度爆炸(gradient exploding problem)是深层次的神经网络中容易出现的现象。随着网络层数的增加这种现象变得越来越明显。
(1)梯度不稳定问题
在深度神经网络中的梯度是不稳定的,在靠近输入层的隐藏层中或会消失或爆炸。这种不稳定性才是深度神经网络中基于梯度学习的根本问题。
梯度不稳定的原因:前面层上的梯度是来自后面层上梯度的乘积。当存在过多的层时,就会出现梯度不稳定场景,比如梯度消失和梯度爆炸。
(2)梯度消失的原因
如图1的网络所示:
由前向传播可知:
BP反传:
反向传播过程中,梯度随网络深度进行累乘,而sigmoid函数导数小于1,如图3所示,从而造成梯度消失。而sigmoid函数的导数下图所示。
梯度消失和梯度爆炸问题都是因为网络太深,网络权值更新不稳定造成的,本质上是因为梯度反向传播中的连乘效应。
梯度爆炸和梯度消失的应对措施:
1、对于RNN,可以通过梯度截断,避免梯度爆炸
2、可以通过添加正则项,避免梯度爆炸
3、使用LSTM等自循环和门控制机制,避免梯度消失
4、用ReLU、Leaky ReLU、PReLU、RReLU、Maxout等替代sigmoid函数。
5、用Batch Normalization。