赞
踩
L
S
T
M
LSTM
LSTM的网络结构是1997年由
H
o
c
h
r
e
i
t
e
r
Hochreiter
Hochreiter和
S
c
h
m
i
d
h
u
b
e
r
Schmidhuber
Schmidhuber提出的,全称是Long Short Term Memory Networks$的缩写,字面翻译就是长的短时记忆网络,其实解决的仍是短时记忆问题,只不过这种短时记忆比较长,能在一定程度上解决长时依赖的问题。这种网络结构也是链式循环的网络结构,但其内部有着更加复杂的结构,其抽象网络结构示意图如下所示:
由图可以看出,LSTM由三个门来控制,分别是输入门、遗忘门和输出门。输入门控制着网络的输入,遗忘门控制着记忆单元,输出门控制着网络的输出。其中最重要的就是遗忘门,它的作用是决定之前的哪些记忆被保留,哪些记忆将被去掉,正是由于遗忘门的作用,使得LSTM具有了长时记忆的功能,对于给定的任务,遗忘门能够自己学习保留多少以前的记忆,这使得不再需要人为干扰,网络就能够自主学习。
下面从具体的内部结构来解释LSTM的网络流过程,首先是LSTM内部的结构示意图,如下图所示:首先是整个网络结构中最重要的遗忘门,如下图所示:
C
t
−
1
C_{t-1}
Ct−1作为上一步
t
−
1
t-1
t−1时刻网络中的记忆单元,传入
t
t
t时刻的网络之后,第一步操作是决定它的遗忘程度,将
t
t
t时刻前面的记忆状态乘上一个
0
∼
1
0\sim1
0∼1的系数进行衰减,接着加上
t
t
t时刻学到的记忆作为更新之后的记忆传出网络,作为
t
+
1
t+1
t+1时刻网络的记忆单元,其中
t
−
1
t-1
t−1时刻网络记忆的衰减系数是通过
t
t
t时刻网络的输入和
t
−
1
t-1
t−1网络的输出来确定的,
t
t
t时刻网络学到的记忆也是根据
t
t
t时刻网络的输入和
t
−
1
t-1
t−1时刻网络的输出得到的。
下面介绍记忆的衰减系数是如何得到的,如下图所示:首先将
t
−
1
t-1
t−1时刻的网络输出
h
t
−
1
h_{t-1}
ht−1和这一步的网络输入
x
t
x_t
xt结合起来,然后作用线性变换
W
f
⋅
[
h
t
−
1
,
x
t
]
+
b
f
W_f\cdot[h_{t-1},x_t]+b_f
Wf⋅[ht−1,xt]+bf,最后再经过
s
i
g
m
o
i
d
sigmoid
sigmoid激活函数,将结果映射到
0
∼
1
0\sim1
0∼1作为记忆的衰减系数,记作
f
t
f_t
ft。可以看到网络具体要保留多少记忆是由前一时刻的输出和这一时刻的输入共同决定的。
接着介绍
t
t
t时刻学到的记忆是如何计算的,如下图所示:首先对该时刻学到的记忆,对它应用一个衰减系数,这个系数应用跟上面的方式相同,再使用线性变换,然后使用
s
i
g
m
o
i
d
sigmoid
sigmoid激活函数,将结果映射到
0
∼
1
0\sim1
0∼1之间,这个结果作为当前学习到记忆的衰减系数,记作
i
t
i_t
it。当前状态学习到的记忆
G
t
~
\tilde{G_t}
Gt~是通过线性变换
W
c
⋅
[
h
t
−
1
,
x
t
]
+
b
c
W_c\cdot[h_{t-1},x_t]+b_c
Wc⋅[ht−1,xt]+bc和
t
a
n
h
tanh
tanh激活函数得到的。最后将
t
−
1
t-1
t−1时刻的衰减系数
f
t
f_t
ft乘
t
−
1
t-1
t−1时刻的记忆
C
t
−
1
C_{t-1}
Ct−1,加上该时刻
t
t
t下学到的记忆
C
t
~
\tilde{C_t}
Ct~乘以它对应的衰减系数
i
t
i_t
it,这样便得到了
t
t
t时刻下的记忆状态
C
t
C_t
Ct,可以用下图显示具体的计算过程。
下面介绍输出门。
当前时刻
t
t
t的网络输出
h
t
h_t
ht取决于当前时刻
t
t
t的记忆状态
C
t
C_t
Ct和
t
t
t时刻的输入
x
t
、
t
−
1
x_t、t-1
xt、t−1时刻的输出
h
t
h_t
ht,具体的计算过程如下图所示:首先使用类似于计算记忆衰减系数的方法计算得到输出门的系数
o
t
o_t
ot,这个系数决定了输出的多少,最后网络的输出由
h
t
=
o
t
×
t
a
n
h
(
C
t
)
h_t=o_t\times tanh(C_t)
ht=ot×tanh(Ct)得到,这就是输出门如何控制网络输出的原理。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。