Assignment3 | LSTM Captioning
上一节介绍了 Vanilla RNN,同 NN 一样,RNN 存在的最大的问题就是梯度消失。这是因为,RNN 中需要学习的参数在一个 time capsule 结束之后才会更新一次,而在同一个 time capsule 中,所有的时刻都会有 loss 产生,因此也都会有对于参数的梯度产生,最后参数更新时的梯度是所有这些梯度之和。梯度的计算式为:
∂ L ∂ W = ∑ t = 1 T ∂ L ( t ) ∂ W = ∑ t = 1 T ∑ k = 0 t ∂ L ( t ) ∂ o ( t ) ∂ o ( t ) ∂ h ( t ) ( ∏ j = k + 1 t ∂ h ( j ) ∂ h ( j − 1 ) ) ∂ h ( k ) ∂ W \frac{\partial L}{\partial W} = \sum_{t=1}^{T} \frac{\partial L^{(t)}}{\partial W} = \sum_{t=1}^{T} \sum_{k=0}^{t} \frac{\partial L^{(t)}}{\partial o^{(t)}} \frac{\partial o^{(t)}}{\partial h^{(t)}} \left( \prod_{j=k+1}^{t} \frac{\partial h^{(j)}}{\partial h^{(j-1)}} \right) \frac{\partial h^{(k)}}{\partial W} ∂W∂L=t=1∑T∂W∂L(t)=t=1∑Tk=0∑t∂o(t)∂L(t)∂h(t)∂o(t)⎝⎛j=k+1∏t∂h(j−1)