、# RNN学习笔记(二)-Gradient Analysis
RNN网络具有对时间序列建模的特性,其在时间轴上可以展开成一个多层前馈网络,因此也存在多层网络同样的问题,随着网络递归层数的增加,误差梯度的传递将出现不稳定的情况(消散或膨胀),下边将进行深入分析:
δk(t)=∂J(t)∂sk(t)=f′k(sk(t))(dk(t)−yk(t))
yk(t)=fk(sk(t))
sk(t)=∑j∈Uwijyj(t−1)
δj(t)=f′j(sj(t))∑i∈Uwijδi(t+1)
下面,对 δ(t) 进行深入分析。
1.当 Δm>1.0 时,显然 Dvu(t,q) 将呈指数增加;
2.当 Δm<1.0 时,显然 Dvu(t,q) 将呈指数减小(gradient vanishes);
3.当 Δm=1.0 时,显然 Dvu(t,q) 将呈线性变化;
假设 flm 是sigmoid函数,易知 max(f′lm)=0.25 1.
也就是说要想让 Δm≥1.0 ,必然要有 |wlmlm+1|≥4 。
设 ylm−1 为不等于0的常数,当 Δm 取得最大值时,
f′lm(slm(t−m))=0.25
slm(t−m)=∑lm+1wlmlm+1ylm+1(t−m+1)=0
wlm−1lm=1ylm−1coth(12slm) 2
首先要说明一点,RNN网络按时间展开后,其隐藏层的权值是共享的,即对于不同时刻的权值,有 wij(t1)=wij(t2) (这一部分理解还不够深刻,有错误之处欢迎指正)。
当 slm(t−m)=0 时,显然有 |coth(12slm)|→∞
Δm=|f′lm(slm(t−m))wlm−1lm|=|f′lm(slm(t−m))||wlm−1lm|
这里把 wlm−1lm 看成变量,为了简化符号,做如下定义:
w:=wlm−1lm
x:=slm(t−m)
g(x):=f′lm(slm(t−m))
于是,
Δm=|g(x)||w|=|1ex+e−x+2||w|=|wex+e−x+2|
假设上一时刻的输出 ylm+1 为不等于0的常数,由 x=slm(t−m)=∑lm+1ylm+1wlmlm+1 ,由于隐藏层的权值共享,可以看出, x 其实是 w 的线性函数。所以当w以线性方式趋于无穷时, Δm 的分母将以指数增长的方式趋于无穷大,因此有:
w→∞,Δm→0 ,这个结论也说明了,不能以单纯增大 w 的初始值的方式来避免梯度消散的问题。因为一味的增大 w 反而会使后向传递的误差变得更小。
只要 |wlm−1lm|<4 ,必然就有 Δm<1 ,就存在梯度消散的问题。
接下来定义一些新的符号:
n :隐层的节点数;
W :权值矩阵, [W]ij:=wij ;
Wv :输出权值向量, [Wv]i:=[W]iv=wiv ;
WuT :输入权值向 量, [WuT]i:=[W]ui=wui ;
gi(m) : f‘i(si(t−m)) ,第 t−m 时刻隐层第 i 个节点激活函数的导数值;
F′(t−m) :对角矩阵,即 [F′(t−m)]ij:=0,if i≠j ; [F′(t−m)]ij:=gi(m),if i=j ;
[A]ij :矩阵 A 第 i 列第 j 行的元素;
[x]i :向量 x 的第 i 个元素;
∥⋅∥A :矩阵A的范数;
∥x∥x :向量x的范数;
f′max:=maxm=1,...,q{∥F′(t−m)∥A} ;
ek : [e]k=1 ,其余元素为0的向量。
从第2节中的结果开始:
Dvu(t,q)=∑l1⋯∑lq−1∏m=1qf′lm(slm(t−m))wlm−1lm
=∑lq−1⋯∑l1f′l1(sl1(t−1))wl0l1f′l2(sl2(t−2))wl1l2⋯f′lq−2(slq−2(t−q+2))wlq−3lq−2f′lq−1(slq−1(t−q+1))wlq−2lq−1×f′lq(slq(t−q))wlq−1lq
为了方便讨论,设 q=4,n=2 ,代入得:
∑l3∑l2∑l1f′l1(sl1(t−1))wl0l1f′l2(sl2(t−2))wl1l2f′l3(sl3(t−3))wl2l3f′l4(sl4(t−4))wl3l4
=∑l3=1n∑l2=1n∑l1=1nf′l1(sl1(t−1))wul1f′l2(sl2(t−2))wl1l2f′l3(sl3(t−3))wl2l3f′v(sv(t−4))
=∑l3=1n∑l2=1n∑l1=1ngl1(1)wul1gl2(2)wl1l2gl3(3)wl2l3gv(4)wl3v
=[wu1 wu2][g1(1) 00 g2(1)][g1(2) 00 g2(2)][w11 w21w12 w22][g1(3) 00 g2(3)][w11 w21w12 w22][w1vw2v]gv(4)
=(WuT)F′(t−1)∏m=23(F′(t−m)W)Wvf′v(sv(t−q))
所以,原式可以展开为:
Dvu(t,q)=(WuT)⎡⎣⎢⎢g1(1)⋱gn(1)⎤⎦⎥⎥⎡⎣⎢⎢g1(2)⋱gn(2)⎤⎦⎥⎥⎡⎣⎢⎢w11⋮w1n⋯⋯wn1⋮wnn⎤⎦⎥⎥×⋯×⎡⎣⎢⎢g1(q−1)⋱gn(q−1)⎤⎦⎥⎥⎡⎣⎢⎢w11⋮w1n⋯⋯wn1⋮wnn⎤⎦⎥⎥Wvf′v(sv(t−q))
进一步化简得:
(WuT)F′(t−1)∏m=2q−1(F′(t−m)W)Wvf′v(sv(t−q)) 3
设 maxm=1,...,n{|xi|}≤∥x∥x ,
则必有 |xTy|≤n∥x∥x∥y∥x
因此, f′v(sv(t−q))≤∥F′(t−q)∥A≤f′max
|Dvu(t,q)|≤n(f′max)q∥Wv∥x∥WTu∥x(∥W∥A)q−2q
因为:
∥Wv∥x=∥Wev∥A≤∥W∥A∥ev∥x≤∥W∥A
∥WTu∥x=∥euW∥A≤∥eu∥x∥W∥A≤∥W∥A
所以,有:
|Dvu(t,q)|≤n(f′max∥W∥A)q
范数有多种计算方法,这里可以采用如下方式计算:
∥W∥A:=maxr∑s|wrs| (取和最大的行)
∥x∥x:=maxr|xr| (取绝对值最大的元素)
当 f′max=0.25 , 如果下式成立:
wij≤wmax≤4.0n,∀i,j
则有 ∥W∥A≤nwmax≤4.0 ,令 τ:=(nwmax4.0)<1.0
有:
|Dvu(t,q)|≤n(τ)q ,随着q的增大,该式将指数衰减。