LSTM (Long Short-Term Memory)

LSTM (Long Short-Term Memory)

LSTM的产生

LSTM产生的原因:
第一代RNN在处理长序列时,该记住的信息没记住,可能不该记住的信息却记得很牢。

而LSTM通过引入巧妙的可控自循环,能产生让梯度能够得以长时间可持续流动的路径。

标准的RNN结构如下,这个重复的结构模块只有一个非常简单的结构,例如一个tanh层。

LSTM (Long Short-Term Memory)

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

LSTM (Long Short-Term Memory)

各个 符号的意义:
LSTM (Long Short-Term Memory)

LSTM通过各种门来实现信息的添加与删除,
门可以实现选择性地让信息通过,主要是通过一个sigmoid层(门)和点乘操作来实现的。
Sigmoid 函数可以将信号转化为[0,1]之间的数(相当于一个筛子),再通过点乘操作来筛选数据。
比如,0表示“不让任何信息通过”,1表示“让所有信息通过”,而0.5表示“让一半信息通过”
LSTM (Long Short-Term Memory)

上图即为门与点乘操作

LSTM

结构图

LSTM (Long Short-Term Memory)

遗忘门:

LSTM (Long Short-Term Memory)

遗忘门决定我们会从上一个细胞状态中丢弃什么信息, 通过ht1h_{t-1}xtx_{t} 通过sigmoid 函数生成一个遗忘门fTf_{T}, 来筛选上一个细胞状态Ct1C_{t-1}, 来决定要记住什么和要遗忘什么。

输入门:

LSTM (Long Short-Term Memory)

输入门决定让多少新的信息加入到cell状态中来,这里新的信息指的是上一个状态的隐藏状态ht1h_{t-1}和当前状态的输入xtx_{t}, 他俩经过一个tanh层生成一个备选向量C~t\tilde{C}_{t},同时也生成了一个输入门iti_{t},将C~t\tilde{C}_{t} 经过输入门iti_{t} 后得到的信息就是新加入的信息。

更新细胞状态:

我们将上个细胞状态Ct1C_{t-1} 经过遗忘门ftf_{t} 得到的遗忘后的上一个状态与经过筛选后的新信息相加就得到了当前细胞的状态CtC_{t}

LSTM (Long Short-Term Memory)

输出门:

LSTM (Long Short-Term Memory)

当前时刻的输出, 基于当前的细胞状态进行输出
再次通过ht1h_{t-1}xtx_{t}生成一个输出门,去筛选当前细胞状态经过tanh层的结果

总公式

LSTM (Long Short-Term Memory)