基础概念
在详细了解神经网络中梯度消失与梯度爆炸的原理之前,先来回顾一下如下基本公式:
E ( X ∗ Y ) = E ( X ) ∗ E ( Y ) D ( X ) = E ( X 2 ) − [ E ( X ) ] 2 D ( X + Y ) = D ( X ) + D ( Y ) \begin{aligned} &\mathbf{E}(\boldsymbol{X} * \boldsymbol{Y})=\boldsymbol{E}(\boldsymbol{X}) * \boldsymbol{E}(\boldsymbol{Y})\\ &\mathrm{D}(\boldsymbol{X})=\boldsymbol{E}\left(\mathrm{X}^{2}\right)-[\boldsymbol{E}(\boldsymbol{X})]^{2}\\ &\mathbf{D}(\boldsymbol{X}+\boldsymbol{Y})=\boldsymbol{D}(\boldsymbol{X})+\boldsymbol{D}(\boldsymbol{Y}) \end{aligned} E(X∗Y)=E(X)∗E(Y)D(X)=E(X2)−[E(X)]2D(X+Y)=D(X)+D(Y)
其中随机变量X与Y相互独立,根据上面三个公式可推导得出下式关系
D ( X ∗ Y ) = D ( X ) ∗ D ( Y ) + D ( X ) ∗ [ E ( Y ) ] 2 + D ( Y ) ∗ [ E ( X ) ] 2 \mathrm{D}(\mathrm{X} * \mathrm{Y})=\mathrm{D}(\mathrm{X}) * \mathrm{D}(\mathrm{Y})+\mathrm{D}(\mathrm{X}) *[\boldsymbol{E}(\boldsymbol{Y})]^{2}+\mathrm{D}(\mathrm{Y}) *[\boldsymbol{E}(\boldsymbol{X})]^{2} D(X∗Y)=D(X)∗D(Y)+D(X)∗[E(Y)]2+D(Y)∗[E(X)]2
至此,基础知识准备完毕。
神经网络中的梯度消失与爆炸
面对如下结构的神经网络:
先来计算梯度,令 H 1 H_1 H1表示第一个隐藏层, H 2 H_2 H2表示第二个隐藏层,W代表权重矩阵,那么第二层隐藏层到输出层之间的权重矩阵 W 2 W_2 W2的梯度为:
Δ W 2 = ∂ L oss ∂ W 2 = ∂ L oss ∂ o u t ∗ ∂ o u t ∂ H 2 ∗ ∂ H 2 ∂ w 2 = ∂ L o s s ∂ o u t ∗ ∂ o u t ∂ H 2 ∗ H 1 \begin{aligned} \Delta \mathrm{W}_{2} &=\frac{\partial L \text { oss }}{\partial \mathrm{W}_{2}}=\frac{\partial L \text { oss }}{\partial o u t} * \frac{\partial o u t}{\partial H_{2}} * \frac{\partial H_{2}}{\partial w_{2}} \\ &=\frac{\partial L o s s}{\partial o u t} * \frac{\partial o u t}{\partial H_{2}} * H_{1} \end{aligned} ΔW2=∂W2∂L oss =∂o