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梯度计算(向后传递)的方程。
如前,wijw_{ij}是单元i到单元j的连接的权重,网络中在t时刻给单元j的输入标记为atja^{t}_{j},单元j在t时刻的激活输出标记为btjb^{t}_{j}. LSTM方程只针对一个记忆块。对于多个块,只需要一任意顺序重复即可。下标ι,ϕ,ω\iota , \phi , \omega分别表示块中的输入门,遗忘门和输出门。下标c表示C个记忆单元中的一个。从单元c到输入门,遗忘门,输出门的”peephole weight”的权重分别标记为wcι,wcϕ,wcωw_{c\iota}, w_{c\phi}, w_{c\omega}。stcs^{t}_{c}表示单元c在t时刻的激活状态(例如线性单元的激活输出)。f是门的激活函数,g和h分别是单元的输入和输出激活函数。
设I是输入个数,K是输出个数,H是隐藏层中的细胞数。注意到只有细胞(cell)的输出btcb^{t}_{c}是连接到这层中的其他块的。其他的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=def∂L∂atj

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

4.6.1 Forward Pass

  • 输入门

    atι=∑i=1Iwilxti+∑h=1Hwhlbt−1h+∑c=1Cwclst−1cbtι=f(atι)

    \begin{aligned} &a^{t}_{\iota}=\sum_{i=1}^{I}{w_{il}x^{t}_{i}} + \sum_{h=1}^{H}{w_{hl}b^{t-1}_h} + \sum_{c=1}^{C}{w_{cl}s^{t-1}_{c}} \\ &b^{t}_{\iota}=f(a^{t}_{\iota}) \end{aligned}

    atιa^{t}_{\iota}可以理解成所有输入数据(∑Ii=1wilxti\sum_{i=1}^{I}{w_{il}x^{t}_{i}})和前一个时刻的遗忘门激活输出(∑Hh=1whlbt−1h\sum_{h=1}^{H}{w_{hl}b^{t-1}_h}),和细胞激活输出(∑Cc=1wclst−1c\sum_{c=1}^{C}{w_{cl}s^{t-1}_{c}})之和。

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

    前一时刻细胞激活输出(∑Cc=1wclst−1c\sum_{c=1}^{C}{w_{cl}s^{t-1}_{c}})里的H的含义也是和上面的一样的。在标准块里,只有一个细胞,所以H=1。

-遗忘门

atϕ=∑i=1Iwiϕxti+∑h=1Hwhϕbt−1h+∑c=1Cwcϕst−1cbtϕ=f(atϕ)

\begin{aligned} &a^{t}_{\phi}=\sum^{I}_{i=1}{w_{i\phi}x^{t}_{i}} + \sum^{H}_{h=1}{w_{h\phi}b^{t-1}_{h}} + \sum^{C}_{c=1}{w_{c\phi}s^{t-1}_{c}} \\ &b^{t}_{\phi}=f(a^{t}_{\phi}) \end{aligned}
atϕa^{t}_{\phi}是所有输入层( ∑Ii=1wiϕxti\sum^{I}_{i=1}{w_{i\phi}x^{t}_{i}}),前一时刻遗忘门激活输出( ∑Hh=1whϕbt−1h\sum^{H}_{h=1}{w_{h\phi}b^{t-1}_{h}}),前一时刻细胞状态输出( ∑Cc=1wcϕst−1c\sum^{C}_{c=1}{w_{c\phi}s^{t-1}_{c}})。H和C的值需要根据网络的具体结构来确定。对于标准的LSTM块,H=1,C=1。

-Cells

atcstc=∑i=1Iwicxti+∑h=1Hwhcbt−1h=btϕst−1c+btιg(atc)

\begin{aligned} a^{t}_{c}&=\sum^{I}_{i=1}{w_{ic}x^{t}_{i}} + \sum^{H}_{h=1}{w_{hc}b^{t-1}_{h}}\\ s^{t}_{c}&=b^{t}_{\phi}s^{t-1}_{c} + b^{t}_{\iota}g(a^{t}_{c}) \end{aligned}
Cell的输入( atca^{t}_{c}) 是这个时刻的输入和上个时刻的之和。
Cell的状态( stcs^{t}_{c})是这个时刻的输入( g(atc)g(a^{t}_{c}))和上个时刻的Cell状态( st−1cs^{t-1}_{c})之和。它们受输入门( btιb^{t}_{\iota})和遗忘门( btϕb^{t}_{\phi})的控制。

  • Output Gates

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

    \begin{aligned} a^{t}_{\omega}&=\sum^{I}_{i=1}{w_{i\omega}x^{t}_{i}} + \sum^{H}_{h=1}{w_{h\omega}b^{t-1}_{h}} + \sum^{C}_{c=1}{w_{c\omega}s^{t}_{c}}\\ b^{t}_{\omega}&=f(a^{t}_{\omega}) \end{aligned}
    atωa^{t}_{\omega} 是这个时刻的输入,细胞输出和上个时刻的输出门输出的加权之和。

  • Cell Outputs

    btc=btωh(stc)

    b^{t}_{c}=b^{t}_{\omega} h(s^{t}_{c})

4.6.1 Backward Pass

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

ϵtc=def∂L∂btcϵts=def∂L∂bts

\epsilon^{t}_{c}\stackrel{def}{=}\frac{\partial \mathcal{L}}{\partial{b^{t}_{c}}} \qquad \epsilon^{t}_{s}\stackrel{def}{=}\frac{\partial \mathcal{L}}{\partial{b^{t}_{s}}}

  • Cell Outputs
ϵtc=∑k=1Kwckδtk+∑g=1Gwcgδt+1g

\epsilon^{t}_{c}=\sum^{K}_{k=1}w_{ck}\delta^t_k + \sum^{G}_{g=1}w_{cg}\delta^{t+1}_{g}
K是输出层的神经元个数。 δtk\delta^t_k是输出层传递过来的梯度,在计算LSTM梯度的时候已经知道了。 wckw_{ck}是块到输出层的权重。 ∑Kk=1wckδtk\sum^{K}_{k=1}w_{ck}\delta^t_k是从输出层传过来的梯度之和。
如果输出层使用了softmax函数,而且代价函数是交差熵函数的话,那么 δtk=yk−zk\delta^{t}_{k}=y_{k}-z_{k},这里 yky_{k}是网络的输出,而 zkz_{k}是目标值。具体的公式推导见这里: http://blog.csdn.net/abeldeng/article/details/79092962

δt+1g\delta^{t+1}_{g}是上一轮梯度计算时输入层的梯度值,在本次计算时已经知道了。
wcgw_{cg}是输入层到隐藏层的权重。
g是指输入,是否是指wc,wι,wω,wϕw_{c},w_{\iota},w_{\omega},w_{\phi}?

  • Output Gate

    δtω=f′(atω)∑c=1Ch(sct)ϵtc

    \delta^{t}_{\omega}=f'(a^{t}_{\omega})\sum^{C}_{c=1}h(s^{c}_t)\epsilon^{t}_{c}

  • States

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

    \epsilon^{t}_{c}=b^{t}_{\omega}h'(s^{t}_{c})\epsilon^{t}_{c}+b^{t+1}_{\phi}\epsilon^{t+1}_{c} + w_{cl}\delta^{t+1}_{\iota} + w_{c\phi}\delta^{t+1}_{\phi} + w_{c\omega}\delta^{t}_{\omega}

  • Forget Gates

    δtϕ=f′(atϕ)∑c=1Cst−1cϵts

    \delta^{t}_{\phi}=f'(a^{t}_{\phi})\sum^{C}_{c=1}s^{t-1}_{c}\epsilon^{t}_{s}

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

    \delta^{t}_{\iota}=f'(a^{t}_{\iota})\sum^{C}_{c=1}g(a^{t}_{c})\epsilon^{t}_{s}

参考:
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

Supervised Sequence Labelling with Recurrent Neural Networks 笔记 -LSTM相关推荐

  1. A Critical Review of Recurrent Neural Networks for Sequence Learning-论文(综述)阅读笔记

    A Critical Review of Recurrent Neural Networks for Sequence Learning 阅读笔记 //2022.3.31 下午15:00开始 论文地址 ...

  2. LSTM对比GRU:Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling

    先说结论:不论是machine translation还是music datasets.speech signal modeling,GRU和LSTM的performance差别不大,但GRU往往比L ...

  3. Teacher Forcing for Recurrent Neural Networks

    Teacher Forcing是一种用来快速而有效地训练循环神经网络模型的方法,这种方法以上一时刻的输出作为下一时刻的输入. 它是一种网络训练方法,对于开发用于机器翻译,文本摘要和图像字幕的深度学习语 ...

  4. Paper:《Generating Sequences With Recurrent Neural Networks》的翻译和解读

    Paper:<Generating Sequences With Recurrent Neural Networks>的翻译和解读 目录 Generating Sequences With ...

  5. Paper:RNN之《Generating Sequences With Recurrent Neural Networks用循环神经网络生成序列》的翻译和解读

    Paper:<Generating Sequences With Recurrent Neural Networks>的翻译和解读 目录 Generating Sequences With ...

  6. 吴恩达deeplearning.ai系列课程笔记+编程作业(13)序列模型(Sequence Models)-第一周 循环序列模型(Recurrent Neural Networks)

    第五门课 序列模型(Sequence Models) 第一周 循环序列模型(Recurrent Neural Networks) 文章目录 第五门课 序列模型(Sequence Models) 第一周 ...

  7. Sequence Classification with LSTM Recurrent Neural Networks in Python with Keras-学习笔记

    Sequence Classification with LSTM Recurrent Neural Networks in Python with Keras 序列分类是一种预测建模问题,其中在空间 ...

  8. 【论文笔记】K-plet Recurrent Neural Networks for Sequential Recommendation

    原文:K-plet Recurrent Neural Networks for Sequential Recommendation (本文只是略读,所以笔记只记录了主要的思想,更多的细节还需看原文) ...

  9. 【论文研读】【医学图像分割】【FCN+RNN】Recurrent Neural Networks for Aortic Image Sequence Segmentation with ...

    [FCN+RNN]Recurrent Neural Networks for Aortic Image Sequence Segmentation with Sparse Annotations Ab ...

  10. <笔记>Long and Short -Term Recommendations with Recurrent Neural Networks

    <笔记>Long and Short -Term Recommendations with Recurrent Neural Networks 基于项目的序列神经网络推荐 总结: (1)证 ...

最新文章

  1. Invalid Host header 问题解决
  2. 公开课 | 腾讯云高级研发工程师:朋友圈爆款背后的计算机视觉技术与应用
  3. excel字段自动java类,Java 接口自动化系列--工具类之Excel测试数据解析封装
  4. boost::statechart模块实现使用正交状态和 state_downcast 查询正交区域的状态的测试程序
  5. SVM支持向量机绘图
  6. Drupal 自己定义主题实体 Theming Custom Entities
  7. 信息学奥赛一本通(2046:【例5.15】替换字母)
  8. 基于JAVA+SpringBoot+Mybatis+MYSQL的校园二手交易平台
  9. 协程 eventlet
  10. PowerShell 开启无线热点
  11. TCP四次挥手的等待时间为什么是2MSL而不是1MSL
  12. D语言(dlang)编写单片机(cortex-m系列)应用需要用到的技巧
  13. mysql实现添加图片_如何往mysql中添加图片
  14. 什么是根证书和中间证书(中级证书)?
  15. 图像修复 2021 最新综述——附综述论文分享
  16. java动态图片_Java之简单的图片动态显示(实现类似GIF动画效果)
  17. mysql备份表语句
  18. 【机器学习】XgBoost 原理详解 数学推导
  19. 淘宝上线短视频APP鹿刻:害抖音之心无,防抖音之心有
  20. HTML5期末大作业:影视网站设计——“指环王:护戒使者(13页) TML+CSS+JavaScript 学生DWHTML5网页设计成品_学生DW静态网页设计代做_web课程设计网页制作

热门文章

  1. bzoj5369: [Pkusc2018]最大前缀和 状压Dp 计数Dp
  2. Borg和Kubernetes有什么不同?未来的云需要什么?
  3. 注册查看隐私协议 --- 滚动条是否滚动到底
  4. 一个案例,看懂用户画像如何做出效益
  5. 物联网的应用领域有哪些?
  6. 苹果雪豹操作系统正式版_大家一起来聊聊电脑操作系统那些事
  7. 资源 就是Tianmao项目里小部分备用 测试 的数据以及图片
  8. 第53篇-某天猫评论sign参数分析【2022-08-31】
  9. 给CSDN上原创文章添加版权声明(干货)
  10. MSET key value [key value ...]