GRU门控循环单元

GRU门控循环单元

什么是GRU

LSTM的一个稍微更显着的变化是由Cho介绍的门控循环单元(GRU)。 它将忘记和输入门组合成一个单一的“更新门”。它还将单元格状态(memory cell,即CtC^t)和隐藏状态(hth^t)合并,并进行了一些其他更改。 所得到的模型比标准LSTM模型更简单,并且越来越受欢迎。

如下图所示,GRU就是把LSTM的输入门和遗忘门组合在一起,少了一个门,参数量降了一些,但是性能和LSTM几乎一样。下图的条状物就是参数量,红线就是准确率。

GRU的运作方式

在看GRU之前,我们先回顾一下LSTM,可见LSTM有两个向量会循环传递,一个是memory cell的CtC^t和隐藏状态hth^t。其中,CtC^t经历的步骤比较少,变化较慢,后一个和前一个比较像,而hth^t经历的步骤很多,所以变化较大。

而GRU的框架如下所示,它只传递hth^t,不再有CtC^t

那GRU里面的具体结构是什么呢?

我们把上一时刻的ht1h^{t-1}和当前的输入XtX^t拼接在一起,这里和LSTM差不多。

然后分别经过两个神经网络,分别得到两个不同的向量rrzz,即reset gateupdate gate

然后把向量rrht1h^{t-1}逐元素相乘,得到的向量结果再和xtx^t进行拼接,然后经过神经网络得到向量hh{'}

然后如下图所示,把向量zz一个人当两个人来用,即同时会用在两个地方。

如果zz的值接近1,则ht1h^{t-1}hth^t的影响比较大,hh{'}对结果的影响比较小,ht1h^{t-1}hh{'}是互相拮抗的,一个多,另一个就少。

在GRU里,hth^t的角色比较像LSTM中的CtC^t,不妨再看下LSTM中计算CtC^t的公式,如下图所示,GRU里的update gate(zz)的角色,就相当于LSTM里遗忘门(zfz^f)的角色。而1z1-z相当于LSTM中的输入门(ziz^i),所以GRU中的遗忘门和输入门是联动的。具体就是说,如果有新的信息进来,才会忘掉之前的信息,而如果没有新信息进来,就不会忘记信息;当你忘记信息的时候,就会有新的信息进来,这个逻辑听上去也是颇为合理的。

前面已经讲过,LSTM中CtC^t的变化是慢的,hth^t的变化是快的。所以,GRU传递到下一个状态的信息hth^t,和LSTM中的CtC^t一样,是可以保留得比较久的

由下图可见,LSTM的参数有四组,而GRU的参数只有三组,所以GRU的参数量是比LSTM少的。

参考资料

本文参考该视频。

===

GRU神经网络

Last updated