跳至内容
Fubune's Wiki
用户工具
登录
站点工具
搜索
工具
显示页面
过去修订
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您的足迹:
gru
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== GRU ====== **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 能缓解梯度消失 ===== GRU 的关键在于最终状态: hₜ = (1 - zₜ) ⊙ hₜ₋₁ + zₜ ⊙ h̃ₜ 其中存在一条从 hₜ₋₁ 到 hₜ 的直接信息传递路径。 当更新门 zₜ 较小时: hₜ ≈ hₜ₋₁ 因此历史信息可以跨越多个时间步直接传播,而不必每次都经过完整的非线性变换。 这与 [[LSTM]] 的[[记忆细胞]]具有类似作用,使网络更容易学习长期依赖。 ===== GRU 与 LSTM ===== GRU 和 [[LSTM]] 都属于[[门控循环神经网络]],但结构有所不同。 | 特征 | GRU | LSTM | | ------------ | ---- | ------------ | | 门数量 | 2 个 | 3 个 | | 独立记忆状态 | 没有 | 有 Cell State | | Hidden State | 有 | 有 | | 参数量 | 较少 | 较多 | | 结构复杂度 | 较低 | 较高 | | 长期依赖 | 较好 | 较好 | | 训练速度 | 通常较快 | 通常较慢 | GRU 可以看作一种更加简化的门控 RNN。 LSTM 使用: 遗忘门 + 输入门 + 输出门 + Cell State 而 GRU 主要使用: 更新门 + 重置门 + Hidden State 不过,“GRU 一定比 LSTM 好”并不成立。两者在不同数据集和任务上的表现可能不同。 ===== GRU 与普通 RNN ===== 普通 [[RNN]]: xₜ + hₜ₋₁ → hₜ GRU: xₜ + hₜ₋₁ → 门控机制 → hₜ 普通 RNN 每一步都直接对历史状态进行非线性变换,而 GRU 可以通过门控机制选择保留历史信息,因此在长序列任务上通常更加稳定。 可以将演化关系概括为: [[RNN]] → [[LSTM]] / [[GRU]] → [[Attention]] → [[Transformer]] ===== GRU 与 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 是处理序列数据的主要神经网络结构之一。 ===== 优点 ===== * 相比普通 [[RNN]] 更容易学习长期依赖。 * 相比 [[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*.
gru.txt
· 最后更改:
2026/09/14 11:24
由
holdsark
页面工具
显示页面
过去修订
反向链接
回到顶部