时间序列的反向传播算法
得到:
∂
h
t
∂
h
s
=
∂
h
t
∂
h
t
−
1
∂
h
t
−
1
∂
h
t
−
2
.
.
.
∂
h
s
+
1
∂
h
s
\frac{\partial h_t}{\partial h_s} = \frac{\partial h_t}{\partial h_{t-1}} \frac{\partial h_{t-1}}{\partial h_{t-2}} ... \frac{\partial h_{s+1}}{\partial h_{s}}
∂hs∂ht=∂ht−1∂ht∂ht−2∂ht−1...∂hs∂hs+1
注意到:
h
t
=
W
f
(
h
t
−
1
)
+
U
x
t
h_t=Wf(h_{t-1})+Ux_t
ht=Wf(ht−1)+Uxt
计算jacobian 矩阵
∂
h
t
∂
h
s
=
∏
k
=
s
+
1
t
W
T
d
i
a
g
[
f
′
(
W
h
k
−
1
)
]
\frac{\partial h_t}{\partial h_s} = \prod^t_{k=s+1}W^Tdiag[f^{'}(Wh_{k-1})]
∂hs∂ht=∏k=s+1tWTdiag[f′(Whk−1)]
根据柯西-西瓦兹不等式
∂
h
t
∂
h
t
−
1
≤
∣
∣
W
T
∣
∣
∣
∣
d
i
a
g
[
f
′
(
W
h
t
−
1
)
]
∣
∣
≤
σ
m
a
x
γ
\frac{\partial h_t}{\partial h_{t-1}} \leq ||W^T||||diag[f^{'}(Wh_{t-1})]|| \leq \sigma_{max} \gamma
∂ht−1∂ht≤∣∣WT∣∣∣∣diag[f′(Wht−1)]∣∣≤σmaxγ
σ
m
a
x
\sigma_{max}
σmax是
W
T
W^T
WT矩阵的最大奇异值,
γ
\gamma
γ是
∣
∣
d
i
a
g
[
f
′
(
W
h
t
−
1
)
]
∣
∣
||diag[f^{'}(Wh_{t-1})]||
∣∣diag[f′(Wht−1)]∣∣上界,
γ
\gamma
γ依赖激活函数f,
∣
t
a
n
h
(
x
)
′
∣
≤
1
|tanh(x)^{'}|\leq 1
∣tanh(x)′∣≤1,
σ
(
x
)
′
≤
1
4
\sigma(x)^{'} \leq \frac{1}{4}
σ(x)′≤41
所以
∂
h
t
∂
h
s
=
∂
h
t
∂
h
t
−
1
∂
h
t
−
1
∂
h
t
−
2
.
.
.
∂
h
s
+
1
∂
h
s
≤
(
σ
m
a
x
γ
)
t
−
s
\frac{\partial h_t}{\partial h_s} = \frac{\partial h_t}{\partial h_{t-1}} \frac{\partial h_{t-1}}{\partial h_{t-2}} ... \frac{\partial h_{s+1}}{\partial h_{s}} \leq (\sigma_{max}\gamma)^{t-s}
∂hs∂ht=∂ht−1∂ht∂ht−2∂ht−1...∂hs∂hs+1≤(σmaxγ)t−s
由于参数共享
W
W
W,RNN存在梯度消失或者梯度爆炸。
解决办法:
梯度爆炸:
-
权重惩罚 Weight Penalty (不work)
∣ ∣ W ∣ ∣ 2 ≤ I ||W||_2 \leq I ∣∣W∣∣2≤I
不足:
(1)W约束比较小的范围内,建模不足
(2)信息比较快的衰减(梯度消失)
(3)没办法长时序的建模 -
梯度裁剪Gradient Clipping (work)
高曲率墙的存在造成了困难
虚线:当范数高于一个值的时候,梯度重新表定为固定的打小,引入了额外的裁剪。
其他的方法:
当W是正交矩阵的时候,
W
T
W
=
I
W^TW=I
WTW=I,
(
W
T
v
)
T
(
W
T
v
)
=
v
T
W
W
T
v
=
v
T
v
(W^Tv)^T(W^Tv) = v^TWW^Tv = v^Tv
(WTv)T(WTv)=vTWWTv=vTv
初始化的时候W可以是正交的矩阵,但是训练的时候W会发生变化,无法保证是正交矩阵。