介绍
梯度爆炸:梯度迭代到NAN
梯度消失 :梯度迭代到0
解决方法
梯度爆炸:
1、权重衰减
2、梯度截断
梯度消失 :
1、选取更好的激活函数
如用relu代替sigmoid和tanh。
sigmoid函数的导数值范围为(0,0.25],反向传播时会导致梯度消失 tanh函数的导数值范围为 (0,1],相对范围较大,但仍会导致梯度消失 sigmoid函数不是0中心对称,输出均大于0 tanh函数是0中心对称,可以使网络收敛的更好
ReLU函数的导数,左侧为0,右侧为1,这就避免了小数的连乘,但反向传播中仍有权值的累乘,所以说ReLU函数不能说完全解决了“梯度消失”现象,只能说改善。恒为1的导数容易导致“梯度爆炸“,但设定合适的阈值可以解决这个问题。还有一点就是如果左侧恒为0的导数有可能导致把神经元学死,不过设置合适的步长(学习率)也可以有效避免这个问题的发生。
2、改变传播结构
RNN到LSTM,GRU
初始化合理的权重值:初始化权重,使每个神经元尽可能躲开梯度消失的区域,如避免取极大或极小值。
有研究表明,在RNN中使用ReLU函数配合将权值初始化到单位矩阵附近,可以达到接近LSTM网络的效果。
详细介绍
所有的h都是一个向量,向量关于向量的导数是一个矩阵
我们做了太多的矩阵乘法