概述
LSTM
使用一个特殊的存储记忆单元可以改善RNN
的梯度消失问题,因此在许多自然语言处理任务中它比RNN
有更好的性能。LSTM
单元的基本结构如下图所示。
它由输入门
i
t
i_{t}
it,忘记门
f
t
f_{t}
ft,输出门
o
t
o_{t}
ot,以及一个记忆单元
c
t
c_{t}
ct组成。
给定一个文本序列
x
=
{
x
1
,
x
2
,
…
,
x
n
}
,
x
t
x=left{x_{1}, x_{2}, ldots, x_{n}right}, x_{t}
x={x1,x2,…,xn},xt 表示当前时间步
t
t
t的输入,
h
t
−
1
h_{t-1}
ht−1表示上一步LSTM
的输出。
LSTM
通过门更新记忆单元状态,添加或删除信息以保留与任务相关的内容。
i
t
i_{t}
it乘以候选值
u
t
u_{t}
ut决定了添加到记忆单元的新的输入信息。
f
t
f_{t}
ft 乘以
h
t
−
1
h_{t-1}
ht−1 决定从记忆单元状态中移除的已有信息。输出门
o
t
o_{t}
ot决定从记忆单元状态最终的输出信息。
输入门:
i
t
=
σ
(
W
(
i
)
x
t
+
U
(
i
)
h
t
−
1
+
b
(
i
)
)
i_{t}=sigmaleft(W^{(i)} x_{t}+U^{(i)} h_{t-1}+b^{(i)}right)
it=σ(W(i)xt+U(i)ht−1+b(i))
忘记门:
f
t
=
σ
(
W
(
f
)
x
t
+
U
(
f
)
h
t
−
1
+
b
(
f
)
)
f_{t}=sigmaleft(W^{(f)} x_{t}+U^{(f)} h_{t-1}+b^{(f)}right)
ft=σ(W(f)xt+U(f)ht−1+b(f))
输出门:
o
t
=
σ
(
W
(
o
)
x
t
+
U
(
o
)
h
t
−
1
+
b
(
o
)
)
o_{t}=sigmaleft(W^{(o)} x_{t}+U^{(o)} h_{t-1}+b^{(o)}right)
ot=σ(W(o)xt+U(o)ht−1+b(o))
记忆单元候选值:
u
t
=
tanh
(
W
(
u
)
x
t
+
U
(
u
)
h
t
−
1
+
b
(
u
)
)
u_{t}=tanh left(W^{(u)} x_{t}+U^{(u)} h_{t-1}+b^{(u)}right)
ut=tanh(W(u)xt+U(u)ht−1+b(u))
记忆单元状态更新:
c
t
=
i
t
⊙
u
t
+
f
t
⊙
c
t
−
1
c_{t}=i_{t} odot u_{t}+f_{t} odot c_{t-1}
ct=it⊙ut+ft⊙ct−1
输出:
h
t
=
o
t
⊙
tanh
(
c
t
)
h_{t}=o_{t} odot tanh left(c_{t}right)
ht=ot⊙tanh(ct)
最后
以上就是舒适小天鹅为你收集整理的标准的LSTM网络以及公式的全部内容,希望文章能够帮你解决标准的LSTM网络以及公式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复