门控循环单元(GRU)是一种用于循环神经网络(RNN)的门控机制,由Kyunghyun Cho及其同事于2014年提出。它旨在通过使用更新门和重置门来控制信息流动,从而解决标准RNN中常见的梯度消失问题。与长短期记忆(LSTM)单元相比,GRU的架构更简单,没有单独的记忆单元向量和输出门,因此参数更少。尽管简化了结构,GRU在复调音乐建模、语音信号建模和自然语言处理等任务上表现出与LSTM相当的性能。Yoshua Bengio团队的研究表明,门控机制通常是有益的,但关于GRU和LSTM孰优孰劣,并未得出明确结论。
架构
GRU通过维护在每个时间步更新的隐藏状态 \( h_t \) 来处理序列。完全门控单元的核心方程如下:
\[ z_t = \sigma(W_z x_t + U_z h_{t-1} + b_z) \]
\[ r_t = \sigma(W_r x_t + U_r h_{t-1} + b_r) \]
\[ \hat{h}_t = \phi(W_h x_t + U_h (r_t \odot h_{t-1}) + b_h) \]
\[ h_t = (1 - z_t) \odot h_{t-1} + z_t \odot \hat{h}_t \]
这里,\( \sigma \) 是Sigmoid激活函数,\( \phi \) 通常是双曲正切函数(tanh),\( \odot \) 表示Hadamard(逐元素)乘积。输入向量为 \( x_t \in \mathbb{R}^d \),隐藏状态为 \( h_t \in \mathbb{R}^e \)。更新门 \( z_t \) 决定保留多少先前的隐藏状态,而重置门 \( r_t \) 控制在计算候选激活 \( \hat{h}_t \) 时遗忘多少过去信息。最终隐藏状态是先前状态与候选状态之间的线性插值,权重由更新门决定。
变体
GRU存在多种变体,它们在门的计算和组合方式上有所不同。最常见的变体是上述完全门控单元。一种简化版本称为最小门控单元(MGU),它仅使用一个结合了更新和重置功能的门,进一步减少了参数数量。其他变体可能改变偏置的位置或操作的顺序,但都保留了门控管理信息流动的核心原则。
应用与性能
GRU已广泛应用于序列建模任务,包括语音识别、机器翻译和时间序列预测。在对比研究中,GRU在许多基准测试上达到了与LSTM相当的性能,尤其是在复调音乐建模和语音信号建模方面。其较少的参数数量使其在计算上更高效,这有利于在大规模数据集上训练或在资源受限环境中使用。然而,选择GRU还是LSTM通常取决于具体任务和数据集,没有普遍的最佳选择。
与其他架构的关系
GRU是许多深度学习模型的基础组件,尤其是在Transformer (architecture)架构兴起之前。虽然transformer已成为大型语言模型和生成式AI的主导架构,但GRU在处理循环处理有益的序列数据任务中仍然具有相关性。它们也用于结合循环机制和注意力机制的混合模型中。GRU的发展促进了人们对神经网络中门控机制的更深入理解,并影响了后来模型设计的创新。