【机器学习】门控循环单元(GRU)

1. GRU

在循环神经⽹络中的梯度计算⽅法中,我们发现,当时间步数较⼤或者时间步较小时,循环神经⽹络的梯度较容易出现衰减或爆炸。虽然裁剪梯度可以应对梯度爆炸,但⽆法解决梯度衰减的问题。通常由于这个原因,循环神经⽹络在实际中较难捕捉时间序列中时间步距离较⼤的依赖关系。

门控循环神经⽹络(gated recurrent neural network)的提出,正是为了更好地捕捉时间序列中时间步距离较⼤的依赖关系。它通过可以学习的⻔来控制信息的流动。其中,门控循环单元(gatedrecurrent unit,GRU)是⼀种常⽤的门控循环神经⽹络。

2. ⻔控循环单元

2.1 重置门和更新门

GRU它引⼊了**重置⻔(reset gate)和更新⻔(update gate)**的概念,从而修改了循环神经⽹络中隐藏状态的计算⽅式。

门控循环单元中的重置⻔和更新⻔的输⼊均为当前时间步输⼊ 与上⼀时间步隐藏状态,输出由激活函数为sigmoid函数的全连接层计算得到。 如下图所示:

在这里插入图片描述

具体来说,假设隐藏单元个数为 h,给定时间步 t 的小批量输⼊ X t ∈ R n ∗ d X_t\in_{}\mathbb{R}^{n*d} XtRnd(样本数为n,输⼊个数为d)和上⼀时间步隐藏状态 H t − 1 ∈ R n ∗ h H_{t-1}\in_{}\mathbb{R}^{n*h} Ht1Rnh。重置⻔ H t ∈ R n ∗ h H_t\in_{}\mathbb{R}^{n*h} HtRnh和更新⻔ Z t ∈ R n ∗ h Z_t\in_{}\mathbb{R}^{n*h} ZtRnh的计算如下:

R t = σ ( X t W x r + H t − 1 W h r + b r ) R_t=\sigma(X_tW_{xr}+H_{t-1}W_{hr}+b_r) Rt=σ(XtWxr+Ht1Whr+br)

Z t = σ ( X t W x z + H t − 1 W h z + b z ) Z_t=\sigma(X_tW_{xz}+H_{t-1}W_{hz}+b_z) Zt=σ(XtWxz+Ht1Whz+bz)

sigmoid函数可以将元素的值变换到0和1之间。因此,重置⻔ R t R_t Rt和更新⻔ Z t Z_t Zt中每个元素的值域都是[0,1]。

2.2 候选隐藏状态

接下来,⻔控循环单元将计算候选隐藏状态来辅助稍后的隐藏状态计算。我们将当前时间步重置⻔的输出与上⼀时间步隐藏状态做按元素乘法(符号为)。如果重置⻔中元素值接近0,那么意味着重置对应隐藏状态元素为0,即丢弃上⼀时间步的隐藏状态。如果元素值接近1,那么表⽰保留上⼀时间步的隐藏状态。然后,将按元素乘法的结果与当前时间步的输⼊连结,再通过含激活函数tanh的全连接层计算出候选隐藏状态,其所有元素的值域为[-1,1]。

具体来说,时间步 t 的候选隐藏状态 H ~ ∈ R n ∗ h \tilde{H}\in_{}\mathbb{R}^{n*h} H~Rnh的计算为:

H ~ t = t a n h ( X t W x h + ( R t ⊙ H t − 1 ) W h h + b h \tilde{H}_t=tanh(X_tW_{xh}+(R_t⊙H_{t-1})W_{hh}+b_h H~t=tanh(XtWxh+(RtHt1)Whh+bh

2.3 隐藏状态

时间步t的隐藏状态 H t ∈ R n ∗ h H_t\in_{}\mathbb{R}^{n*h} HtRnh的计算使⽤当前时间步的更新⻔ Z t Z_t Zt来对上⼀时间步的隐藏状态 H t − 1 H_{t-1} Ht1和当前时间步的候选隐藏状态 H ~ t \tilde{H}_t H~t做组合:

值得注意的是,更新⻔可以控制隐藏状态应该如何被包含当前时间步信息的候选隐藏状态所更新,如上图所⽰。假设更新⻔在时间步 t ′ t' t t ( t ′ < t ) t(t'<t) t(t<t)之间⼀直近似1。那么,在时间步 t ′ t' t t t t间的输⼊信息⼏乎没有流⼊时间步 t 的隐藏状态 H t H_t Ht,这可以看作是较早时刻的隐藏状态 H t ′ − 1 H_{t^{′}-1} Ht1通过时间保存并传递⾄当前时间步 t。这个设计可以应对循环神经⽹络中的梯度衰减问题,并更好地捕捉时间序列中时间步距离较⼤的依赖关系。

我们对⻔控循环单元的设计稍作总结:

  • 重置⻔有助于捕捉时间序列⾥短期的依赖关系;
  • 更新⻔有助于捕捉时间序列⾥⻓期的依赖关系。
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值