时间序列的反向传播算法
得到:
∂hs∂ht=∂ht−1∂ht∂ht−2∂ht−1...∂hs∂hs+1
注意到:
ht=Wf(ht−1)+Uxt
计算jacobian 矩阵
∂hs∂ht=∏k=s+1tWTdiag[f′(Whk−1)]
根据柯西-西瓦兹不等式
∂ht−1∂ht≤∣∣WT∣∣∣∣diag[f′(Wht−1)]∣∣≤σmaxγ
σmax是
WT矩阵的最大奇异值,
γ是
∣∣diag[f′(Wht−1)]∣∣上界,
γ依赖激活函数f,
∣tanh(x)′∣≤1,
σ(x)′≤41
所以
∂hs∂ht=∂ht−1∂ht∂ht−2∂ht−1...∂hs∂hs+1≤(σmaxγ)t−s
由于参数共享
W,RNN存在梯度消失或者梯度爆炸。
解决办法:
梯度爆炸:
高曲率墙的存在造成了困难
虚线:当范数高于一个值的时候,梯度重新表定为固定的打小,引入了额外的裁剪。
其他的方法:
当W是正交矩阵的时候,
WTW=I,
(WTv)T(WTv)=vTWWTv=vTv 初始化的时候W可以是正交的矩阵,但是训练的时候W会发生变化,无法保证是正交矩阵。