RNN反向传播算法

RNN中需要梯度下降更新W,U,V,b,c五个参数。
所以需要对W,U,V,b,c进行求导
以求W导数为例:

w在每一时刻都出现了,所以w在时刻t的梯度 = 时刻t的损失函数对所有时刻的w的梯度和
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><mfrac><mrow><mi mathvariant="normal">∂</mi><msub><mi>L</mi><mrow><mi>t</mi></mrow></msub></mrow><mrow><mi mathvariant="normal">∂</mi><msub><mi>W</mi><mrow><mi>t</mi></mrow></msub></mrow></mfrac><mo>=</mo><munderover><mo data-mjx-texclass="OP">∑</mo><mrow><mi>s</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>T</mi></mrow></munderover><mfrac><mrow><mi mathvariant="normal">∂</mi><msub><mi>L</mi><mrow><mi>t</mi></mrow></msub></mrow><mrow><mi mathvariant="normal">∂</mi><msub><mi>W</mi><mrow><mi>s</mi></mrow></msub></mrow></mfrac></math>
这是w在时刻t的,所以对整个w的导数来说应该是:所有时刻对所有其他时刻w的梯度和
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><mfrac><mrow><mi mathvariant="normal">∂</mi><mi>L</mi></mrow><mrow><mi mathvariant="normal">∂</mi><mi>W</mi></mrow></mfrac><mo>=</mo><munderover><mo data-mjx-texclass="OP">∑</mo><mrow><mi>t</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>T</mi></mrow></munderover><munderover><mo data-mjx-texclass="OP">∑</mo><mrow><mi>s</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>T</mi></mrow></munderover><mfrac><mrow><mi mathvariant="normal">∂</mi><msub><mi>L</mi><mrow><mi>t</mi></mrow></msub></mrow><mrow><mi mathvariant="normal">∂</mi><msub><mi>W</mi><mrow><mi>s</mi></mrow></msub></mrow></mfrac></math>

参考链接

RNN的反向传播及RNN的梯度消失与梯度爆炸