3. RNN神经网络-LSTM模型结构

Posted huangyc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3. RNN神经网络-LSTM模型结构相关的知识,希望对你有一定的参考价值。

1. RNN神经网络模型原理

2. RNN神经网络模型的不同结构

3. RNN神经网络-LSTM模型结构

1. 前言

之前我们对RNN模型做了总结。由于RNN也有梯度消失的问题,因此很难处理长序列的数据,大牛们对RNN做了改进,得到了RNN的特例LSTM(Long Short-Term Memory),它可以避免常规RNN的梯度消失,因此在工业界得到了广泛的应用。下面我们就对LSTM模型做一个总结。

2. LSTM模型结构

我们先看下LSTM的整体结构。
技术图片

由于RNN梯度消失的问题,大牛们对于序列索引位置t的隐藏结构做了改进,可以说通过一些技巧让隐藏结构复杂了起来,来避免梯度消失的问题,这样的特殊RNN就是我们的LSTM。由于LSTM有很多的变种,这里我们以最常见的LSTM为例讲述。

2.1 细胞状态

在每个序列索引位置t时刻向前传播的除了和RNN一样的隐藏状态(h_t),还多了另一个隐藏状态,如图中上面的长横线。这个隐藏状态我们一般称为细胞状态(Cell State),记为(C_t)。如下图所示:

技术图片

2.2 LSTM之遗忘门

遗忘门(forget gate)顾名思义,是控制是否遗忘的,在LSTM中即以一定的概率控制是否遗忘上一层的隐藏细胞状态。遗忘门子结构如下图所示:

技术图片

图中输入的有上一序列的隐藏状态(h_{t-1})和本序列数据(x_t),通过一个激活函数,一般是sigmoid,得到遗忘门的输出(f_t)。由于sigmoid的输出(f_t)在[0,1]之间,因此这里的输出(f_t)代表了遗忘上一层隐藏细胞状态的概率。用数学表达式即为:

[ f_{t} = sigma(W_fh_{t-1} + U_fx_{t} + b_f) ]
其中(W_f,U_f,b_f)为线性关系的系数和偏倚,和RNN中的类似。(sigma)为sigmoid激活函数。

2.3 LSTM之输入门

输入门(input gate)负责处理当前序列位置的输入,它的子结构如下图:

技术图片

从图中可以看到输入门由两部分组成,第一部分使用了sigmoid激活函数,输出为(i_t)第二部分使用了(tanh)激活函数,输出为(a_t),两者的结果后面会相乘再去更新细胞状态。用数学表达式即为:
[ i_{t} = sigma(W_ih_{t-1} + U_ix_{t} + b_i) ]

[ a_{t} =tanh(W_ah_{t-1} + U_ax_{t} + b_a) ]
其中(W_i,U_i,b_i,W_a,U_a,b_a)为线性关系的系数和偏倚,和RNN中的类似。(sigma)为sigmoid激活函数。

2.4 LSTM之细胞状态更新

在研究LSTM输出门之前,我们要先看看LSTM之细胞状态。前面的遗忘门和输入门的结果都会作用于细胞状态(C_t)。我们来看看从细胞状态(C_{t-1})如何得到(C_t)。如下图所示:

技术图片
细胞状态(C_t)由两部分组成,第一部分是(C_{t-1})和遗忘门输出(f_t)的乘积,第二部分是输入门的(i_t)(a_t)的乘积,即:

[ C_{t} = C_{t-1} odot f_{t} + i_{t} odot a_{t} ]

2.5 LSTM之输出门

有了新的隐藏细胞状态(C_t),我们就可以来看输出门了,子结构如下:

技术图片

从图中可以看出,隐藏状态(h_t)的更新由两部分组成,第一部分是(o_t),它由上一序列的隐藏状态(h_{t-1})和本序列数据(x_t),以及激活函数sigmoid得到,第二部分由隐藏状态(C_t)(tanh)激活函数组成, 即:

[ o_{t} = sigma(W_oh_{t-1} + U_ox_{t} + b_o) ]

[ h_{t} = o_{t} odot tanh(C_{t}) ]

3. 总结

通过本节的剖析,相信大家对于LSTM的模型结构已经有了解了。当然,有些LSTM的结构和上面的LSTM图稍有不同,但是原理是完全一样的。

以上是关于3. RNN神经网络-LSTM模型结构的主要内容,如果未能解决你的问题,请参考以下文章

深度学习5 RNN与LSTM

深度学习5 RNN与LSTM

了解RNN模型LSTM模型GRU模型,及掌握注意力机制

RNN和LSTM

深度学习RNNLSTMGRU 网络使用教程

深度学习RNNLSTMGRU 网络使用教程