深度学习(五) 循环神经网络基础
5.1 RNN
RNN对于时序数据进行建模,上一刻的输出回作为下一时刻的输入。
更新方程:
ht=tan(Wh(t−1)+Ux(t))0t=c+Vh(t)(5.1.1)
h
t
=
t
a
n
(
W
h
(
t
−
1
)
+
U
x
(
t
)
)
(5.1.1)
0
t
=
c
+
V
h
(
t
)
RNN存在的问题:
BP through time 反向传播的时候 W W 计算了很多次,会导致梯度消失或者爆炸最大的特征值 > 1梯度爆炸 <1 梯度消失 为矩阵高次幂导致的
5.2 LSTM
特点:
增加遗忘机制。例如当一个场景结束是,模型应该重置场景的相关信息,例如位置、时间等。而一个角色死亡,模型也应该记住这一点。所以,我们希望模型学会一个独立的忘记/记忆机制,当有新的输入时,模型应该知道哪些信息应该丢掉。
增加保存机制。当模型看到一副新图的时候,需要学会其中是否有值得使用和保存的信息
所以当有一个新的输入时,模型首先忘掉哪些用不上的长期记忆信息,然后学习新输入有什么值得使用的信息,然后存入长期记忆中
把长期记忆聚焦到工作记忆中。最后,模型需要学会长期记忆的哪些部分立即能派上用场。不要一直使用完整的长期记忆,而要知道哪些部分是重点。
更新公式:
it=σ(Wiht−1+Uixt+bi)ot=σ(Woht−1+Uoxt+bo)ft=σ(Wfht−1+Ufxt+bf)pt=tanh(Wpht−1+Upxt+bp)ct=ft⊙ct−1+it⊙ptht=ot⊙tanh(ct)(5.1.2)
i
t
=
σ
(
W
i
h
t
−
1
+
U
i
x
t
+
b
i
)
o
t
=
σ
(
W
o
h
t
−
1
+
U
o
x
t
+
b
o
)
f
t
=
σ
(
W
f
h
t
−
1
+
U
f
x
t
+
b
f
)
p
t
=
t
a
n
h
(
W
p
h
t
−
1
+
U
p
x
t
+
b
p
)
c
t
=
f
t
⊙
c
t
−
1
+
i
t
⊙
p
t
(5.1.2)
h
t
=
o
t
⊙
t
a
n
h
(
c
t
)
LSTM用加和的方式取代了乘积,解决梯度消失问题
5.3 GRU
忘记门和输入门合成了一个单一的 更新门,减少参数
更新公式:
zt=σ(Wzht−1+Uzxt+bz)rt=σ(Wrht−1+Urxt+br)pt=tanh(Wp(rt⊙ht−1)+Upxt+bp)ht=(1−zt)⊙ht−1+zt⊙pt(5.1.3)
z
t
=
σ
(
W
z
h
t
−
1
+
U
z
x
t
+
b
z
)
r
t
=
σ
(
W
r
h
t
−
1
+
U
r
x
t
+
b
r
)
p
t
=
t
a
n
h
(
W
p
(
r
t
⊙
h
t
−
1
)
+
U
p
x
t
+
b
p
)
(5.1.3)
h
t
=
(
1
−
z
t
)
⊙
h
t
−
1
+
z
t
⊙
p
t