梯度消失与梯度爆炸的推导

记RNN中每一步的损失为$E_t$,则损失对$h_{t-1}$的权重$W$的导数有:

其中$\frac{\partial{h_t}}{\partial{h_k}}$使用链式法则有:

其中$\frac{\partial{h_j}}{\partial{h_{j-1}}}$ 是雅克比矩阵。对其取模(norm),有:

当$f$为sigmoid时,$f^{\prime}(h_{j-1})$最大值为1。

最终我们有:

从上式可以看出,当t-k足够大时,如果$(\beta_W \beta_h)$小于1则$(\beta_W \beta_h)^{t-k}$则会变得非常小,相反,若$(\beta_W \beta_h)$大于1则$(\beta_W \beta_h)^{t-k}$则会变得非常大。

在计算机中,当梯度值很大时,会造成上溢(NaN),也即梯度爆炸问题,当梯度值很小时,会变成0,也即梯度消失。注意到,t-k的损失实际上评估的是一个较远的词对当前t的贡献,梯度消失也即意味着对当前的贡献消失。

Reference:
CS224d: Deep Learning for NLP Lecture4