一、RNN存在的问题
对RNN来讲,没有特别关注的部分,都是一个序列进去。而且RNN的梯度消失指的是每一项一项进行相加,可以发现距离拉的越长,连乘的项就越多,远距离的梯度会趋于0的,近距离的梯度不会消失。RNN梯度消失的真正含义是总的梯度受近距离梯度的主导,远距离的梯度消失。
对于激活函数可参考:深度神经网络中的激活函数_导数推理过程_python绘制图像示意_特点及使用场景
二、GRU门控单元
1、引入重置门和更新门
R
t
=
σ
(
X
t
W
w
r
+
H
t
−
1
W
h
r
+
b
r
)
Z
t
=
σ
(
X
t
W
w
z
+
H
t
−
1
W
h
z
+
b
z
)
R_t=\sigma(X_tW_{wr}+H_{t-1}W_{hr}+b_r) \\ Z_t=\sigma(X_tW_{wz}+H_{t-1}W_{hz}+b_z)
Rt=σ(XtWwr+Ht−1Whr+br)Zt=σ(XtWwz+Ht−1Whz+bz)其中
σ
(
)
\sigma()
σ()选用
s
i
g
m
o
i
d
(
)
sigmoid()
sigmoid()作为激活函数。
2、候选隐藏状态
H
t
~
=
t
a
n
h
(
X
t
W
x
h
+
(
R
t
⊙
H
t
−
1
)
)
\widetilde{H_t}=tanh(X_tW_{xh}+(R_t \odot H_{t-1}))
Ht
=tanh(XtWxh+(Rt⊙Ht−1))
3、最终隐藏状态![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c67ee0ad3ca11b048c0bc8135f7618d2.png#pic_center)
H t = Z t ⊙ H t − 1 + ( 1 − Z t ) ⊙ H t ~ H_t=Z_t \odot H_{t-1}+(1-Z_t)\odot\widetilde{H_t} Ht=Zt⊙Ht−1+(1−Zt)⊙Ht
三、LSTM长短期记忆网络
1、输入门、遗忘门、输出门
I
t
=
σ
(
X
t
W
x
i
+
H
t
−
1
W
h
i
+
b
i
)
F
t
=
σ
(
X
t
W
x
f
+
H
t
−
1
W
h
f
+
b
f
)
O
t
=
σ
(
X
t
W
x
o
+
H
t
−
1
W
h
o
+
b
o
)
I_t=\sigma(X_tW_{xi}+H_{t-1}W_{hi}+b_i)\\ F_t=\sigma(X_tW_{xf}+H_{t-1}W_{hf}+b_f)\\ O_t=\sigma(X_tW_{xo}+H_{t-1}W_{ho}+b_o)
It=σ(XtWxi+Ht−1Whi+bi)Ft=σ(XtWxf+Ht−1Whf+bf)Ot=σ(XtWxo+Ht−1Who+bo)
2、候选记忆元
同理于上面3个门的计算方式:
C
t
~
=
t
a
n
h
(
X
t
W
x
c
+
H
t
−
1
W
h
c
+
b
c
)
\widetilde{C_t}=tanh(X_tW_{xc}+H_{t-1}W_{hc}+b_c)
Ct
=tanh(XtWxc+Ht−1Whc+bc)
3、记忆元
C
t
=
F
t
⊙
C
t
−
1
+
I
t
⊙
C
t
~
C_t=F_t\odot C_{t-1}+I_t\odot \widetilde{C_t}
Ct=Ft⊙Ct−1+It⊙Ct
它不像GRU:
H
t
=
Z
t
⊙
H
t
−
1
+
(
1
−
Z
t
)
⊙
H
t
~
H_t=Z_t \odot H_{t-1}+(1-Z_t)\odot\widetilde{H_t}
Ht=Zt⊙Ht−1+(1−Zt)⊙Ht
。
Z
t
Z_t
Zt与
(
1
−
Z
t
)
(1-Z_t)
(1−Zt)的值是互补的,而LSTM:
F
t
F_t
Ft与
I
t
I_t
It的值相加不一定等于1。
4、最终隐藏状态
H
t
=
O
t
⊙
t
a
n
h
(
C
t
)
H_t=O_t\odot tanh(C_t)
Ht=Ot⊙tanh(Ct)
四、GRU激活函数为什么使用Sigmoid而不是ReLU
1、为什么用Sigmoid
直观来讲,Sigmoid与之作用后得到r、t,r、t取值范围(0,1)。可以理解为起到了一个概率的作用。极端情况,全为1的时候,完全保留与r或t运算的信息。全为0的时候,完全舍弃与r或t运算的信息。同时Sigmoid处处可导。
2、为什么不用ReLU
单边抑制,小于0的部分神经元全部都不再被激活。