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

    科技2025-03-25  19

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

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

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

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

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

    Processed: 0.010, SQL: 8