LSTM原理复习整理

LSTM网络

long short term memory,即LSTM,是为了解决长期以来问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。在标准RNN中,这个重复的结构模块只有一个非常简单的结构,例如一个tanh层。
在这里插入图片描述
LSTM 同样是这样的结构,但是重复的模块拥有一个不同的结构。不同于单一神经网络层,这里是有四个,以一种非常特殊的方式进行交互。
在这里插入图片描述
图中使用的各种元素的图标:
在这里插入图片描述
每一条黑线传输着一整个向量,从一个节点的输出到其他节点的输入。粉色的圈代表 pointwise 的操作,如向量的和,黄色的矩阵就是学习到的神经网络层。合在一起的线表示向量的连接,分开的线表示内容被复制,然后分发到不同的位置

LSTM核心思想

LSTM的关键在于细胞的状态整个(绿色的图表示的是一个cell),和穿过细胞的那条水平线。

细胞状态类似于传送带。直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易。
在这里插入图片描述
若只有上面的那条水平线是没办法实现添加或者删除信息的。通过门(gates) 结构来实现选择性地让信息通过,主要是通过一个 sigmoid 的神经层 和一个逐点相乘的操作来实现的。
在这里插入图片描述
sigmoid 层输出(是一个向量)的每个元素都是一个在 0 和 1 之间的实数,表示让对应信息通过的权重(或者占比)。比如, 0 表示“不让任何信息通过”, 1 表示“让所有信息通过”。

LSTM通过三个这样的本结构来实现信息的保护和控制。这三个门分别输入门、遗忘门和输出门。

逐步理解LSTM

通过三个门逐步的了解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 表示“完全舍弃”。

例如基于已经看到的词预测下一个词,在这个问题中,细胞状态可能包含当前主语的性别,因此正确的代词可以被选择出来。当我们看到新的主语,我们希望忘记旧的主语。
在这里插入图片描述
其中 h t − 1 h_{t-1} ht1表示的是上一个cell的输出, σ \sigma σ表示sigmod函数。

输入门

下一步是决定让多少新的信息加入到 cell 状态 中来。实现这个需要包括两个 步骤:首先,一个叫做“input gate layer ”的 sigmoid 层决定哪些信息需要更新;一个 tanh 层生成一个向量,也就是备选的用来更新的内容, C ^ t \hat C_t C^t 。在下一步,把这两部分联合起来,对 cell 的状态进行一个更新。
在这里插入图片描述
现在更新旧细胞状态, C t − 1 C_{t-1} Ct1更新为 C t C_t Ct。前面的步骤已经决定了将会做什么,现在就是实际去完成。

把旧状态与 f t f_t ft相乘,丢弃掉确定需要丢弃的信息。接着加上 i t ∗ C ~ t i_t * \tilde{C}_t itC~t。这就是新的候选值,根据决定更新每个状态的程度进行变化。

在语言模型的例子中,这就是实际根据前面确定的目标,丢弃旧代词的性别信息并添加新的信息的地方。
在这里插入图片描述

输出门

最终,需要确定输出什么值。这个输出将会基于细胞状态,但是也是一个过滤后的版本。首先,运行一个 sigmoid 层来确定细胞状态的哪个部分将输出出去。接着,把细胞状态通过 tanh 进行处理(得到一个在 -1 到 1 之间的值)并将它和 sigmoid 门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。

例如,因为他就看到了一个 代词,可能需要输出与一个 动词 相关的信息。例如,可能输出是否代词是单数还是负数,这样如果是动词的话,我们也知道动词需要进行的词形变化。
在这里插入图片描述

LSTM变体

GRU(Gated Recurrent Unit ),这是由 Cho, et al. (2014) 提出。在 GRU 中,如下图所示,只有两个门:重置门(reset gate)和更新门(update gate)。同时在这个结构中,把细胞状态和隐藏状态进行了合并。最后模型比标准的 LSTM 结构要简单,而且这个结构后来也非常流行。
在这里插入图片描述
其中, r t r_t rt表示重置门, z t z_t zt表示更新门。重置门决定是否将之前的状态忘记。(作用相当于合并了 LSTM 中的遗忘门和传入门)当 h t − 1 h_{t-1} ht1会被忘掉,隐藏状态 h ^ t \hat h_t h^t会被重置为当前输入的信息。更新门决定是否要将隐藏状态更新为新的状态 h ^ t \hat h_t h^t(作用相当于 LSTM 中的输出门) 。

和 LSTM 比较一下:

  • GRU 少一个门,同时少了细胞状态 C t C_t Ct
  • 在 LSTM 中,通过遗忘门和传入门控制信息的保留和传入;GRU 则通过重置门来控制是否要保留原来隐藏状态的信息,但是不再限制当前信息的传入。
  • 在 LSTM 中,虽然得到了新的细胞状态 C t C_{t} Ct,但是还不能直接输出,而是需要经过一个过滤的处理: h t = o t ∗ t a n h ( C t ) h_t=o_t*tanh(C_t) ht=ottanh(Ct);同样,在 GRU 中, 虽然我们也得到了新的隐藏状态 h ^ t \hat h_{t} h^t, 但是还不能直接输出,而是通过更新门来控制最后的输出: h t = ( 1 − z t ) ∗ h t − 1 + z t ∗ h ^ t h_t=(1-z_t)*h_{t-1}+z_t* \hat h_t ht=(1zt)ht1+zth^t

多层LSTM
多层LSTM是将LSTM进行叠加,其优点是能够在高层更抽象的表达特征,并且减少神经元的个数,增加识别准确率并且降低训练时间。

参考资料

[1] https://www.jianshu.com/p/9dc9f41f0b29
[2] http://blog.csdn.net/Jerr__y/article/details/58598296
[3] Stacked Long Short-Term Memory Networks

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值