LSTM
[TOC]
1.LSTM网络
长短期记忆网络( Long Short-Term Memory Network , LSTM ) [Gers et al.,2000; Hochreiter et al., 1997] 是循环神经网络的一个变体,长短期记忆是指长的“短期记忆”,可以有效地解决简单循环神经网络的梯度爆炸或消失问题.
LSTM 网络的循环单元结构
2.LSTM核心思想
LSTM 的关键是 cell 状态,即记忆单元c。cell 状态的传输就像一条传送带,向量从整个 cell 中穿过,只是做了少量的线性操作,这种结构能很轻松地实现信息从整个 cell 中穿过而不做改变(这样就可以实现长时期地记忆保留)。在 LSTM 网络中,记忆单元c可以在某个时刻捕捉到某个关键信息,并有能力将此关键信息保存一定的时间间隔.记忆单元c中保存信息的生命周期要长于短期记忆,但又远远短于长期记忆,因此称为长短期记忆( Long Short-Term Memory )。
LSTM 也有能力向 cell 状态中添加或删除信息,这是由称为门(gates)的结构仔细控制的。门可以选择性的让信息通过,它们由 sigmoid 神经网络层和逐点相乘实现。每个 LSTM 有三个这样的门结构来实现控制信息(分别是 forget gate 遗忘门;input gate 输入门;output gate 输出门)
3.逐步理解LSTM
3.1 遗忘门
遗忘门$f_t$控制上一个时刻的内部状态$c_{t-1}$需要遗忘多少信息。它的输入是$h_{t-1}$和 $x_t$,输出是一个数值都在 0~1 之间的向量(向量长度和$c_{t-1}$一样),表示让$c_{t-1}$的各部分信息通过的比重,0 表示不让任何信息通过,1 表示让所有信息通过。
假设一个语言模型试图基于前面所有的词预测下一个单词,在这种情况下,每个 cell 状态都应该包含了当前主语的性别(保留信息),这样接下来我们才能正确使用代词。但是当我们又开始描述一个新的主语时,就应该把旧主语的性别给忘了才对(忘记信息)。
3.2 输入门
输入门$i_t$控制当前时刻的候选状态$\widetilde{c}$有多少信息需要保存。实现这个需要包括两个步骤:首先,一个叫做 input gate layer
的 sigmoid 层决定哪些信息需要更新。另一个$tanh$层创建一个新的候选状态向量 $\widetilde{c}$。最后,我们把这两个部分联合起来对 cell 状态进行更新。
在我们的语言模型的例子中,我们想把新的主语性别信息添加到 cell 状态中,替换掉老的状态信息。有了上述的结构,我们就能够更新 cell 状态了,即把$c_{t-1}$更新为$c_t$。从结构图中应该能一目了然,首先我们把旧的状态$c_{t-1}$和$f_t$相乘,把一些不想保留的信息忘掉,然后加上$i_t*\widetilde{c}_t$。这部分信息就是我们要添加的新内容。
3.3 输出门
输出门$o_t$控制当前时刻的内部状态$c_t$有多少信息需要输出给外部状态$h_t$。这个输出主要是依赖于 cell 状态 $C_t$,但是是经过筛选的版本。首先,经过一个 sigmoid 层,它决定$ C_t $中的哪些部分将会被输出。接着,我们把 $C_t $通过一个$ tanh $层(把数值归一化到 - 1 和 1 之间),然后把$ tanh $层的输出和 simoid 层计算出来的权重相乘,这样就得到了最后的输出结果。
在语言模型例子中,假设我们的模型刚刚接触了一个代词,接下来可能要输出一个动词,这个输出可能就和代词的信息有关了。比如说,这个动词应该采用单数形式还是复数形式,那么我们就得把刚学到的和代词相关的信息都加入到 cell 状态中来,才能够进行正确的预测。
📒tips:一般在深度网络参数学习时,参数初始化的值一般都比较小.但是在训练 LSTM 网络时,过小的值会使得遗忘门的值比较小.这意味着前一时刻的信息大部分都丢失了,这样网络很难捕捉到长距离的依赖信息.并且相邻时间间隔的梯度会非常小,这会导致梯度弥散问题.因此遗忘的参数初始值一般都设得比较大,其偏置向量 𝒄 𝑔 设为 1 或 2 。
推荐阅读:神经网络与深度学习