一篇文章了解LSTM

长短期记忆网络调研报告


LSTM简介


​   在二十世纪中叶,模拟人类实际神经网络的数学方法问世,随着理论的逐步完善,人工构建的神经网络在系统辨识、模式识别、智能控制等领域有着广泛而吸引人的前景。而在人工神经网络的发展过程中,也出现了一些体系较为完善,在解决不同方面问题呈现不同性能的神经网络模型,比如全连接神经网络(FNN)、卷积神经网络(CNN)、循环神经网络(RNN)等。其中RNN的使用主要是用于文本填充、时间序列、语音识别等序列数据,但是在序列数据处理时,RNN在解决长序列训练过程中会产生的梯度消失 、梯度爆炸等问题。因此出现一种特殊变体RNN即长短期记忆(LSTM)神经网络,该网络很好地弥补了 RNN 的短板及缺陷 。同时LSTM在解决大部分问题中,例如在不分段连续手写识别上,通常比时间递归神经网络及隐马尔科夫模型(HMM)更好。

​ 接下来本文将会就以下三个角度进行调研分析:

​ 一、RNN的结构及其弊端;

​ 二、LSTM的结构及其运行流程;

​ 三、LSTM网络的变式。

RNN的结构及其弊端


RNN网络结构分析

​   由于LSTM是RNN的一种变体,因此在介绍LSTM网络结构之前,为便于理解,先对RNN的网络结构进行分析,RNN的网络结构可以表示为下图形式:

图 1:RNN的链状结构


​   由图可以看出,对该神经网络输入 x t x_t xt,而后可以得到输出 h t h_t ht,同时神经网络在该点计算的隐含层结果会对下一个输入网络的值,也就是 x t + 1 x_{t+1} xt+1,的隐含层的计算带来影响,也就是在xt时的计算会影响到下一个输入值 x t + 1 x_{t+1} xt+1的计算。由此就可以看出RNN是可以让信息从网络的某一时刻的计算传递到下一个时刻的计算,因此可以将其理解为保留了序列的前后相关性,而这也就是RNN适用于文本填充、语音识别等序列数据处理的原因。

​ ​   对于RNN进一步细化的内部结构,可以用下图来表示:


图 2:RNN网络内部结构



RNN的长程依赖问题


​   通过上图的链状结构可以看出,RNN可以较好地学习前后具有相关性的序列,但是这要求相关信息与所需信息之间的差距很小,如下图所示:


图 3:RNN网络的短“距离”信息传递


​   输入 x 3 x_3 x3后,其输出 h 3 h_3 h3 x 0 x_0 x0 x 1 x_1 x1有较大关系,此时它们之间的“距离”较近。因此,当序列的“距离”差距较大,而又具有一定相关性时,如下图所示,由于前面序列的信息随着网络重复单元的传递,可能信息就无法传递较远的“距离”,也就导致RNN就无法学习它们的连接信息。

图 4:RNN网络的长“距离”信息传递


​   从理论上讲,RNN可以通过调整网络参数来解决这种长期依赖关系。但是在实践中,RNN难以解决这个问题。Hochreite和Bengio等人对该问题进行了深入的研究,他们发现了一些非常基本的原因,也就是RNN中的梯度消失与梯度爆炸问题(对于该问题的进一步介绍将在接下来的RNN隐含层激活函数得选择中进行进一步讲解),并在RNN的基础上,初步提出来可以解决这个问题的LSTM网络雏形。

RNN中隐含层激活函数的选择


​   观察RNN网络的内部结构,关于为什么要选择 t a n h tanh tanh函数作为隐藏层的激活函数,其简要解释如下:


图 5:Sigmoid函数及其导数图像
图 6:tanh函数及其导数图像


​   观察 S i g m o i d Sigmoid Sigmoid函数和 t a n h tanh tanh函数对应的导数图像可以看出,而 S i g m o i d Sigmoid Sigmoid函数的导数取值介于0~0.25之间, t a n h tanh tanh函数的导数取值介于0~1之间,对于小于等于1的取值而言,在连乘的时候会出现梯度消失的问题,而对于 t a n h tanh tanh函数而言,其梯度消失的速度较 S i g m o i d Sigmoid Sigmoid函数来得慢,因此对于RNN的激活函数,主要选择的都是 t a n h tanh tanh函数。

​   但是对于 R e L U ReLU ReLU函数而言,观察它的函数及其导数对应的图像:


图 7:ReLU函数及其导数图像

​   其导数的取值始终为1,因此在连乘时,只要其导数前的系数大于1,就会出现梯度爆炸的情况,因此综合考量,在大部分的RNN中的隐含层的激活函数都选择 t a n h tanh tanh函数。


LSTM的结构及其运行流程


LSTM网络的内部结构

​   LSTM作为RNN的变体,其内部结构相对更复杂,和RNN一样,有这种链状结构,但是它们的重复模块有不同的结构。不是单一的神经网络层,而是四层,以一种非常特殊的方式相互作用,其内部结构如下图所示:

图 8:LSTM网络内部结构

​   该网络内部的核心就是顶部水平贯穿的线,该线代表了长期记忆,也被称之为细胞状态,一般用 C t C_t Ct来表示。只有一些微小的线性相互作用,信息很容易在不改变的情况下沿着它流动。该结构如下图所示:


在这里插入图片描述


​   而输出h就代表了短期记忆,x代表事件信息,即输入。LSTM也是以细胞状态的变化为主线,在此基础上添加了三个门,也就是LSTM相较RNN增加的三个神经网络层,用来保护控制细胞状态。通过这三个门,LSTM就具有了删除或改变细胞状态的能力。

​   LSTM的三个门分别为:遗忘门、记忆门、输出门。如下图所示就是这三个门在网络中具体位置的展示:


在这里插入图片描述



LSTM内部运行流程


遗忘门工作

​   遗忘门的作用就是让细胞遗忘或丢弃一部分信息。即在接收上一个单元模块传过来的细胞状态 C t − 1 C_{t-1} Ct1后,通过上一个单元模块输出的短期记忆 h t − 1 h_{t-1} ht1与当前输入的值 x t x_t xt来决定要对 C t − 1 C_{t-1} Ct1信息的保留和遗忘程度。由于是对程度的一个描述,因此在 h t − 1 h_{t-1} ht1 x t x_t xt作用后通过 S i g m o i d Sigmoid Sigmoid函数得到 f t f_t ft,此时 f t f_t ft的各维度的值均处于在0-1之间,再将 C t − 1 C_{t-1} Ct1 f t f_t ft进行点乘,实现对特定维度信息的保留与遗忘程度的控制,1表示完全保留该维度信息,0表示完全遗忘该维度信息。

在这里插入图片描述


f t = σ ( W f   ⋅   [ h t − 1 , x t ]   +   b f ) f_t=\sigma(W_f \ ·\ [h_{t-1},x_t]\ +\ b_f) ft=σ(Wf  [ht1,xt] + bf)


记忆门工作

​记忆门是决定在该单元模块中细胞将存储哪些新信息。此处包含两部分:

1: S i g m o i d Sigmoid Sigmoid层,决定什么值需要更新;

2: t a n h tanh tanh层,创建一个新的候选值向量,生成候选记忆。

针对在之前遗忘门中丢弃的部分信息,在该单元模块找到对应的新的属性信息,添加进去,补充丢弃的属性信息。


在这里插入图片描述


i t = σ ( W i   ⋅   [ h t − 1 , x t ]   +   b i ) i_t=\sigma(W_i \ ·\ [h_{t-1},x_t]\ +\ b_i) it=σ(Wi  [ht1,xt] + bi)

C ~ t = t a n h ( W C   ⋅   [ h t − 1 , x t ]   +   b C ) \widetilde{C}_t=tanh(W_C \ ·\ [h_{t-1},x_t]\ +\ b_C) C t=tanh(WC  [ht1,xt] + bC)


细胞状态更新

​   利用该单元模块中遗忘门和记忆门工作的结果对从上一个单元模块传递来的细胞状态 C t − 1 C_{t-1} Ct1进行更新,得到本单元模块的输出细胞状态 C t C_t Ct,完成对细胞状态的更新。需要注意的是,利用遗忘门结果对细胞状态的更新是点乘操作,利用记忆门结果对细胞状态的更新是加法操作。

在这里插入图片描述

C t = f t   ∗   C t − 1   +   i t   ∗   C ~ t C_t=f_t\ *\ C_{t-1}\ +\ i_t\ *\ \widetilde{C}_t Ct=ft  Ct1 + it  C t


输出门工作

​   最终,我们要根据细胞状态,确定输出值。首先我们使用一个 S i g m i o d Sigmiod Sigmiod函数来去确定细胞状态的哪部分需要输出,然后把细胞状态通过 t a n h tanh tanh层处理,两者相乘即可得到最终输出的信息。


在这里插入图片描述


o t = σ ( W o   ⋅   [ h t − 1 , x t ]   +   b o ) o_t=\sigma(W_o \ ·\ [h_{t-1},x_t]\ +\ b_o) ot=σ(Wo  [ht1,xt] + bo)

h t = o t   ∗   t a n h ( C t ) h_t=o_t\ *\ tanh(C_t) ht=ot  tanh(Ct)


LSTM网络的变式


带窥视孔连接的LSTM

​   窥视孔连接由Gers和Schmidhuber在2000年提出, 它出现是为了弥补网络的一个缺点:当前的细胞状态不能影响到三个门在下一时刻的输出,使整个细胞状态对上一单元模块的序列处理中丢失了部分信息,因此在内部网络结构中加入了窥孔连接,该连接可以让门观察到细胞状态。具体网络结构如下:


在这里插入图片描述


f t = σ ( W f   ⋅   [ C t − 1 , h t − 1 , x t ]   +   b f ) f_t=\sigma(W_f \ ·\ [C_{t-1},h_{t-1},x_t]\ +\ b_f) ft=σ(Wf  [Ct1,ht1,xt] + bf)

i t = σ ( W i   ⋅   [ C t − 1 , h t − 1 , x t ]   +   b i ) i_t=\sigma(W_i \ ·\ [C_{t-1},h_{t-1},x_t]\ +\ b_i) it=σ(Wi  [Ct1,ht1,xt] + bi)

o t = σ ( W o   ⋅   [ C t , h t − 1 , x t ]   +   b o ) o_t=\sigma(W_o \ ·\ [C_{t},h_{t-1},x_t]\ +\ b_o) ot=σ(Wo  [Ct,ht1,xt] + bo)



耦合遗忘和输入门的LSTM


​   该变式是在遗忘门与记忆门之间引入一个耦合。不同于之前的LSTM网络结构,遗忘门和输入门是独立的,这个变式是把遗忘和输入门结合起来。同时确定要遗忘的信息和要添加的新信息,而不再是分开确定。当输入的时候才会遗忘,当遗忘旧信息的时候才会输入新数据。该结构如下图所示:


在这里插入图片描述


C t = f t   ∗   C t − 1   +   ( 1 − f t )   ∗   C ~ t C_t=f_t\ *\ C_{t-1}\ +\ (1-f_t)\ *\ \widetilde{C}_t Ct=ft  Ct1 + (1ft)  C t

小结


​ ​   RNN网络的最主要特点是学习到序列的前后相关性,因此在一些自然语言处理的应用方面具有较好的效果,而由于RNN在处理长程序列时,易出现梯度消失或梯度爆炸,导致网络无法进一步学习,因此才出现了LSTM。

​ ​   LSTM相较RNN而言,是有进有出的,且作为长期记忆存在的细胞状态的更新是通过遗忘门和记忆门控制之后叠加的,而RNN是直接叠乘而来,因此LSTM可以避免梯度消失或者梯度爆炸。同时在后续的发展中,LSTM也出现了较多的变式,例如本文提及的带窥视孔连接的LSTM、耦合遗忘门和输入门的LSTM,也还有未提及的双向LSTM等众多变式。并不能泛泛的说变式一定比传统的LSTM来的更好,而是在处理不同问题时,有针对性的去改进LSTM,使其对该问题的求解达到一个更好的效果。



参考文献


[1] 孙宝山,李玮. 窥视孔连接的循环网络在中文分词上的研究[J]. 计算机工程与应用,2019,55(19):160-165. DOI:10.3778/j.issn.1002-8331.1806-0310.

[2] http://colah.github.io/posts/2015-08-Understanding-LSTMs/ Understanding LSTM Networks – colah’s blog

[3] https://zhuanlan.zhihu.com/p/100948638 M&DL | LSTM:遗忘门、记忆门、输出门 - 知乎 (zhihu.com)

[4] https://blog.csdn.net/Brigebios/article/details/116864185 LSTM网络的简单理解

[5] Goodfellow, I., Bengio, Y., Courville, A..Deep learning (Vol. 1):Cambridge:MIT Press,2016:367-415

[6] Schmidhuber, J., 2015. Deep learning in neural networks: An overview. Neural networks, 61, pp.85-117.

[7] Ng, A., Kian, K. and Younes, B., Sequence Models, Deep learning. .Coursera and deeplearning.ai.2018

[8] 邱锡鹏 著,神经网络与深度学习,第六章 循环神经网络 .Github Inc..2020-06-14

[9] 陈亮, 王震, 王刚. 深度学习框架下LSTM网络在短期电力负荷预测中的应用[J]. 电力信息与通信技术, 2017(5):8-11.

[10] Sundermeyer M, Schlüter R, Ney H. LSTM Neural Networks for Language Modeling[C]// Interspeech. 2012:601-608.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值