原理结构
GRU的输入输出和普通RNN一样。有一个当前的输入
x
t
x^t
xt,和上一个节点传递下来的隐状态(hidden state)
h
t
−
1
h^{t-1}
ht−1,这个隐状态包含了之前节点的相关信息。结合
x
t
x^t
xt和
h
t
−
1
h^{t-1}
ht−1,GRU会得到当前隐藏节点的输出
y
t
y^t
yt和传递给下一个节点的隐状态
h
t
h^t
ht。
- 通过
h
t
−
1
h^{t-1}
ht−1和
x
t
x^t
xt来获取两个门控状态。
r
r
r为控制重置的门控,z为控制更新的门控。
2.得到门控信号之后,使用重置门控来得到重置之后的数据 h t − 1 ′ = h t − 1 ⊗ r h^{{t-1}^{'}} = h^{t-1} \otimes r ht−1′=ht−1⊗r,再将 h t − 1 ′ h^{{t-1}^{'}} ht−1′与输入 x t x^t xt进行拼接,通过一个 t a n h tanh tanh激活函数将数据缩放到-1~1的范围内。
这部分属于选择记忆阶段, h ′ h^{'} h′主要包含了当前输入 x t x^t xt,并有选择性地将 h ′ h^{'} h′添加到当前的隐藏状态中。 - 更新记忆阶段。
h t = ( 1 − z ) ⊗ h t − 1 + z ⊗ h ′ h^t = (1 - z)\otimes h^{t-1} + z \otimes h^{'} ht=(1−z)⊗ht−1+z⊗h′
这里的门控信号 z z z范围为[0, 1]。