GRU(Gated Recurrent Unit)单元使用两个主要门,即重置门(rt)和更新门(zt),来生成新隐藏状态的建议。这个建议,称为候选隐藏状态(通常表示为ildeht),代表了单元考虑添加到其记忆中的新信息。
候选隐藏状态的计算是重置门(rt)发挥作用的地方。请记住,重置门决定了先前隐藏状态(ht−1)有多少应影响当前候选计算。如果重置门对于某些维度输出接近0,则先前隐藏状态的相应维度在计算新候选状态时会有效地被“遗忘”或忽略。反之,如果重置门输出接近1,则先前状态信息会被传递过去。
其主要思想是将当前输入(xt)与经过重置门(rt)选择性过滤的先前隐藏状态(ht−1)的一个版本进行组合。这个组合随后通过双曲正切(tanh)激活函数 (activation function),类似于简单RNN中隐藏状态的计算方式。
在数学上,时间步t的候选隐藏状态h~t计算如下:
h~t=tanh(Wh~xt+Uh~(rt⊙ht−1)+bh~)
我们来分解这个方程:
- xt:当前时间步t的输入向量 (vector)。
- ht−1:来自前一时间步t−1的隐藏状态向量。
- rt:时间步t的重置门输出向量。
- ⊙:此符号表示元素级乘法(Hadamard积)。这就是重置门rt选择性缩放先前隐藏状态ht−1的方式。ht−1中的每个元素都与rt中的相应元素相乘。
- Wh~:用于转换输入xt的权重 (weight)矩阵。
- Uh~:用于转换重置门控的先前隐藏状态(rt⊙ht−1)的权重矩阵。
- bh~:添加到和中的偏置 (bias)向量。
- tanh:双曲正切激活函数。它将结果向量的分量压缩到-1和1之间,有助于调节网络的激活。
权重矩阵(Wh~, Uh~)和偏置(bh~)在训练过程中学习。它们决定了当前输入和过去的相应部分(由重置门决定)如何组合形成候选状态。
下方的图表显示了计算候选隐藏状态h~t的数据流。
流图,显示了如何使用当前输入(xt)、先前隐藏状态(ht−1)和重置门(rt)来计算候选隐藏状态(h~t)。
本质上,h~t代表了GRU单元可能将其状态更新为什么,这纯粹基于当前输入和先前状态中选择性保留的部分。它是对新记忆内容的建议。
请记住,这个候选状态h~t并非当前时间步的最终隐藏状态ht。下一步,即涉及更新门zt的部分,将决定这个新候选状态h~t有多少会实际与先前隐藏状态ht−1混合,以生成最终输出ht。我们将在“计算最终隐藏状态”一节中介绍这种组合过程。