本文是看了[译] 理解 LSTM(Long Short-Term Memory, LSTM) 网络之后写的笔记。

1.Long Short Term 网络—— 一般就叫做 LSTM ——是一种 RNN 特殊的类型,可以学习长期依赖信息。

LSTM 通过刻意的设计来避免长期依赖问题。记住长期的信息在实践中是 LSTM 的默认行为,而非需要付出很大代价才能获得的能力!

所有 RNN 都具有一种重复神经网络模块的链式的形式。在标准的 RNN 中,这个重复的模块只有一个非常简单的结构,例如一个 tanh 层。

LSTM(Long short-Term Memory)长短期记忆网

LSTM 同样是这样的结构,但是重复的模块拥有一个不同的结构。不同于 单一神经网络层,这里是有四个,以一种非常特殊的方式进行交互。

LSTM(Long short-Term Memory)长短期记忆网

2.LSTM 的核心思想

LSTM 的关键就是细胞状态,水平线在图上方贯穿运行。

细胞状态类似于传送带。直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易。

细胞状态流转

LSTM(Long short-Term Memory)长短期记忆网

控结构

LSTM(Long short-Term Memory)长短期记忆网
LSTM 使用“门”的结构来去除或者增加信息细胞状态的能力。门是一种让信息选择式通过的方法
包含sigmoid 神经网络层和一个 pointwise乘法操作[0,1]
Sigmoid 层输出 0 到 1 之间的数值,描述每个部分有多少量可以通过。0 代表“不许任何量通过”,1 就指“允许任意量通过”!
LSTM 拥有三个门,来保护和控制细胞状态:输入门、输出门、遗忘门
3.逐步理解 LSTM
(1)遗忘门(忘记门)
在我们 LSTM 中的第一步是决定我们会从细胞状态中丢弃什么信息。这个决定通过一个称为忘记门层完成。该门会读取h_{t-1}x_t,输出一个在 0 到 1 之间的数值给每个在细胞状态C_{t-1}中的数字。1 表示“完全保留”,0 表示“完全舍弃”。
LSTM(Long short-Term Memory)长短期记忆网
(2)输入门
确定什么样的新信息被存放在细胞状态中。这里包含两个部分
Ø第一sigmoid称“输入门层” 决定什么值我们将要更新
Ø第二,tanh创建一个新的候选值向量,\tilde{C}_t,会被加入到状态中
以语言模型为例,我们希望增加新的代词细胞状态中,来替代旧忘记代词

LSTM(Long short-Term Memory)长短期记忆网

(3)更新细胞状态

现在是更新旧细胞状态的时间了,C_{t-1}更新为C_t。前面的步骤已经决定了将会做什么,我们现在就是实际去完成。
我们把旧状态与f_t相乘,丢弃掉我们确定需要丢弃的信息。接着加上i_t * \tilde{C}_t。这就是新的候选值,根据我们决定更新每个状态的程度进行变化。

具体操作:把旧状态与f_t相乘,丢弃掉我们确定需要丢弃的信息;接着加上新的候选信息,即i_t* \tilde{C}_t

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

LSTM(Long short-Term Memory)长短期记忆网


(4)更新细胞状态,输出门

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

输出信息:输出“过滤后”的细胞状态。首先,我们运行一个sigmoid层(输出门)来确定细胞状态的哪个部分将输出出去。接着,我们把细胞状态通过tanh进行处理(得到一个在-11之间的值)并将它sigmoid的输出相乘得到输出信息。
LSTM(Long short-Term Memory)长短期记忆网

相关文章: