Supervised Sequence Labelling with Recurrent Neural Networks 笔记 -LSTM

Chapter 4 Long Short-Term Memory

4.1Network Architecture

乘法门允许LSTM存储单元在长时间内存储和访问信息,从而减轻梯度消失的问题。例如,只要输入门保持关闭(即有一个
激活接近于0),单元的激活状态不会被网络中新的输入所覆盖。并且可以通过打开输出门,把这个信息输出给更后面的序列。(也就是说利用这种方法保持了单元的激活信息,给后面的序列用)LSTM对梯度信息的保存时间如图4.4所示。

Figure 4.2: LSTM memory block with one cell.
这三个门是非线性的求和单元,它们收集来自内部和外部的激活,通过乘法(小黑圈)控制细胞的激活。输入门和输出门与细胞的输入和输出相乘,而遗忘门和细胞的前一个状态相乘。在细胞内没有使用激活函数。门的激活函数f通常是logistic sigmoid,因此,的激活函数的输出在0(gate closed)和1(gate open)之间。细胞的输入和输出激活函数(g和h)通常是tanh或logistic sigmoid,不过在某些情况下h是恒等函数。虚线表示从细胞到门的加权的“窥视孔”(细胞可以给门进行加权处理)。其他的连接都是没有权重的(换句话说,可以认为它们的权重都是固定为1)。这个模块给网络中其他部分唯一的输出是输出门的乘法结果。

4.2 Inuence of Preprocessing

这段的大概意思是如果降采样可以减小序列的长度,那么就用降采样以后的数据,这样就可以直接使用隐马尔可夫模型之类的工具来处理了。如果不行,那就要使用LSTM

4.3 Gradient Calculation

就像上一章讨论的网络一样,LSTM是一个可分割的函数,它通常使用梯度下降来训练。
通过时间反向传播(BPTT;Williams and Zipser,1995)。BPTT部分在一个时间后被截断,因为它认为长时间的依赖关系将由记忆块来处理,而不是通过循环连接周围的激活(消失的)流来处理。截断梯度的好处是可以让算法完全在线,这样就可以在每一个时间步骤之后进行权重更新。这对于诸如连续控制或时间序列预测之类的任务来说是重要的特性。

4.6 Network Equations

这一节提供了在一个递归神经网络中,LSTM隐藏层的激活(向前传递)和BPTT梯度计算(向后传递)的方程。
如前, wij 是单元i到单元j的连接的权重,网络中在t时刻给单元j的输入标记为 atj ,单元j在t时刻的激活输出标记为 btj . LSTM方程只针对一个记忆块。对于多个块,只需要一任意顺序重复即可。下标 ι,ϕ,ω 分别表示块中的输入门,遗忘门和输出门。下标c表示C个记忆单元中的一个。从单元c到输入门,遗忘门,输出门的”peephole weight”的权重分别标记为 wcι,wcϕ,wcω stc 表示单元c在t时刻的激活状态(例如线性单元的激活输出)。f是门的激活函数,g和h分别是单元的输入和输出激活函数。
I是输入个数,K是输出个数,H是隐藏层中的细胞数。注意到只有细胞(cell)的输出 btc 是连接到这层中的其他块的。其他的LSTM的激活,如状态,细胞(cell)输入,门的激活,都只在块中可见。我们使用索引h来引用隐藏层中其他块的单元输出,就像标准隐藏单元一样。与标准RNNs不同,LSTM层包含的输入比输出更多(因为门和单元都接收来自网络其余部分的输入,但只有细胞(cell)才能生成对网络其余部分可见的输出)。(因为输入很多)因此,我们将G定义为隐藏层(包括细胞和门)的输入总数,当我们不希望区分输入类型时,使用索引g来引用这些输入。对于每个块中有一个记忆细胞的标准的LSTM层来说,每个块G等于4H(每个细胞有4个输入:前面的网络输入、输入门、遗忘门、输出门)。
?? H和C是什么关系? H是整个隐藏层中的细胞个数,而C是一个块中的细胞个数。对于标准LSTM,C应该就是1
和标准RNN一样,前向传输是是通过这个方法来计算的:一个长度为T,从t=1开始的输入序列x,当t增加时,回归地应用更新公式。而用BPTT反向传输时,则是从t=T开始,回归地计算单元的偏导数,直到t=1。把每个时步的偏导数加起来,就得到了最终的权重偏导数。如等式(3.35)描述的,下面我们回忆一下:

δtj=defLatj

这里 L 是训练用的代价函数。
在向前和向后传播时, 计算方程的顺序是很重要的,应该按照下面的说明进行。与标准RNNs一样,所有状态和激活在t = 0时初始化为0(正向传播的初始值),所有 δ 项在t = T + 1时为0(反向传播的初始值)。

4.6.1 Forward Pass
  • 输入门

    atι=i=1Iwilxti+h=1Hwhlbt1h+c=1Cwclst1cbtι=f(atι)

    atι 可以理解成所有输入数据( Ii=1wilxti )和前一个时刻的遗忘门激活输出( Hh=1whlbt1h ),和细胞激活输出( Cc=1wclst1c )之和。

    前一个时刻遗忘门激活输出 Hh=1whlbt1h 里的H是什么呢?在有些网络结构里,可能有不止一个遗忘门,也可能从别的块里连一个输入过来。大牛为了公式通用,就用了一个求和公式来覆盖这种情况。在标准LSTM块里面,只有一个遗忘门,所以H=1。

    前一时刻细胞激活输出( Cc=1wclst1c )里的H的含义也是和上面的一样的。在标准块里,只有一个细胞,所以H=1。

-遗忘门

atϕ=i=1Iwiϕxti+h=1Hwhϕbt1h+c=1Cwcϕst1cbtϕ=f(atϕ)

atϕ 是所有输入层( Ii=1wiϕxti ),前一时刻遗忘门激活输出( Hh=1whϕbt1h ),前一时刻细胞状态输出( Cc=1wcϕst1c )。H和C的值需要根据网络的具体结构来确定。对于标准的LSTM块,H=1,C=1。

-Cells

atcstc=i=1Iwicxti+h=1Hwhcbt1h=btϕst1c+btιg(atc)

Cell的输入( atc ) 是这个时刻的输入和上个时刻的之和。
Cell的状态( stc )是这个时刻的输入( g(atc) )和上个时刻的Cell状态( st1c )之和。它们受输入门( btι )和遗忘门( btϕ )的控制。

  • Output Gates

    atωbtω=i=1Iwiωxti+h=1Hwhωbt1h+c=1Cwcωstc=f(atω)

    atω 是这个时刻的输入,细胞输出和上个时刻的输出门输出的加权之和。

  • Cell Outputs

    btc=btωh(stc)

    前向传播的各个数据

4.6.1 Backward Pass

首先定义了单元c和整个记忆单元输出s的偏导数

ϵtc=defLbtcϵts=defLbts

  • Cell Outputs

ϵtc=k=1Kwckδtk+g=1Gwcgδt+1g

K是输出层的神经元个数。 δtk 是输出层传递过来的梯度,在计算LSTM梯度的时候已经知道了。 wck 是块到输出层的权重。 Kk=1wckδtk 是从输出层传过来的梯度之和。
如果输出层使用了softmax函数,而且代价函数是交差熵函数的话,那么 δtk=ykzk ,这里 yk 是网络的输出,而 zk 是目标值。具体的公式推导见这里: http://blog.csdn.net/abeldeng/article/details/79092962

δt+1g 是上一轮梯度计算时输入层的梯度值,在本次计算时已经知道了。
wcg 是输入层到隐藏层的权重。
g是指输入,是否是指 wcwι,wω,wϕ ?

  • Output Gate
    δtω=f(atω)c=1Ch(sct)ϵtc
  • States

    ϵtc=btωh(stc)ϵtc+bt+1ϕϵt+1c+wclδt+1ι+wcϕδt+1ϕ+wcωδtω

  • Forget Gates

    δtϕ=f(atϕ)c=1Cst1cϵts

  • Input Gates
    δtι=f(atι)c=1Cg(atc)ϵts

参考:
http://blog.csdn.net/omnispace/article/details/55636762
https://www.csie.ntu.edu.tw/~yvchen/f106-adl/syllabus.html
http://blog.csdn.net/qian99/article/details/78046329

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值