← 返回题目列表

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

高频 中等 第 6 / 25 题 更新于 2026/08/02
循环神经网络GRULSTM门控

简化版

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 相近的效果。理解 GRU 的最好方式,就是看它相比 LSTM 简化了什么

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

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 取决于数据、隐藏宽度与优化配置。
  • 效果通常相近:大量实验表明两者在多数任务上性能差不多,没有绝对赢家。

结论没有定论,常两者都试;资源紧/序列不太长优先 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 取代。