门控循环单元(GRU)是较流行的长期短期记忆(LSTM)网络的年轻兄弟,也是一种循环神经网络(RNN)。 就像它的兄弟一样,GRU能够有效保留顺序数据中的长期依赖性。 此外,他们还可以解决困扰普通RNN的“短期记忆”问题。
门控循环单元(GRU)是RNN体系结构的一种变体,它使用门控机制来控制和管理神经网络中细胞之间的信息流。 GRUs仅在2014年由Cho等人引入。 并且可以认为是相对较新的体系结构,尤其是与Sepp Hochreiter和JürgenSchmidhuber在1997年提出的LSTM相比。
GRU的结构允许它自适应地捕获大型数据序列中的依存关系,而不会丢弃序列早期部分的信息。 这是通过其门控单元(类似于LSTM)实现的,该门控单元解决了传统RNN的消失/爆炸梯度问题。 这些门负责调节每个时间步骤要保留或丢弃的信息。 本文稍后将详细介绍这些门的工作方式以及它们如何克服上述问题。
GRU单元的结构如下所示。
重置门
第一步,我们将创建“重置”门。 使用前一时间步的隐藏状态和当前时间步的输入数据来导出和计算此门。
从数学上讲,这是通过将先前的隐藏状态和当前输入与它们各自的权重相乘并在将总和通过S型函数之前求和来实现的。 sigmoid函数会将值转换为介于0和1之间,从而允许门在后续步骤中在次要信息和次要信息之间进行过滤。
当通过反向传播训练整个网络时,方程中的权重将被更新,以使向量将学习仅保留有用的特征。
先前的隐藏状态将首先乘以可训练的权重,然后将与重置向量进行逐元素乘法(Hadamard乘积)。 此操作将决定要保留先前时间步长中的哪些信息以及新输入。 同时,当前输入也将乘以可训练的权重,然后再与复位向量和上述先前隐藏状态的乘积相加。 最后,将非线性激活tanh函数应用于最终结果,以获得下式中的r。
更新门
接下来,我们必须创建更新门。 就像复位门一样,该门使用先前的隐藏状态和当前输入数据进行计算。
更新和复位门矢量都使用相同的公式创建,但是权重乘以输入状态和隐藏状态对每个门来说都是唯一的,这意味着每个门的最终向量是不同的。 这允许门服务于其特定目的。
然后,更新向量将与先前的隐藏状态进行逐元素乘法,以在下面的方程式中获得u,稍后将使用该向量计算最终输出。
当获得最终输出时,更新向量还将在以后的其他操作中使用。 此处更新门的目的是帮助模型确定将来需要保留多少存储在先前隐藏状态中的过去信息。
合并输出
在最后一步,我们将重用Update门并获取更新的隐藏状态。
这次,我们将获取同一Update向量(1-Update门)的逐元素逆版本,并与来自复位门r的输出进行逐元素乘法。 此操作的目的是让更新门确定应在隐藏状态下存储新信息的哪一部分。
最后,上述操作的结果将与上一步u中Update门的输出相加。 这将为我们提供新的和更新的隐藏状态。
和LSTM区别:
- 结构差异
虽然GRU和LSTM都包含门,但这两种结构之间的主要区别在于门的数量及其特定角色。 GRU中更新门的作用与LSTM中的输入和忘记门非常相似。但是,这两者之间对添加到网络的新内存内容的控制有所不同。
GRU VS LSTM结构的比较
在LSTM中,“忘记”门确定要保留先前单元状态的哪一部分,而“输入”门确定要添加的新内存的数量。这两个门相互独立,这意味着通过输入门添加的新信息量完全独立于通过忘记门保留的信息。
对于GRU,更新门负责确定要保留前一存储器中的哪些信息,还负责控制要添加的新存储器。这意味着在GRU中保留先前的内存以及向该内存中添加新信息并不是独立的。
如前所述,结构之间的另一个关键区别是GRU中缺少单元状态。 LSTM将其长期依赖关系存储在单元状态中,将短期内存存储在隐藏状态中,而GRU则将二者都存储在单个隐藏状态中。但是,就保留长期信息的有效性而言,两种架构都已被证明可以有效地实现这一目标。
2.速度差异
与LSTM相比,GRU的训练速度更快,这是因为训练期间需要更新的权重和参数数量较少。这可以归因于与LSTM的三个门相比,GRU单元中的门数量较少(两个门)。
在本文后面的代码演练中,我们将直接比较在完全相同的任务上训练LSTM和GRU的速度。
3.绩效评估
在确定要用于任务的模型类型时,模型的准确性(无论是通过误差幅度还是通过正确分类的比例来衡量)通常是主要因素。 GRU和LSTM都是RNNS的变体,可以互换插入以实现类似的结果。