1.结构
2.计算
例1:
假设
x
1
x_1
x1,
x
2
x_2
x2,
x
3
x_3
x3均为输入,当
x
2
=
1
x_2=1
x2=1的时候将
x
1
x_1
x1加入记忆单元,当
x
2
=
−
1
x_2=-1
x2=−1时将将记忆单元清空,当
x
3
=
1
x_3=1
x3=1的时候输出记忆单元里面的数值。根据规则,最开始记忆单元里面存储的是0,当输入
x
1
=
1
x_1=1
x1=1时因为
x
2
=
0
x_2=0
x2=0,
x
3
=
0
x_3=0
x3=0所以记忆单元和输出都不工作,到了第二列,因为
x
1
=
3
x_1=3
x1=3,
x
2
=
1
x_2=1
x2=1,
x
3
=
0
x_3=0
x3=0,所以将
x
1
=
3
x_1=3
x1=3加入记忆单元,输出依旧为0,第三列,
x
1
=
2
x_1=2
x1=2,
x
2
=
0
x_2=0
x2=0,
x
3
=
0
x_3=0
x3=0,所以
x
1
=
2
x_1=2
x1=2不会被加入到记忆单元,输出依旧为0,第四列
x
1
=
4
x_1=4
x1=4,
x
2
=
1
x_2=1
x2=1,
x
3
=
0
x_3=0
x3=0,所以
x
1
=
4
x_1=4
x1=4会被加入到记忆单元此时记忆单元变为7,输出依然为零,直到出现
x
3
=
1
x_3=1
x3=1,记忆单元的数才会被输出。
例2:
还是假设最开始记忆单元里面储存的是0,经过函数
g
(
x
)
g(x)
g(x)可以得到3,经过Input Gate的sigmoid函数可以求出1,经过Output Gate的sigmoid函数计算出0,经过Forget Gate的sigmoid函数计算出1,然后根据上面的公式就可以算出最终的输出。
3.LSTM与传统神经网络的联系
我们只要把LSTM看作是传统神经网络的一个神经元(neuron)即可
另外,LSTM需要四个输入
4.LSTM的最终形态
LSTM的四个输入都是从最初始的x乘以不同的权重得来的,然后还要考虑上一个时间点的
c
t
c^t
ct和
h
t
h^t
ht。
5.LSTM的数学公式
将上图的LSTM封装起来就是:
输入
x
t
x_t
xt和上一个时间点的隐藏状态
h
t
−
1
h_{t-1}
ht−1相加经过一个sigmoid函数得
f
t
f_t
ft。
所以遗忘门(foget gate)的路径和式子是:
输入
x
t
x_t
xt和上一个时间点的隐藏状态
h
t
−
1
h_{t-1}
ht−1相加经过一个sigmoid函数得
i
t
i_t
it,这是一个输入门,
记忆单元
C
t
C_t
Ct的值由上面提到的几个式子决定:
输出
o
t
o_t
ot和这一个时刻的隐藏状态
h
t
h_t
ht式子如下
注:
[
h
t
−
1
,
x
t
]
[h_{t-1},x_t]
[ht−1,xt]表示把两个向量连接成一个更长的向量
Pytorch中LSTM的参数与案例理解.
Pytorch中文文档.
LSTM.
重推:详解LSTM.
刘建平讲LSTM.
pytorch实现LSTM.
外国大神的博文.
Understanding LSTM Networks.