循环神经网络--GRU

在这里插入图片描述
这里我们首先来看一下GRU是如何将LSTM的三个门简化成两个门的结构的:
这里的 r r 门(r门这里同样是一个激活函数)控制的是上一个时间戳的状态 s t 1 s_{t-1} 对我们的当前时间戳状态 s t s_t 的一个影响,r的取值范围依旧是在0到1之间,也就是说,当你的r门全部关闭(r = 0)的时候,就意味着将上一个时间戳上的状态复位了,从0开始;如果r门全部打开(r = 1)的时候,就是保留了接收进来所有的上一个时间戳的状态。r就意味着是否要reset上一个时间戳的状态信息,以及reset的程度是多少。

z = σ ( x t U z + s t 1 W z ) r = σ ( x t U r + s t 1 W r ) h = tanh ( x t U h + ( s t 1 r ) W h ) s t = ( 1 z ) h + z s t 1 \begin{aligned} z &=\sigma\left(x_{t} U_{z}+s_{t-1} W_{z}\right) \\ r &=\sigma\left(x_{t} U_{r}+s_{t-1} W_{r}\right) \\ h &=\tanh \left(x_{t} U_{h}+\left(s_{t-1} \circ r\right) W_{h}\right) \\ s_{t} &=(1-z) \circ h+z \circ s_{t-1} \end{aligned}

根据图分析公式:

r = σ ( x t U r + s t 1 W r ) \begin{aligned} r &=\sigma\left(x_{t} U_{r}+s_{t-1} W_{r}\right) \end{aligned}

  • 1.由黄色的导向线得,上一个时间戳的状态 s t 1 s_{t-1} 与新的输入 x t x_t 分别做一个线性变换然后求和,最后经过r门的激活函数得到r门的输出。
    z = σ ( x t U z + s t 1 W z ) \begin{aligned}z &=\sigma\left(x_{t} U_{z}+s_{t-1} W_{z}\right)\end{aligned}
  • 2.由蓝色的导向线得,上一个时间戳的状态 s t 1 s_{t-1} 与新的输入 x t x_t 分别再做一个线性变换然后求和,最后经过z门的激活函数得到z门的输出。
    h = tanh ( x t U h + ( s t 1 r ) W h ) \begin{aligned} h &=\tanh \left(x_{t} U_{h}+\left(s_{t-1} * r\right) W_{h}\right)\end{aligned}
  • 3.由红色的导向线得,上一个时间戳的状态 s t 1 s_{t-1} 与r(门控变量)做一个乘积,再与经过一个线性变换后的 x t x_t 求和,最后经过激活函数tanh得到输出h。
    这里的h并不是一个新的变量,对于GRU来说,它只有这样的一个状态,我们将其叫做 s t 1 s_{t-1} ,你也可以将其叫做 c c 或者 h h 这只是这样的命名的习惯,对于LSTM来说有一个 c c ,一个 h h ,对于GRU来说只有一个 h h 这样的临时的变量
    s t = ( 1 z ) h + z s t 1 \begin{aligned} s_{t} &=(1-z) * h+z * s_{t-1}\end{aligned}
  • 4.最后得到当下时间戳的状态 s t s_t
    s t s_t 的公式中,这里的 h h 是由 1 z 1-z 控制的, s t 1 s_{t-1} 是由更新门 Z Z 控制的,对于 h h s t 1 s_{t-1} 来说非大即小,也就是说如果向上的路径变强了,向右的路径就变小了,反之也这回事,就是 h h 状态和 s t 1 s_{t-1} 的状态互斥的流通门。
发布了21 篇原创文章 · 获赞 2 · 访问量 815

猜你喜欢

转载自blog.csdn.net/m0_44967199/article/details/103020608
今日推荐