GRU(Gated Recurrent Unit,门控循环单元)是一种改进的RNN结构,由 Kyunghyun Cho 等人于 2014 年提出,最初发表于论文《Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation》。GRU 通过引入门控机制(Gating)控制历史信息的保留与更新,在缓解普通 RNN 的梯度消失问题的同时,比 LSTM 具有更简单的结构和更少的参数。
GRU 最初被用于神经机器翻译中的 Encoder-Decoder 架构,后来广泛应用于自然语言处理、语音识别、时间序列预测等序列建模任务。
普通 RNN 在处理长序列时,需要通过隐藏状态 hₜ 持续传递历史信息:
hₜ = f(Wₕₕhₜ₋₁ + Wₓₕxₜ + b)
当序列较长时,反向传播过程中梯度需要连续经过大量时间步,容易出现梯度消失或梯度爆炸,使模型难以学习长期依赖关系。
LSTM 通过输入门、遗忘门和输出门解决这一问题,但结构相对复杂。
GRU 的思想是:不需要像 LSTM 一样设置三个门,而是使用两个门来控制信息的更新和保留。
GRU 主要包含两个门:
* 更新门(Update Gate):决定当前隐藏状态中有多少来自过去,有多少来自当前输入。 * 重置门(Reset Gate):决定计算新的候选隐藏状态时,需要参考多少过去的信息。
设:
* xₜ:当前输入 * hₜ₋₁:上一时刻隐藏状态 * hₜ:当前隐藏状态 * σ:Sigmoid 函数 * ⊙:逐元素乘法
更新门:
zₜ = σ(W_z xₜ + U_z hₜ₋₁ + b_z)
重置门:
rₜ = σ(W_r xₜ + U_r hₜ₋₁ + b_r)
候选隐藏状态:
h̃ₜ = tanh(W_h xₜ + U_h(rₜ ⊙ hₜ₋₁) + b_h)
最终隐藏状态:
hₜ = (1 - zₜ) ⊙ hₜ₋₁ + zₜ ⊙ h̃ₜ
因此,GRU 的基本计算过程可以理解为:
当前输入 xₜ + 历史状态 hₜ₋₁ → 更新门 zₜ / 重置门 rₜ → 候选状态 h̃ₜ → 新状态 hₜ
更新门 zₜ 决定旧信息和新信息之间的比例。
当 zₜ 接近 0:
hₜ ≈ hₜ₋₁
模型倾向于保留过去的信息。
当 zₜ 接近 1:
hₜ ≈ h̃ₜ
模型倾向于使用当前输入产生的新信息。
因此,更新门使 GRU 能够根据输入动态决定:
“过去的信息应该保留多少?”
这也是 GRU 能够处理长期依赖的重要原因。
重置门 rₜ 控制计算候选状态时应该使用多少历史信息。
当 rₜ 接近 0:
rₜ ⊙ hₜ₋₁ ≈ 0
模型基本忽略过去的隐藏状态。
当 rₜ 接近 1:
rₜ ⊙ hₜ₋₁ ≈ hₜ₋₁
模型充分利用历史信息。
因此,重置门主要决定:
“在产生新的状态时,要不要考虑过去的信息?”
GRU 的关键在于最终状态:
hₜ = (1 - zₜ) ⊙ hₜ₋₁ + zₜ ⊙ h̃ₜ
其中存在一条从 hₜ₋₁ 到 hₜ 的直接信息传递路径。
当更新门 zₜ 较小时:
hₜ ≈ hₜ₋₁
因此历史信息可以跨越多个时间步直接传播,而不必每次都经过完整的非线性变换。
GRU 和 LSTM 都属于门控循环神经网络,但结构有所不同。
| 特征 | GRU | LSTM |
|---|---|---|
| 门数量 | 2 个 | 3 个 |
| 独立记忆状态 | 没有 | 有 Cell State |
| Hidden State | 有 | 有 |
| 参数量 | 较少 | 较多 |
| 结构复杂度 | 较低 | 较高 |
| 长期依赖 | 较好 | 较好 |
| 训练速度 | 通常较快 | 通常较慢 |
GRU 可以看作一种更加简化的门控 RNN。
LSTM 使用:
遗忘门 + 输入门 + 输出门 + Cell State
而 GRU 主要使用:
更新门 + 重置门 + Hidden State
不过,“GRU 一定比 LSTM 好”并不成立。两者在不同数据集和任务上的表现可能不同。
普通 RNN:
xₜ + hₜ₋₁ → hₜ
GRU:
xₜ + hₜ₋₁ → 门控机制 → hₜ
普通 RNN 每一步都直接对历史状态进行非线性变换,而 GRU 可以通过门控机制选择保留历史信息,因此在长序列任务上通常更加稳定。
可以将演化关系概括为:
RNN → LSTM / GRU → Attention → Transformer
GRU 和 Transformer 都可以处理序列,但基本思想完全不同。
GRU 依靠循环结构逐时间步处理序列:
x₁ → h₁ → h₂ → h₃ → … → hₜ
因此具有明显的时序依赖,训练过程中难以完全并行。
Transformer 则主要依靠Self-Attention:
x₁, x₂, x₃, …, xₜ → Self-Attention → 输出
可以同时处理整个序列,因此更加适合大规模并行训练。
随着 Transformer 和 LLM 的发展,GRU 在现代 NLP 中的重要性已经明显下降,但在计算资源有限、序列长度适中、需要较低延迟的任务中仍然具有价值。
GRU 曾广泛用于:
* 机器翻译 * 语音识别 * 文本生成 * 时间序列预测 * 序列分类 * 推荐系统 * 轨迹预测 * 强化学习
尤其是在 Transformer 普及之前,GRU 和 LSTM 是处理序列数据的主要神经网络结构之一。
* 仍然存在循环计算,难以像 Transformer 一样进行高度并行化。 * 序列很长时,计算仍然需要逐时间步进行。 * 门控机制增加了模型复杂度,相比普通 RNN 更难解释。 * 在现代大规模 NLP 和大语言模型中,Transformer 通常具有更强的扩展能力。
GRU 的重要意义在于,它进一步说明了通过门控机制控制信息流可以有效改善循环神经网络的长期记忆能力。
从历史上看:
RNN → LSTM → GRU → Attention → Transformer
这一发展过程体现了序列建模从“逐步传递状态”逐渐转向“直接建立序列内部不同位置之间的关系”。
虽然 GRU 已经不是现代 LLM 的主流架构,但它仍然是理解序列建模、门控机制以及 Transformer 出现之前 NLP 技术发展的重要基础。
* RNN * LSTM * Transformer * Attention * Self-Attention * Encoder-Decoder * 梯度消失 * 序列建模
* Cho, K. et al. (2014). Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation. * Chung, J. et al. (2014). Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling. * Hochreiter, S. & Schmidhuber, J. (1997). Long Short-Term Memory. * Elman, J. L. (1990). Finding Structure in Time.