GRU单元中的更新门(表示为zt)对管理信息流和形成下一个隐藏状态ht起着重要作用。它的主要作用是决定来自上一个隐藏状态ht−1的信息应保留并传递多少,以及新计算的候选状态ildeht应有多少影响。
计算更新门的激活值
更新门根据当前输入向量xt和上一个隐藏状态ht−1计算其激活值zt。计算涉及学习到的权重矩阵(输入xt的Wz、上一个隐藏状态ht−1的Uz)和偏置向量bz。这些值通过一个Sigmoid激活函数(σ)处理,生成0到1之间的值。
在时间步t更新门激活值的公式是:
zt=σ(Wzxt+Uzht−1+bz)
我们来分解一下这些组成部分:
- xt: 当前时间步t的输入向量。
- ht−1: 上一个时间步t−1的隐藏状态向量。
- Wz: 与输入xt关联的权重矩阵。
- Uz: 与上一个隐藏状态ht−1关联的权重矩阵。
- bz: 更新门的偏置向量。
- σ: Sigmoid激活函数,它将组合后的加权输入压缩到(0,1)的范围内。
输出zt是一个与隐藏状态维度相同的向量。zt中的每个元素都对应隐藏状态向量中的一个维度。
解释更新门的输出
向量zt中的值充当门或过滤器。由于Sigmoid函数,每个元素都在0到1之间:
- 值接近1: 这表明上一个隐藏状态(ht−1)相应维度中的信息是重要的,应大部分保留。它表示“保留旧记忆”。
- 值接近0: 这表明上一个状态相应维度中的信息对当前时间步不太相关,应主要由新候选隐藏状态(h~t)的信息替换。它表示“用新信息更新”。
这种门控机制是按元素进行的,这意味着GRU可以根据当前输入决定保留过去的某些特征,同时更新其他特征。
在更新隐藏状态中的作用
更新门zt直接参与最终隐藏状态ht的计算。GRU通过对上一个隐藏状态ht−1和候选隐藏状态h~t进行插值来计算ht。更新门zt控制这种插值。
最终隐藏状态ht的公式是:
ht=zt⊙ht−1+(1−zt)⊙h~t
其中:
- h~t: 候选隐藏状态,使用当前输入和重置后的上一个隐藏状态计算(我们将单独讨论重置门和候选状态的计算)。它代表为当前时间步提出的“新”信息。
- ⊙: 表示按元素乘法(Hadamard积)。
这个等式表明了zt如何平衡影响:
- 项zt⊙ht−1保留了上一个状态ht−1的部分。当zt接近1时,ht−1的贡献很大。
- 项(1−zt)⊙h~t结合了候选状态h~t的部分。当zt接近0时,(1−zt)接近1,h~t的贡献很大。
本质上,zt为隐藏状态的每个维度动态决定是复制上一个时间步的值,还是用新计算的候选值进行更新。
更新门(zt)的计算流程及其在结合上一个隐藏状态(ht−1)和候选状态(h~t)以生成新的隐藏状态(ht)中的作用。
促进长期依赖
更新门能够让来自ht−1的信息在很大程度上保持不变地通过(当zt≈1时),这是GRU与简单RNN相比能捕获更长距离依赖的重要原因。如果网络学习到某些信息在许多时间步中都相关,它就可以将zt的相应元素设置为接近1,从而有效地为这些信息在时间上传递创建了一个捷径。
这种机制也有助于缓解梯度消失问题。在反向传播过程中,梯度可以通过zt⊙ht−1项流回。如果zt接近1,与ht−1相关的梯度可以相对畅通地向后传递,从而避免它在许多时间步中过快衰减。
总而言之,更新门zt在GRU单元内提供了一种灵活自适应的机制。它学习控制存储在ht−1中的过去上下文应保留多少,以及来自候选状态h~t的新信息应整合多少,从而使网络能够有效建模具有不同依赖长度的序列数据。