深度学习 《梯度消失和梯度爆炸》

一:梯度消失
在深层网络中,一方面由于求导法则,计算越前面层次或者时刻的梯度,会出现很多的乘法运算,很容易导致梯度消失和梯度爆炸,另一方面还受到激活函数的影响,Sigmoid函数和tanh函数会出现梯度为0 的区域,前面也说了,BP网络中,使用skip connection可以解决梯度消失,典型的就是ResNet。在RNN中LSTM, GRU就是解决思路。

其实我感觉他们的思路有异曲同工之妙,都是将先前的层次/序列的输出通过某种方式可以输入到某一层次需要用到的时候。求导的过程中,偏导数不至于为0,或者说降低了为0的概率,解决该问题。

二:梯度爆炸
那出现了梯度爆炸怎么玩呢?出现梯度爆炸的时候,参数值可能变得异常巨大,可能是NaN,这时候甚至都能计算溢出,这个时候我们需要进行干预了,用到技巧就叫做 Grident Clipping。

过程如下:设置一个梯度的阈值,一旦发现计算后的梯度大于该阈值,立马进行干预,也不难,就是多个判断的过程。

1) 先设置一个梯度的阈值,也就是最大值,不能大于这个值
2) 反向传播中比较阈值和梯度的大小
3) 如果地图大于这个阈值,立马对地图进行缩放处理,让他不能大于这个阈值。
伪代码如下截图:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_29367075/article/details/108958796