本文传动机
LSTM, long short term memory
在介绍LSTM之前,我们先来看一下RNN的结构:
在标准RNN模型中,只有一个非常简单的模块,如图中的tanh层。
LSTM是类似的由重复结构(称为细胞,cell)组成的模型,但是重复的结构拥有不同的模块。不同于RNN,每一个结构中有四个模块,以一种非常特殊的方式进行交互。
接下来会我们一步一步地剖析LSTM解析图。
模型中使用的各元素图标
在上面的图例中,每一条黑线传输者一整个向量,从一个节点的输出到其他节点的输入。粉色的圈代表Pointwise操作(即矩阵间对应元素的计算)。黄色的方框表示的是学习到的神经网络层。合在一起的线表示向量的连接,分开来的线表示内容被复制,然后被分发到不同的位置。
LSTM核心思想
LSTM的关键在于细胞(cell)状态的保留和每个细胞中的门。
LSTM的细胞状态类似于传送带,状态在整个模型的链上运行,只有一些少量的线性交互:
若只有上面的那条水平线是没有办法实现添加或者删除信息的,需要通过一种门的结构来实现。门结构可以实现选择性地让信息通过,主要是通过一个sigmoid的神经层和一个逐点相乘的操作来实现:
sigmoid层输出的每个元素都是一个在0和1之间的实数,表示让对应信息通过的权重(比如0表示“不让信息通过”, 1表示“让所有信息通过”)。
LSTM就是通过三种这样的门结构来实现信息的保护和控制。这三个门分别为输入门、遗忘门和输出门。
LSTM解析
接下来通过三种LSTM结构中不同的门来逐步了解LSTM的原理
遗忘门
LSTM每个cell的第一步是决定我们要从细胞中丢弃什么信息,这通过遗忘门来实现。该门会读取和,输出一个之间的数值,1表示“完全保留”,0表示“完全遗忘”,该数值与前一细胞状态进行元素乘积操作。
其中是前一细胞状态,为前一细胞输入,表示当前细胞输入。
输入门
细胞的下一步是决定让多少新的信息加入到细胞状态中来。
实现这个需要包括两个步骤:
1. 一个“input gate layer”的sigmoid层决定哪些信息需要更新;一个tanh层生成一个向量(也就是备选的用来更新的细胞状态)
2. 更新细胞状态()
旧状态与相乘,确定了我们需要丢弃的信息;备选状态与相乘,确定了新的候选值。
输出门
细胞最终确定输出什么值。分为两个步骤:
1. 运行一个sigmoid层来确定细胞状态的那部分将输出出去
2. 细胞状态通过tanh进行处理(得到一个-1到1之间的值)并将它与sigmoid门的输出相乘,最终我们仅仅会输出我们确定输出的部分
LSTM总结
LSTM的公式如下:
ConvLSTM
ConvLSTM的核心本质还是和LSTM一样,将上一层的输出作为下一层的输入。不同的地方在于ConvLSTM加入了卷积操作之后,不仅能够得到时序关系,还能够想卷积层一样提取空间特征,这样ConvLSTM就可以同时提取时间特征和空间特征(时空特征),并且状态与状态之间的切换也换成了卷积运算(下面的式中*表示卷积运算):