循环神经网络之——门控制循环单元(GRU)

  • A+
所属分类:体育平台

一. 摘要

在上次分享中,我们了解到了基础的循环神经网络(RNN),对于基础的循环神经网络模型,它可以比较好的通过t时刻关联到t-1时刻和t+1时刻,甚至更多。但它对任意时刻的输入都是赋予相同权重计算。这样区分不出重点因素。并且循环神经网络的梯度很容易衰减和爆炸,虽然可以采用裁剪梯度的方法缓解,但无法解决梯度衰减的问题。由于这个原因,循环神经网络在实际中就会较难捕捉时间序列中的时间步距离较大的依赖关系。本次内容便是基础循环神经网络的一个升级版,门控循环神经网络(gated recurrent neural network)。

二. 门控制循环单元

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

下面将介绍门控循环单元的设计。它引入了重置门(reset gate)和更新门(update gate)的概念,从而修改了循环神经网络中隐藏状态的计算方式。

门控循环单元中的重置门和更新门的输入均为当前时间步输入XtXt与上一时间步隐藏状态Ht−1,输出由激活函数为sigmoid函数的全连接层计算得到。

循环神经网络之——门控制循环单元(GRU)

图1:门控制循环单元的重置门和更新门

具体来说,假设隐藏单元个数为h,给定时间步t的小批量输入Xt∈Rn×d(样本数为n,输入个数为d)和上一时间步隐藏状态Ht−1∈Rn×h。重置门Rt∈Rn×h和更新门Zt∈Rn×h的计算如下:

Rt=σ(XtWxr+Ht−1Whr+br),

Zt=σ(XtWxz+Ht−1Whz+bz),

其中Wxr,Wxz∈Rd×h和Whr,Whz∈Rh×h是权重参数,br,bz∈R1×h是偏差参数。

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

循环神经网络之——门控制循环单元(GRU)

图2:门控制循环单元中候选隐藏状态的计算

具体来说,时间步t的候选隐藏状态H~t∈Rn×h的计算为:

H~t=tanh(XtWxh+(Rt⊙Ht−1)Whh+bh)

其中Wxh∈Rd×h和Whh∈Rh×h是权重参数,bh∈R1×h是偏差参数。从上面这个公式可以看出,重置门控制了上一时间步的隐藏状态如何流入当前时间步的候选隐藏状态。而上一时间步的隐藏状态可能包含了时间序列截至上一时间步的全部历史信息。因此,重置门可以用来丢弃与预测无关的历史信息。

最后,时间步t的隐藏状态Ht∈Rn×h的计算使用当前时间步的更新门Zt来对上一时间步的隐藏状态Ht−1和当前时间步的候选隐藏状态H~t做组合:

Ht=Zt⊙Ht−1+(1−Zt)⊙H~t.

循环神经网络之——门控制循环单元(GRU)

图3:门控制循环单元中隐藏状态的计算

值得注意的是,更新门可以控制隐藏状态应该如何被包含当前时间步信息的候选隐藏状态所更新,如图2所示。假设更新门在时间步t′到t(t′<t)之间一直近似1。那么,在时间步t′到t之间的输入信息几乎没有流入时间步t的隐藏状态Ht。实际上,这可以看作是较早时刻的隐藏状态Ht′−1一直通过时间保存并传递至当前时间步t。这个设计可以应对循环神经网络中的梯度衰减问题,并更好地捕捉时间序列中时间步距离较大的依赖关系。

我们对门控循环单元的设计稍作总结:重置门有助于捕捉时间序列里短期的依赖关系;更新门有助于捕捉时间序列里长期的依赖关系。

三. 总结

本次分享内容是对门控循环神经网络的浅析,对比基础型的循环神经网络模型,门控循环单元的改进是引入了门的概念,从而也修改了循环神经网络中隐藏层重点计算方式。其中包括重置门、更新门、候选隐藏状态和隐藏状态。这里的重置门有助于捕捉时间序列里面短期的依赖关系;更新门则是有助于捕捉时间序列里面长期的依赖关系。因为这些门控制单元的加入,门控制循环神经网络可以更好的捕捉到时间序列中时间步距离较大的依赖关系。

参考文献

[1] 陈雷.深度学习与MindSpore实践[M].清华大学出版社:2020.

[2] 诸葛越,葫芦娃.百面机器学习[M].人民邮电出版社:2020.

[3] 阿斯顿.张,李沐.动手学深度学习[M].人民邮电出版社:2020.

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: