6.7 门控循环单元(GRU)
上一节介绍了循环神经网络中的梯度计算方法。我们发现,当时间步数较大或者时间步较小时,循环神经网络的梯度较容易出现衰减或爆炸。虽然裁剪梯度可以应对梯度爆炸,但无法解决梯度衰减的问题。通常由于这个原因,循环神经网络在实际中较难捕捉时间序列中时间步距离较大的依赖关系。
门控循环神经网络(gated recurrent neural network)的提出,正是为了更好地捕捉时间序列中时间步距离较大的依赖关系。它通过可以学习的门来控制信息的流动。其中,门控循环单元(gated recurrent unit,GRU)是一种常用的门控循环神经网络 [1, 2]。另一种常用的门控循环神经网络则将在下一节中介绍。
6.7.1 门控循环单元
下面将介绍门控循环单元的设计。它引入了重置门(reset gate)和更新门(update gate)的概念,从而修改了循环神经网络中隐藏状态的计算方式。
6.7.1.1 重置门和更新门
如图6.4所示,门控循环单元中的重置门和更新门的输入均为当前时间步输入XtXt \boldsymbol{X}_tHt−1,输出由激活函数为sigmoid函数的全连接层计算得到。
图6.4 门控循环单元中重置门和更新门的计算
具体来说,假设隐藏单元个数为hh h[−1,1]。
图6.5 门控循环单元中候选隐藏状态的计算
具体来说,时间步tt tHt=Zt⊙Ht−1+(1−Zt)⊙H~