01月29, 2020

深度学习总结 (七) 梯度弥散、爆炸和过拟合

一、梯度弥散和爆炸

1. 梯度弥散的解释

梯度弥散的问题很大程度上是来源于激活函数的“饱和”。因为在后向传播的过程中仍然需要计算激活函数的导数,所以一旦卷积核的输出落入函数的饱和区,它的梯度将变得非常小。

使用反向传播算法传播梯度的时候,随着传播深度的增加,梯度的幅度会急剧减小,会导致浅层神经元的权重更新非常缓慢,不能有效学习。这样一来,深层模型也就变成了前几层相对固定,只能改变最后几层的浅层模型。

梯度爆炸的情况正好相反。

2. 防止梯度弥散的方法

BN。加入BN层之前,反向传播的梯度为:

\frac {\partial l}{\partial h_k}=\frac {\partial l}{\partial h_l } \prod^l_{i=k+l}w_i

加入BN之后,反向传播的梯度为:

\frac {\partial h_l}{\partial h_l-1}=\frac {\partial BNw_lh_{l-1}}{\partial h_{l-1}} =\frac {\partial BN\alpha w_lh_{l-1}}{\partial h_{l-1}}

我们可以看到此时反向传播乘以的数不再和w的尺度相关,也就是尽管我们在更新过程中改变了w的值,但是反向传播的梯度却不受影响。 跟进一步:

\frac {\partial BN((\alpha w)u)}{\partial (\alpha w)} =\frac{1}{\alpha}\frac{\partial BN( wu)}{\partial w}

即尺度较大的 w 将获得一个较小的梯度,在同等的学习速率下其获得的更新更少,这样使得整体 w 的更新更加稳健起来。

本文链接:http://57km.cc/post/gredient explosion vanishing.html

-- EOF --

Comments