LSTM

本文前面译自Christopher Olah的博文,后面为一些其它的理解。

LSTM基本介绍

Long Short-Term Memory 长短期记忆网络,是一种特殊的RNN,能学习长期依赖性

  • 适合于处理和预测 时间序列中间隔和延迟相对较长的重要事件,是解决长序依赖问题的有效技术
  • LSTM区别于RNN的地方,主要在于它在算法中加入了一个判断信息有用与否处理器,这个结构被称为cell
  • cell中有三扇门:输入门遗忘门输出门。信息进入LSTM网络后根据规则来判断是否有用,复合算法认证的信息会留下,不符的信息则通过遗忘门被遗忘(一进二出工作原理)

LSTM的引出

RNN

RNN是包含循环的网络,允许信息的持久化。
RNN
在上面的示例中,神经网络模块A,正在读取输入 x t x_t xt,并输出一个值 h t h_t ht,而图中的循环可以使得信息可以从当前步传递到下一步。
这些循环使得RNN看起来非常神秘。换个角度理解,RNN可以被看作是同一神经网络的多次复制,每个神经网络模块会把消息传递给下一个,展开可看作如下:
展开的RNN
链式的特征揭示了RNN本质上是与序列和列表相关的,它们是对于这类数据的最自然的神经网络架构。目前RNN在语音识别,语言建模,翻译,图片描述等问题上已经取得了一定成功。
而LSTM则是一种特别的RNN。

长期依赖(Long-Term Dependencies)问题

RNN的关键点之一就是它们可以用来连接到先前的信息到当前的任务上 ,例如使用过去的视频段来推测对当前段的理解。

  • 情况1:我们仅仅需要知道先前不久远的信息来执行当前的任务,例如,一个基于先前的词来预测下一个词的语言模型,如预测“the clouds are in the sky”中最后的词,我们并不需要任何其它的上下文,就能知道下一个词显然是sky。在这样的场景中,相关的信息和预测的词位置之间的间隔是非常小的。
    短距离的相关信息和位置间隔
  • **情况2:**假设我们需要预测“ I grew up in France… I speak fluent French”最后的词。当前的信息建议下一个词可能是一种语言的名字,但如果我们需要弄清楚是什么语言,我们需要先前提到的里离当前位置很远的France的上下文,即:相关信息和当前预测位置之间的间隔非常大。而在这个间隔不断增大的时候,RNN也会丧失学习到连接如此远的信息的能力
    长间隔的相关信息和位置间隔

LSTM的结构

所有的RNN都具有一种重复神经网络模块的链式模式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个tanh层:
标准RNN中的重复模块包含单一的层
LSTM同样有类似结构,但是重复的模块结构有所不同,不同于单一神经网络层,LSTM是有四个 ,以一种非常特殊的方式进行交互:
LSTM中的重复模块包含四个交互的层
LSTM中的图标
在上面的图例中,黑线代表向量的传输,从一个节点的输出到其它节点的输入。粉色的圈代表pointwise(逐点)的操作,诸如向量的和。黄色矩阵为学习到的神经网络层,合在一起的线表示向量的连接,分开的线表示内容被复制,分发到不同的位置。σ表示sigmod函数。

LSTM的核心思想

LSTM的关键就是细胞状态,水平线在图上方贯穿运行。
细胞状态类似于传送带,直接在整个链上运行,只有一些少量的线性交互,所以信息在上面流传能很容易地保持不变。
细胞状态
LSTM中有三扇门,门结构有去除/增加信息到细胞状态的能力。门可以实现选择性地让信息通过,它包含一个Sigmoid神经网络层和一个poitwise(逐点)乘法操作。Sigmoid层的输出(是一个向量)在0-1之间,表示让对应信息通过的权重(占比),如0表示不让任何信息通过,1表示让所有信息通过

LSTM的进一步理解

第一步:决定丢弃/更新信息

LSTM中的第一步是决定我们应该从细胞状态中丢弃什么信息。这个决定由遗忘门 层完成:

  • 该门会读取 h t − 1 h_{t-1} ht1 x t x_t xt,输出一个0-1之间的数值(权重)给每个在细胞状态 C t − 1 C_{t-1} Ct1中的数字,1表示完全保留,0表示完全放弃。

如在语言模型中,细胞状态可能包含当前主语的性别,因此正确的代词可以被选择出来;当看到新的主语,则旧的主语就会被忘记。
决定丢弃的信息
下一步是确定什么样的新信息需要被存放在细胞状态中。这里包含两个部分:

  • Sigmoid层称‘输入门层’决定什么值将要更新
  • 然后,一个tanh层创建一个新的候选值向量, C ~ t \tilde{C}_t C~t,会被加入到状态中

确定更新的信息

接下来,我们会讲这两个信息对状态的更新。如在语言模型例子中,我们希望增加新的主语的性别到细胞状态中,来替代旧的需要忘记的主语。

第二步:更新细胞状态

现在是更新旧细胞状态的时间了, C t − 1 C_{t-1} Ct1更新为 C t C_t Ct,前面的步骤已经决定了我们将会丢弃与更新什么,我们现在就是要实际去完成。

  • 旧状态 C t − 1 C_{t-1} Ct1 f t f_t ft相乘,丢弃掉我们确定需要丢弃的信息,接着加上 i t ∗ C ~ t i_t*\tilde{C}_t itC~t,这就是新的候选值,根据我们决定更新每个状态的程度进行变化
    更新细胞状态
第三步:确定输出信息

最终,我们需要确定输出什么值。这个输出基于我们的细胞状态,但是也是一个过滤后的状态。

  • 首先,一个Sigmoid层来确定细胞状态的哪个部分将输出出去
  • 接着,将细胞状态通过Tanh进行处理(得到一个在-1到1之间的值),并将它和Sigmoid门的输出相乘,最终我们仅仅会输出我们确定输出的那部分

确定输出信息
在语言模型的例子中,因为它就看到了一个代词,可能需要输出与一个动词相关的信息。例如,可能输出代词是单数还是负数,这样如果是动词的话,我们也能知道动词需要进行的词性变化

LSTM的经典衍生

以上都为原始的LSTM,但在实际中,几乎所有包含LSTM的论文都采用了微小的变体,接下来介绍几种流行的变体。

Extending LSTM with ‘Peephole Connections’

这个衍生模型由Gers & Schmidhuber(2000)提出,增加了Peephole Connection,也就是说,让门层也会接受细胞状态的输入。
Peephole连接
在上面的图例中,增加了Peephole到每个门上,但是许多论文会加入部分的Peephole而非所有都加。

Coupled LSTM

另一个衍生模型是通过Coupled(耦合)遗忘门和输入门,不同于之前的分开确定 忘记的信息 和需要添加的新信息,耦合之后这两内容是一同作出决定。模型仅仅会当我们将要输入在当前位置时忘记,模型仅仅输入新的值到那些我们已经忘记旧的信息的那些状态。耦合

GRU

另一个改动较大的变体是Gated Recurrent Unit(GRU),由Cho,et al.(2004)提出。它将遗忘门和输入吗合成了一个单一的更新门,同时还混合了细胞状态和隐藏状态,以及一些其它改动。最终的模型比标准的LSTM模型要简单,是非常流行的变体。
GRU

其它的一些理解

RNN
如图,RNN网络进行反向传播时:

  • ∗ w &lt; 1 *w&lt;1 w<1如0.9,误差不断乘以权重,误差传到初始时间的时候,会成为一个无限接近0的数,所以对于初始时刻,误差就相当于消失了,称之为梯度消失/梯度弥散(Gradient vanishing)
  • 反之,若 ∗ w &gt; 1 *w&gt;1 w>1,不断累乘,则最后变成了无限大的数,RNN就被这无限大的数撑死了,称之为梯度爆炸(Gradient exploding)

所以,RNN只能有短期记忆,这就是普通RNN无法回忆起久远记忆的原因,LSTM就是为了解决这个问题而产生的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值