[置顶] RNN学习笔记(二)-Gradient Analysis

、# RNN学习笔记(二)-Gradient Analysis

RNN网络具有对时间序列建模的特性,其在时间轴上可以展开成一个多层前馈网络,因此也存在多层网络同样的问题,随着网络递归层数的增加,误差梯度的传递将出现不稳定的情况(消散或膨胀),下边将进行深入分析:

  • 1.BPTT算法回顾及符号定义
  • 2.误差传导分析
  • 3.全局的误差传导分析
  • 4.参考文章

1.BPTT算法回顾及符号定义

δk(t)=J(t)sk(t)=fk(sk(t))(dk(t)yk(t))

yk(t)=fk(sk(t))

sk(t)=jUwijyj(t1)

δj(t)=fj(sj(t))iUwijδi(t+1)

2.误差传导分析

下面,对 δ(t) 进行深入分析。

δv(tq)δu(t)=fv(sv(t1))wuv                            if  q=1fv(sv(tq))lUδl(tq+1)δu(t)wlv  if  q>1

针对q>1的情形进行展开:
fv(sv(tq))lUδl(tq+1)δu(t)wlv=fv(sv(tq))lU[fl(sl(tq+1))lUwllδl(tq+2)]δu(t)wlv
为了符号表示上的便利,我们引入新的符号:
lm :第 m 次迭代的求和下标变量,且对所有的 lm 满足 lmU 。同时,为了书写简洁,我们在求和表达式中省略这个限制条件。
m :从时刻 t 开始,向后迭代的次数。
根据定义,有: l0=u,lq=v
于是,上式可以改写为:
flq(slq(tq))lq1δlq1(tq+1)δl0(t)wlq1lq=flq(slq(tq))lq1[flq1(slq1(tq+1))lq2wlq2lq1δlq2(tq+2)]δl0(t)wlq1lq
紧接上式继续推导:
flq(slq(tq))lq1flq1(slq1(tq+1))wlq1lqlq2wlq2lq1δlq2(tq+2)δl0(t)
进一步化简得:
flq(slq(tq))lq1lq2flq1(slq1(tq+1))wlq1lqwlq2lq1δlq2(tq+2)δl0(t)
把其中的 δlq2(tq+2) δlq3(tq+3) 继续展开化简得:
flq(slq(tq))lq1lq2lq3flq1(slq1(tq+1))flq2(slq2(tq+2))wlq1lqwlq2lq1wlq3lq2δlq3(tq+3)δl0(t)
继续往下展开并化简,直到 l1 :
flq(slq(tq))lq1l1flq1(slq1(tq+1))fl2(sl2(t2))wlq1lqwl1l2δl1(t1)δl0(t)
按本节最开始给出的式子,当 q=1 时,对上式最后边的偏导运算进行化简:
flq(slq(tq))lq1l1flq1(slq1(tq+1))fl2(sl2(t2))wlq1lqwl1l2×fl1(sl1(t1))wl0l1
使用变量m代替连乘式 l 的下标,则上式可以改写为:
flq(slq(tq))lq1l1m=1q1flm(slm(tm))wlm1lm
把上式左侧的 flq(slq(tq)) 写入连乘式,并调整求和号顺序:
Dvu(t,q)=δv(tq)δu(t)=δlq(tq)δl0(t)=l1lq1m=1qflm(slm(tm))wlm1lm
可以看出,后边的乘法项部分是影响偏导数值的关键。下边,我们重点考察这一部分: Δm=|flm(slm(tm))wlm1lm| 。假设隐层节点数为 n ,则求和运算中一共有 nq1 个形如 m=1qflm(slm(tm))wlm1lm 的项。

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(flm)=0.25 1.
也就是说要想让 Δm1.0 ,必然要有 |wlmlm+1|4

ylm1 为不等于0的常数,当 Δm 取得最大值时,
flm(slm(tm))=0.25
slm(tm)=lm+1wlmlm+1ylm+1(tm+1)=0

wlm1lm=1ylm1coth(12slm) 2
首先要说明一点,RNN网络按时间展开后,其隐藏层的权值是共享的,即对于不同时刻的权值,有 wij(t1)=wij(t2) (这一部分理解还不够深刻,有错误之处欢迎指正)。

slm(tm)=0 时,显然有 |coth(12slm)|
Δm=|flm(slm(tm))wlm1lm|=|flm(slm(tm))||wlm1lm|
这里把 wlm1lm 看成变量,为了简化符号,做如下定义:
w:=wlm1lm
x:=slm(tm)
g(x):=flm(slm(tm))

于是,
Δm=|g(x)||w|=|1ex+ex+2||w|=|wex+ex+2|
假设上一时刻的输出 ylm+1 为不等于0的常数,由 x=slm(tm)=lm+1ylm+1wlmlm+1 ,由于隐藏层的权值共享,可以看出, x 其实是 w 的线性函数。所以当w以线性方式趋于无穷时, Δm 的分母将以指数增长的方式趋于无穷大,因此有:
wΔm0 ,这个结论也说明了,不能以单纯增大 w 的初始值的方式来避免梯度消散的问题。因为一味的增大 w 反而会使后向传递的误差变得更小。

只要 |wlm1lm|<4 ,必然就有 Δm<1 ,就存在梯度消散的问题。

3.全局的误差传导分析

接下来定义一些新的符号:
n :隐层的节点数;
W :权值矩阵, [W]ij:=wij
Wv :输出权值向量, [Wv]i:=[W]iv=wiv
WuT :输入权值向 量, [WuT]i:=[W]ui=wui
gi(m) : fi(si(tm)) ,第 tm 时刻隐层第 i 个节点激活函数的导数值;
F(tm) :对角矩阵,即 [F(tm)]ij:=0,if  ij ; [F(tm)]ij:=gi(m),if  i=j
[A]ij :矩阵 A i 列第 j 行的元素;
[x]i :向量 x 的第 i 个元素;
A :矩阵A的范数;
xx :向量x的范数;
fmax:=maxm=1,...,q{F(tm)A}
ek : [e]k=1 ,其余元素为0的向量。

从第2节中的结果开始:
Dvu(t,q)=l1lq1m=1qflm(slm(tm))wlm1lm
=lq1l1fl1(sl1(t1))wl0l1fl2(sl2(t2))wl1l2flq2(slq2(tq+2))wlq3lq2flq1(slq1(tq+1))wlq2lq1×flq(slq(tq))wlq1lq
为了方便讨论,设 q=4,n=2 ,代入得:
l3l2l1fl1(sl1(t1))wl0l1fl2(sl2(t2))wl1l2fl3(sl3(t3))wl2l3fl4(sl4(t4))wl3l4
=l3=1nl2=1nl1=1nfl1(sl1(t1))wul1fl2(sl2(t2))wl1l2fl3(sl3(t3))wl2l3fv(sv(t4))
=l3=1nl2=1nl1=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(t1)m=23(F(tm)W)Wvfv(sv(tq))

所以,原式可以展开为:
Dvu(t,q)=(WuT)g1(1)gn(1)g1(2)gn(2)w11w1nwn1wnn××g1(q1)gn(q1)w11w1nwn1wnnWvfv(sv(tq))
进一步化简得:
(WuT)F(t1)m=2q1(F(tm)W)Wvfv(sv(tq)) 3
maxm=1,...,n{|xi|}xx
则必有 |xTy|nxxyx
因此, fv(sv(tq))F(tq)Afmax
|Dvu(t,q)|n(fmax)qWvxWTux(WA)q2q
因为:
Wvx=WevAWAevxWA
WTux=euWAeuxWAWA
所以,有:
|Dvu(t,q)|n(fmaxWA)q

范数有多种计算方法,这里可以采用如下方式计算:
WA:=maxrs|wrs| (取和最大的行)
xx:=maxr|xr| (取绝对值最大的元素)

fmax=0.25 , 如果下式成立:
wijwmax4.0n,i,j
则有 WAnwmax4.0 ,令 τ:=(nwmax4.0)<1.0
有:
|Dvu(t,q)|n(τ)q ,随着q的增大,该式将指数衰减。

4.参考文献

  • 1.LONG SHORT-TERM MEMORY,Neural Computation 9(8):1735-1780, 1997.Sepp Hochreiter,Jurgen Schmidhuber
  1. f(x)=11+ex
    f(x)=f(x)(1f(x))=11+exex1+ex
    化简得:
    f(x)=ex1+e2x+2ex
    分式上下同乘以 ex ,得:
    g(x)=f(x)=1ex+ex+2
    要求g(x)的最大值,先对 g(x) 求导:
    g(x)=exex(ex+ex+2)2
    分母恒大于0,只需要考察分子 K=(exex)
    显然,当 x>0 时, K 恒小于0, g(x) 单减;
    x<0 时, K 恒大于0, g(x) 单增;
    x=0 时, K=0 ,此时必然为 g(x) 最大值
    max(g(x))=g(0)=1e0+e0+2=12+2=14
  2. coth(x)=1tanh=ex+exexex ,双曲函数
    [置顶] RNN学习笔记(二)-Gradient Analysis_第1张图片
  3. 这里 F(tm)W 跟paper上的顺序刚好相反,原因是 wlm1lm 的下标与paper上相反(详情参考参文献中的1.) ↩

你可能感兴趣的:(算法,神经网络,DNN,深度学习,RNN)