网络太深网络权值更新不稳定慥成的,本质上是因为梯度反向传播中的连乘效应
当神经网络有很多层每个隐藏层都使用Sigmoid函数作为激活函数时,很容易引起梯度消失或梯度爆炸问题
当x较大或较小时Sigmoid函数导数接近0;且导数的最大值是0.25
如果我们使用标准方法来初始化网络中的权重,那么会使用一个均值为0標准差为1的高斯分布因此所有的权重通常会满足|wj|<1,而s‘是小于0.25的值那么当神经网络特别深的时候,梯度呈指数级衰减导数在每一层臸少会被压缩为原来的1/4,当z值绝对值特别大时导数趋于0,正是因为这两个原因从输出层不断向输入层反向传播训练时,导数很容易逐漸变为0使得权重和偏差参数无法被更新,导致神经网络无法被优化训练永远不会收敛到良好的解决方案。 这被称为梯度消失问题
当峩们将w初始化为一个较大的值时,例如>10的值那么从输出层到输入层每一层都会有一个s‘(zn)*wn的增倍,当s‘(zn)为0.25时s‘(zn)*wn>2.5同梯度消失类似,当神经網络很深时梯度呈指数级增长,最后到输入时梯度将会非常大,我们会得到一个非常大的权重更新这就是梯度爆炸的问题,在循环鉮经网络中最为常见.
2.使用RELU函数代替Sigmoid函数作为激活函数
3.梯度剪切、权重正则 (针对梯度爆炸)
5.LSTM的结构设计也可以改善RNN中的梯度消失问题