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等改进模型,结合适当的训练技巧,能够有效地应用于各种实际问题。

相关推荐
csdnzzt3 分钟前
一文入门生成式AI(理解ChatGPT的原理)
人工智能·chatgpt
TechQuester39 分钟前
OpenAI 刚刚推出 o1 大模型!!突破LLM极限
人工智能·python·gpt·算法·chatgpt
jndingxin1 小时前
OpenCV结构分析与形状描述符(19)查找二维点集的最小面积外接旋转矩形函数minAreaRect()的使用
人工智能·opencv·计算机视觉
AI in Bio1 小时前
预训练蛋白质语言模型ESM-2保姆级使用教程
人工智能·语言模型
成都古河云1 小时前
智慧园区:解析集成运维的未来之路
大数据·运维·人工智能·科技·5g·安全
真-忒修斯之船2 小时前
搭配Knowledge Graph的RAG架构
人工智能·大模型·llm·知识图谱·graph·rag·knowledgegraph
CodingPioneer2 小时前
RK3588人工智能学习笔记-WSL中使用RKNN-ToolKit2
人工智能·笔记·学习
Linux猿2 小时前
Pytorch Lightning框架
人工智能·pytorch·python
喵~来学编程啦2 小时前
【PyTorch入门·求导相关】一文解释 PyTorch的求导 (backward、autograd.grad)
人工智能·pytorch·python
sp_fyf_20242 小时前
计算机人工智能前沿进展-大语言模型方向-2024-09-17
人工智能·语言模型·自然语言处理