LSTM(Long-Short Term Memory)长短期记忆网络
一、LSTM结构
LSTM(Long-Short Term Memory),长短期记忆网络是RNN的一种变形结构。RNN因为梯度消失的原因只有短期记忆,LSTM网络通过精妙的Cell门控制将短期记忆与长期记忆结合起来,并在一定程度上解决了梯度消失的问题。
所有RNN都具有一种重复神经网络模块的链式形式。在标准的RNN中,重复的模块只有一个非常简单的结构,比如一个tanh层。
- 标准的RNN:
LSTM的结构:
LSTM同样的结构,但是重复的模块拥有一个不同的结构,不同于单一层,这里是由四个,以一种非常特殊的方式进行交互
- LSTM解析图标:
- 橙黄色矩形:学习得到的神经网络层
- 粉色圆形:代表一些运算,比如加法,乘法
- 黑色单箭头:向量的传输
- 两个箭头合并:表示向量的连接
- 一个箭头分开:表示向量的复制
二、LSTM的核心思想
- LSTM的关键就是细胞Cell状态,水平线在图上方贯穿运行。
- Cell细胞状态像传送带一样,直接在整个链上运行,只有一些少量的线性交互,信息在上线流传保持不变很容易。
LSTM有通过精心设计的称作为“门”的结构来去除或者增加信息到细胞状态的能力。门是一种让信息选择通过的方法。包含一个sigmoid神经网络层和一个按位的乘法操作
sigmoid层输出0~1之间的数值,描述每个部分有多少量可以通过。0代表不允许
任何量通过,1代表允许任意量通过。LSTM拥有三个门,来保护和控制细胞状态。
三、LSTM的推理
- LSTM中的第一步是决定我们会从细胞状态中丢弃什么信息。第一步的决定四通过一个叫做忘记门层完成。忘记门层会读ht-1和xt,输出一个0~1之间的数值给每个在细胞状态Ct-1中的数字,1表示完全保留,0表示完全舍弃
- 下一步是确定什么样的新信息被存放在细胞状态**中**,这里包含两个部分:
sigmoid层叫做输入门层,决定将要更新的值
tanh层创建一个新的候选值向量Ct,会被假如到状态中。
- 更新旧细胞状态,把Ct-1更新为Ct。就是把旧状态与ft相乘,丢弃掉确定需要丢弃的信息,然后加上it*Ct,变成新的候选值。
最后一步,确定需要输出什么值。这个输出将会基于我们的细胞状态,但是也是一个过滤后的版本。首先是,运行一个sigmoid层来确定细胞状态的哪个部分将被输出。然后,把细胞状态通过tanh进行处理,得到一个-1~1之间的值,将它和sigmoid门的输出相乘。
四、LSTM的变体
让门层也接受细胞状态的输入
使用coupled忘记和输入门
区别于标准LSTM的分开确定忘记什么和需要添加什么新的信息,变体的LSTM是两者一同做出决定。
- Gated Recurrent Unit(GRU)变体,是将忘记门和输入门合成了一个单一的更新门。还混合了细胞状态和隐藏状态的,也是非常流行的变体