LSTM以及Conv LSTM

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30241709/article/details/88220306

本文传动机

LSTM, long short term memory

模型中使用的各元素图标

LSTM核心思想

LSTM解析

遗忘门

输入门

输出门

LSTM总结

ConvLSTM


LSTM, long short term memory

在介绍LSTM之前,我们先来看一下RNN的结构:

标准RNN模型

在标准RNN模型中,只有一个非常简单的模块,如图中的tanh层。

LSTM是类似的由重复结构(称为细胞,cell)组成的模型,但是重复的结构拥有不同的模块。不同于RNN,每一个结构中有四个模块,以一种非常特殊的方式进行交互。

LSTM模型

接下来会我们一步一步地剖析LSTM解析图。

模型中使用的各元素图标

LSTM模型中使用的图标含义

在上面的图例中,每一条黑线传输者一整个向量,从一个节点的输出到其他节点的输入。粉色的圈代表Pointwise操作(即矩阵间对应元素的计算)。黄色的方框表示的是学习到的神经网络层。合在一起的线表示向量的连接,分开来的线表示内容被复制,然后被分发到不同的位置。

LSTM核心思想

LSTM的关键在于细胞(cell)状态的保留和每个细胞中的门。

LSTM的细胞状态类似于传送带,状态在整个模型的链上运行,只有一些少量的线性交互:

LSTM的细胞状态流

若只有上面的那条水平线是没有办法实现添加或者删除信息的,需要通过一种门的结构来实现。门结构可以实现选择性地让信息通过,主要是通过一个sigmoid的神经层和一个逐点相乘的操作来实现:

LSTM中的门(gate)结构

sigmoid层输出的每个元素都是一个在0和1之间的实数,表示让对应信息通过的权重(比如0表示“不让信息通过”, 1表示“让所有信息通过”)。

LSTM就是通过三种这样的门结构来实现信息的保护和控制。这三个门分别为输入门遗忘门输出门

LSTM解析

接下来通过三种LSTM结构中不同的门来逐步了解LSTM的原理

遗忘门

LSTM每个cell的第一步是决定我们要从细胞中丢弃什么信息,这通过遗忘门来实现。该门会读取h_{t-1}x_t,输出一个[0,1]之间的数值,1表示“完全保留”,0表示“完全遗忘”,该数值与前一细胞状态c_{t-1}进行元素乘积操作。

遗忘门

其中c_{t-1}是前一细胞状态,h_{t-1}为前一细胞输入,x_t表示当前细胞输入。

输入门

细胞的下一步是决定让多少新的信息加入到细胞状态中来。

实现这个需要包括两个步骤:

1. 一个“input gate layer”的sigmoid层决定哪些信息需要更新;一个tanh层生成一个向量(也就是备选的用来更新的细胞状态\hat{C}_t

输入层中的sigmoid层和tanh层

2. 更新细胞状态(C_{t-1} \rightarrow C_t

输入门中更新细胞状态

旧状态C_{t-1}f_t相乘,确定了我们需要丢弃的信息;备选状态\hat{C}_ti_t相乘,确定了新的候选值。

输出门

细胞最终确定输出什么值。分为两个步骤:

1. 运行一个sigmoid层来确定细胞状态的那部分将输出出去

2. 细胞状态通过tanh进行处理(得到一个-1到1之间的值)并将它与sigmoid门的输出相乘,最终我们仅仅会输出我们确定输出的部分

输出门

LSTM总结

LSTM的公式如下:

f_t=\sigma(W_{x_f}x_t+W_{h_f}h_{t-1}+W_{c_f}\odot C_{t-1}+b_f)

i_t=\sigma(W_{x_i}x_t+W_{h_i}h_{t-1}+W_{c_i}\odot C_{t-1}+b_i)

C_t=f_t\odot C_{t-1}+i_t \odot \tanh (W_{x_c}x_t + W_{h_c}h_{t-1}+b_c)

o_t = \sigma (W_{x_o}x_t+W_{h_o}h_{t-1}+W_{c_o}\odot c_t + b_o)

h_t=o_t\odot \tanh(C_t)

ConvLSTM

ConvLSTM

ConvLSTM的核心本质还是和LSTM一样,将上一层的输出作为下一层的输入。不同的地方在于ConvLSTM加入了卷积操作之后,不仅能够得到时序关系,还能够想卷积层一样提取空间特征,这样ConvLSTM就可以同时提取时间特征和空间特征(时空特征),并且状态与状态之间的切换也换成了卷积运算(下面的式中*表示卷积运算):

f_t=\sigma(W_{x_f}*\mathcal{X}_t+W_{h_f}*\mathcal{H}_{t-1}+W_{c_f}\odot \mathcal{C}_{t-1}+b_f)

i_t=\sigma(W_{x_i}*\mathcal{X}_t+W_{h_i}*\mathcal{H}_{t-1}+W_{c_i}\odot \mathcal{C}_{t-1}+b_i)

\mathcal{C}_t=f_t\odot \mathcal{C}_{t-1}+i_t\odot \tanh(W_{x_c}*\mathcal{X}_t+W_{h_c}*\mathcal{H}_{t-1}+b_c)

o_t=\sigma(W_{x_o}*\mathcal{X}_t+W_{h_o}*\mathcal{H}_{t-1}+W_{c_o}\odot \mathcal{C}_t+b_o)

\mathcal{H}_t=o_t\odot tanh(\mathcal{C}_t)

猜你喜欢

转载自blog.csdn.net/qq_30241709/article/details/88220306