这里我们首先来看一下GRU是如何将LSTM的三个门简化成两个门的结构的:
这里的
r门(r门这里同样是一个激活函数)控制的是上一个时间戳的状态
st−1对我们的当前时间戳状态
st的一个影响,r的取值范围依旧是在0到1之间,也就是说,当你的r门全部关闭(r = 0)的时候,就意味着将上一个时间戳上的状态复位了,从0开始;如果r门全部打开(r = 1)的时候,就是保留了接收进来所有的上一个时间戳的状态。r就意味着是否要reset上一个时间戳的状态信息,以及reset的程度是多少。
zrhst=σ(xtUz+st−1Wz)=σ(xtUr+st−1Wr)=tanh(xtUh+(st−1∘r)Wh)=(1−z)∘h+z∘st−1
根据图分析公式:
r=σ(xtUr+st−1Wr)
- 1.由黄色的导向线得,上一个时间戳的状态
st−1与新的输入
xt分别做一个线性变换然后求和,最后经过r门的激活函数得到r门的输出。
z=σ(xtUz+st−1Wz)
- 2.由蓝色的导向线得,上一个时间戳的状态
st−1与新的输入
xt分别再做一个线性变换然后求和,最后经过z门的激活函数得到z门的输出。
h=tanh(xtUh+(st−1∗r)Wh)
- 3.由红色的导向线得,上一个时间戳的状态
st−1与r(门控变量)做一个乘积,再与经过一个线性变换后的
xt求和,最后经过激活函数tanh得到输出h。
这里的h并不是一个新的变量,对于GRU来说,它只有这样的一个状态,我们将其叫做
st−1,你也可以将其叫做
c或者
h这只是这样的命名的习惯,对于LSTM来说有一个
c,一个
h,对于GRU来说只有一个
h这样的临时的变量
st=(1−z)∗h+z∗st−1
- 4.最后得到当下时间戳的状态
st。
在
st的公式中,这里的
h是由
1−z控制的,
st−1是由更新门
Z控制的,对于
h和
st−1来说非大即小,也就是说如果向上的路径变强了,向右的路径就变小了,反之也这回事,就是
h状态和
st−1的状态互斥的流通门。