GRU门控循环单元【数学+图解】

文章目录

🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎人工智能和前端开发。

🦅个人主页:@逐梦苍穹

📕所属专栏:人工智能

🌻gitee地址:xzl的人工智能代码仓库

✈ 您的一键三连,是我创作的最大动力🌹

1、简介

GRU:Gated Recurrent Unit

可以先复习一下之前的内容:

循环神经网络RNN:https://xzl-tech.blog.csdn.net/article/details/140940642

LSTM:https://xzl-tech.blog.csdn.net/article/details/140940759

概念:

GRU是另一种RNN变体,它简化了LSTM的结构,减少了计算复杂度,同时保持了处理长时依赖的能力。
结构:

GRU将LSTM的输入门和遗忘门 合并为一个 更新门(Update Gate) ,并用一个 重置门(Reset Gate) 来决定隐藏状态如何结合新输入。

2、门控机制

  1. 门控机制的基本思想是使用"门"来控制信息在网络中的流动。
  2. 每个门都是通过 神经网络层计算出来的 权重向量 ,其值通常在 0到1之间
  3. 不同的门在不同 时间步 上控制信息的选择、遗忘和更新。
  4. 这些门是通过可学习的参数在训练过程中自动调整的。

3、公式

GRU在每个时间步的更新过程可以用以下公式描述:

  1. 更新门 : z t = σ ( W z ⋅ [ h t − 1 , x t ] + b z ) z_t = \sigma(W_z \cdot [h_{t-1}, x_t]+b_z) zt=σ(Wz⋅[ht−1,xt]+bz)
    • z t z_t zt 表示更新门的输出。
  2. 重置门 : r t = σ ( W r ⋅ [ h t − 1 , x t ] + b r ) r_t = \sigma(W_r \cdot [h_{t-1}, x_t]+b_r) rt=σ(Wr⋅[ht−1,xt]+br)
    • r t r_t rt 表示重置门的输出。
  3. 候选隐藏状态 : h ~ t = tanh ⁡ ( W h ⋅ [ r t ∗ h t − 1 , x t ] ) \tilde{h}t = \tanh(W_h \cdot [r_t \ast h{t-1}, x_t]) h~t=tanh(Wh⋅[rt∗ht−1,xt])
    • h ~ t \tilde{h}_t h~t 表示候选的隐藏状态。
  4. 隐藏状态更新 : h t = ( 1 − z t ) ∗ h t − 1 + z t ∗ h ~ t h_t = (1 - z_t) \ast h_{t-1} + z_t \ast \tilde{h}_t ht=(1−zt)∗ht−1+zt∗h~t
    • h t h_t ht 是当前时间步的隐藏状态。

回顾一下 tanh函数 : f ( x ) = 1 − e − 2 x 1 + e − 2 x f(x) = \frac{1 - e^{-2x}}{1 + e^{-2x}} f(x)=1+e−2x1−e−2x

4、图解GRU

4.1、重置门和更新门

GRU实际上影藏了记忆链条 h t h_t ht:

重置门的作用跟之前的遗忘门类似,都是充当橡皮擦的作用:

更新门则是筛选新的记忆:

4.2、候选隐藏状态和隐藏状态⭐

候选隐藏状态则是在前一时刻隐藏状态之上,擦除了一定记忆之后,融合进当前的输入 x t x_t xt,然后经过tanh函数临时记录下来:

更新门在当前的候选隐状态 h ~ t \tilde{h}t h~t和前一时刻的候选隐状态 h ~ t − 1 \tilde{h}{t-1} h~t−1之间取舍,组合之后输出当前的隐藏状态 h t h_t ht,然后网络进行更新,即融入了原有的"记忆"中,相当于阅后即焚:

经过这样不断的模块迭代,就是一直在短期记忆和长期记忆之间融合更新,而且存储的信息不需要像LSTM那么多,更加简单高效:

5、LSTM与GRU的对比

  1. 复杂性
    • LSTM更复杂,参数更多。
    • GRU较为简洁,参数更少,训练速度更快。
  2. 性能
    • 两者在处理长时依赖性任务时表现都很优异,具体选择往往取决于数据集和计算资源。
    • 在一些特定任务和数据集上,GRU可能比LSTM表现更好,尤其是在计算资源有限的情况下。
  3. 使用场景
    • 对于需要更强的长期记忆和复杂信息流动的任务,LSTM可能更合适。
    • 对于实时性要求较高或者模型简单性要求较高的任务,GRU可能更具优势。

LSTM和GRU是两种非常成功的RNN变体,通过改进信息传递机制,有效解决了传统RNN在处理长序列数据时的局限性。

它们在自然语言处理、语音识别和时间序列预测等领域得到广泛应用。

6、应用

RNN及其变体广泛应用于以下领域:

  • 自然语言处理:如语言模型、机器翻译和文本生成。
  • 语音识别:将音频序列转换为文本。
  • 时间序列预测:如股票价格预测和天气预报。
  • 视频分析:从视频帧中提取时间信息。

7、训练技巧

  • 梯度裁剪:限制梯度的大小以防止梯度爆炸。
  • 正则化:使用Dropout等技术防止过拟合。
  • 预训练和转移学习:利用大规模预训练模型微调特定任务。

RNN模型在序列数据处理中具有强大的表现力和适应能力,但也面临一些挑战。通过使用LSTM、GRU等改进模型,结合适当的训练技巧,能够有效地应用于各种实际问题。

相关推荐
小程故事多_802 小时前
Agent+Milvus,告别静态知识库,打造具备动态记忆的智能AI助手
人工智能·深度学习·ai编程·milvus
code_pgf2 小时前
Llama 3详解
人工智能·llama
ComputerInBook2 小时前
数字图像处理(4版)——第 3 章——(图像的)强度变换和空间滤波(Rafael C.Gonzalez&Richard E. Woods)
图像处理·人工智能·计算机视觉·强度变换和空间滤波
爱写代码的小朋友2 小时前
生成式人工智能(AIGC)在开放式教育问答系统中的知识表征与推理机制研究
人工智能·aigc
技术专家2 小时前
Stable Diffusion系列的详细讨论 / Detailed Discussion of the Stable Diffusion Series
人工智能·python·算法·推荐算法·1024程序员节
m0_488913012 小时前
万字长文带你梳理Llama开源家族:从Llama-1到Llama-3,看这一篇就够了!
人工智能·学习·机器学习·大模型·产品经理·llama·uml
helpme流水2 小时前
LLaMA Factory 从入门到精通,一篇讲完
人工智能·ai·语言模型·llama
段一凡-华北理工大学2 小时前
【大模型+知识图谱+工业智能体技术架构】~系列文章01:快速了解与初学入门!!!
人工智能·python·架构·知识图谱·工业智能体
Swift社区2 小时前
AI Governance:从 Policy Engine 到完整治理体系
人工智能·openclaw
田井中律.3 小时前
知识图谱(BILSTM+CRF项目完整实现)【第六章】
人工智能·知识图谱