← 返回题目列表

GRU 是什么?和 LSTM 有什么区别?

高频 中等 第 6 / 25 题 更新于 2026/09/25
循环神经网络GRULSTM门控
学习 AI 实战项目

简化版

GRU(门控循环单元) 是 LSTM 的简化版,同样用门控机制缓解梯度消失、捕捉长依赖,但结构更精简:只有两个门(LSTM 是三个),且没有单独的细胞状态(把 LSTM 的细胞状态和隐藏状态合并成一个 h)。两个门:① 重置门(reset gate)——决定忘掉多少过去的信息(控制新候选状态里用多少历史);② 更新门(update gate)——决定保留多少旧状态、写入多少新状态(相当于把 LSTM 的遗忘门和输入门合二为一)。所以 GRU 在相同输入与隐藏维度下参数和理论计算更少,真实速度取决于算子实现,效果和 LSTM 通常相近;实践中:数据/资源有限或要快用 GRU,不同数据与优化配置下胜负不固定,常两者都试。

详细版

GRU vs LSTM 结构对比:

LSTMGRU
门数量3 个(遗忘、输入、输出)2 个(重置、更新)
状态细胞状态 C + 隐藏状态 h只有隐藏状态 h(合并)
参数量四组仿射变换三组仿射变换(同维度常少约 25%)
理论计算量四组仿射变换三组仿射变换
实测速度依赖融合算子、硬件和维度同样依赖实现,常较轻但不保证更快

GRU 两个门:

门作用
重置门 r_t决定忽略多少过去状态(算候选时用多少历史)
更新门 z_t决定保留多少旧状态 vs 采用多少新状态(合并了遗忘+输入)

GRU 更新(简化):

z_t = σ(...)                         更新门
r_t = σ(...)                         重置门
h̃_t = tanh(W·[r_t⊙h_{t-1}, x_t])     候选状态(重置门控制用多少历史)
h_t = (1-z_t)⊙h_{t-1} + z_t⊙h̃_t      更新门在旧状态和新候选间插值

完整版教学

一、GRU 的定位:LSTM 的精简替代

LSTM 用门控和细胞状态缓解 RNN 的长依赖训练困难,但结构包含四组仿射变换和两条状态。**GRU(Gated Recurrent Unit,门控循环单元)**保留门控信息流的思想,同时减少门和状态。在相同输入、隐藏维度的常见定义下,它参数与理论计算量更少;真实吞吐仍取决于框架融合、硬件、序列长度和批量大小。

二、简化一:合并状态——只有隐藏状态

LSTM 有两条状态线:细胞状态 C(长期记忆)和隐藏状态 h(短期输出)。GRU 把它们合并成一个隐藏状态 h——不再区分「细胞状态」和「隐藏状态」,用一个 h 同时承担记忆和输出。

这减少了一套状态的维护,结构更简洁。

三、简化二:两个门(重置门 + 更新门)

LSTM 有三个门(遗忘、输入、输出),GRU 只有两个门:

① 重置门(Reset Gate)r_t——决定用多少过去信息

r_t = σ(W_r · [h_{t-1}, x_t])

重置门控制在计算「候选新状态」时,要用多少上一步的历史信息。r_t 接近 0 = 「忽略过去、只看当前输入」(适合序列出现新片段、要「重置记忆」时);接近 1 = 「充分利用历史」。

② 更新门(Update Gate)z_t——决定新旧状态的比例

z_t = σ(W_z · [h_{t-1}, x_t])

更新门决定最终隐藏状态里,保留多少旧状态、采用多少新候选状态。它相当于把 LSTM 的遗忘门和输入门合二为一——「保留旧的」和「写入新的」用同一个门(一个比例)控制。

四、GRU 的状态更新

① z_t = σ(...)                              更新门
② r_t = σ(...)                              重置门
③ h̃_t = tanh(W · [r_t ⊙ h_{t-1}, x_t])      候选新状态(重置门筛选历史)
④ h_t = (1 - z_t) ⊙ h_{t-1} + z_t ⊙ h̃_t     在旧状态和新候选间插值

核心是第④步的插值:h_t = (1-z_t)·旧状态 + z_t·新候选——更新门 z_t 像一个「混合比例」,决定这一步的隐藏状态多大程度上更新、多大程度上保持不变。z_t 接近 0 = 几乎保持旧状态(长期记忆,类似 LSTM 遗忘门≈1);z_t 接近 1 = 大幅采用新信息。这个「保持旧状态」的能力,就是 GRU 缓解梯度消失、记住长依赖的机制(和 LSTM 加法更新异曲同工)。

五、GRU vs LSTM:怎么选

结构差异总结:

  • GRU 少一个门(2 vs 3)、少一套状态(合并 C 和 h)、在相同维度与常见实现下参数常少约 25%。

实践取舍:

  • GRU 优势:同隐藏维度的常见实现参数和状态较少,可作为资源受限场景的轻量基线;但参数少不自动保证更快或更不易过拟合,仍需实测吞吐和验证误差。
  • LSTM 特点:三个门和独立细胞状态提供不同的控制方式,但是否优于 GRU 取决于数据、隐藏宽度与优化配置。
  • 效果通常相近:大量实验表明两者在多数任务上性能差不多,没有绝对赢家。

结论:没有固定赢家。应在相同数据切分与部署约束下分别调隐藏维度、学习率和正则,并同时比较质量、延迟、吞吐和内存;不能仅凭“序列更长”就断定 LSTM 必胜。

六、和 Transformer 的关系(补充)

无论 LSTM 还是 GRU,都是串行处理序列、无法并行,且长依赖仍不如注意力机制。所以在很多任务上,两者都已被 Transformer(自注意力、可并行、任意位置直连)取代(详见 RNN vs Transformer 专题)。但在小数据、流式、资源受限场景,GRU/LSTM 仍有用武之地。

七、参数量对比与更新门约定

沿用 D_x=3,D_h=4,常见 GRU 的 reset、update、candidate 三组参数共 3(D_xD_h+D_h²+D_h)=96;同尺寸 LSTM 为 128,正好少 25%。这个比例依赖隐藏维度相同、偏置计法相同且无 projection 等变体,不能当成所有框架的固定结论。

单元参数组数本例参数量相对 LSTM
GRU39675%
LSTM4128100%

还要注意更新门约定:有的资料写 h_t=(1-z_t)h_{t-1}+z_t h̃_t,有的把 z 定义为保留旧状态的比例并交换两项。两种写法可通过 z↔1-z 对应,面试时应先说明采用哪种定义,再解释 z 接近 0 或 1 的含义。

易错点:不要脱离公式死背“z=1 是保留还是更新”;先看 z 在旧状态项前还是候选项前。

八、常见误区与追问

  • 误区:GRU 在所有实现中都固定比 LSTM 少四分之一参数。 只有同维度、常见三组对四组仿射结构下近似成立。
  • 误区:更新门 z 越大一定表示保留旧状态。 不同资料的 z 定义相反,必须结合状态更新公式判断。
  • 追问:重置门作用在哪一步? 它控制计算候选状态时使用多少旧隐藏状态,不直接完成最终插值。
  • 追问:GRU 为什么也能缓解梯度消失? 加性插值允许状态沿保留分支较少改写地传播。
  • 追问:GRU 和 LSTM 如何公平比较? 分别调隐藏宽度、学习率与正则,并比较精度、延迟和内存。

九、加强记忆

GRU 是 LSTM 的简化版:只有 2 个门(vs LSTM 3 个)、没有独立细胞状态(合并 C 和 h 成一个 h)、同维度常见实现参数约少 25%,理论计算与状态内存也较少。两个门:重置门 r_t(算候选新状态时用多少历史,≈0 则忽略过去)、更新门 z_t(在旧状态和新候选间插值 h_t=(1-z_t)⊙h_{t-1}+z_t⊙h̃_t,合并了 LSTM 的遗忘门+输入门)。更新门让状态能「保持不变」从而缓解梯度消失、记长依赖(类比 LSTM 加法通路)。选择:效果通常相近,同维度下 GRU 可先作为较轻基线;LSTM 与 GRU 的最终选择应分别调优后比较。两者都串行不能并行,很多任务已被 Transformer 取代。