赞
踩
预备知识:
之前我们对RNN模型做了总结。由于RNN也有梯度消失的问题,因此很难处理长序列的数据。大牛们对RNN做了改进,得到了RNN的特例LSTM(Long Short-Term Memory),它可以避免常规RNN的梯度消失,因此在工业界得到了广泛的应用。下面我们就对LSTM模型做一个总结。
我们先看下LSTM的整体结构。
由于RNN梯度消失的问题,大牛们对于序列索引位置t的隐藏结构做了改进,可以说通过一些技巧让隐藏结构复杂了起来,来避免梯度消失的问题,这样的特殊RNN就是我们的LSTM。由于LSTM有很多的变种,这里我们以最常见的LSTM为例讲述。
在每个序列索引位置t时刻向前传播的除了和RNN一样的隐藏状态
h
t
ht
ht,还多了另一个隐藏状态,如图中上面的长横线。这个隐藏状态我们一般称为细胞状态(Cell State),记为
C
t
Ct
Ct。如下图所示:
遗忘门(forget gate)顾名思义,是控制是否遗忘的,在LSTM中即以一定的概率控制是否遗忘上一层的隐藏细胞状态,并且以某种方式避免梯度随时间反向传播时引发的梯度消失和梯度爆炸的问题。遗忘门子结构如下图所示:
图中输入的有上一序列的隐藏状态
h
t
−
1
h_{t−1}
ht−1和本序列数据
x
t
x_t
xt,通过一个激活函数,一般是
s
i
g
m
o
i
d
sigmoid
sigmoid,得到遗忘门的输出
f
t
f_t
ft。由于
s
i
g
m
o
i
d
sigmoid
sigmoid的输出
f
t
f_t
ft在[0,1]之间,因此这里的输出ft代表了遗忘上一层隐藏细胞状态的概率。用数学表达式即为:
其中
W
f
W_f
Wf,
U
f
U_f
Uf,
b
f
b_f
bf为线性关系的系数和偏倚,和RNN中的类似。σ为sigmoid激活函数。
输入门(input gate)负责处理当前序列位置的输入,用于控制当前输入数据流入记忆单元的多少,即有多少输入信息可以保存到细胞状态中。它的子结构如下图:
从图中可以看到输入门由两部分组成,第一部分使用了
s
i
g
m
o
i
d
sigmoid
sigmoid激活函数,输出为it第二部分使用了
t
a
n
h
tanh
tanh激活函数,输出为
a
t
a_t
at,两者的结果后面会相乘再去更新细胞状态。用数学表达式即为:
其中 W i W_i Wi, U i U_i Ui, b i b_i bi, W a W_a Wa, U a U_a Ua, b a b_a ba为线性关系的系数和偏倚,和RNN中的类似。σ为sigmoid激活函数。
在研究LSTM输出门之前,我们要先看看LSTM之细胞状态。前面的遗忘门和输入门的结果都会作用于细胞状态
C
t
C_t
Ct。我们来看看从细胞状态
C
t
−
1
C_{t−1}
Ct−1如何得到
C
t
C_t
Ct。如下图所示:
细胞状态
C
t
C_t
Ct由两部分组成,第一部分是
C
t
−
1
C_{t−1}
Ct−1和遗忘门输出ft的乘积,第二部分是输入门的
i
t
i_t
it和
a
t
a_t
at的乘积,即:
有了新的隐藏细胞状态
C
t
C_t
Ct,我们就可以来看输出门了,子结构如下:
从图中可以看出,隐藏状态ht的更新由两部分组成,第一部分是
o
t
o_t
ot,它由上一序列的隐藏状态
h
t
−
1
h_{t−1}
ht−1和本序列数据
x
t
x_t
xt,以及激活函数
s
i
g
m
o
i
d
sigmoid
sigmoid得到,第二部分由隐藏状态
C
t
C_t
Ct和
t
a
n
h
tanh
tanh激活函数组成, 即:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。