GRU(门控循环单元) 笔记

文章目录

  • 1.什么是GRU
  • 2.GRU的内部结构
    • [2.1 重置门(Reset Gate)](#2.1 重置门(Reset Gate))
    • [2.2 更新门(Update Gate)](#2.2 更新门(Update Gate))
    • [2.3 候选隐状态](#2.3 候选隐状态)
    • [2.4 隐状态](#2.4 隐状态)
  • 代码

1.什么是GRU

GRU(Gate Recurrent Unit)是循环神经网络(RNN)的一种,可以解决RNN中不能长期记忆和反向传播中的梯度等问题,与LSTM的作用类似,不过比LSTM简单,容易进行训练。


先不看内部具体的复杂关系,将上图简化为下图:

结合xt 和 h(t-1),GRU会得到当前隐藏节点的输出y_{t}和传递给下一个节点的隐藏状态ht,这个ht的推导是GRU的关键所在,我们看一下GRU所用到的公式:

2.GRU的内部结构

2.1 重置门(Reset Gate)

r是重置门,重置门决定了如何将新的输入信息与前面的记忆相结合,它控制过去的信息是否重要。如果旧的信息很重要,就保留;如果不重要,就忽略。这有点像在"刷脑子",看哪些旧记忆还需要用,哪些可以被新内容覆盖。

2.2 更新门(Update Gate)

它决定哪些信息需要更新,哪些不需要更新。你可以理解成一个选择器,判断"哪些新知识值得记进脑子里"。

2.3 候选隐状态


2.4 隐状态

zt越接近1,代表"记忆"下来的数据越多;而越接近0则代表"遗忘"的越多。

代码

python 复制代码
def gru(inputs, state, params):
    W_xz, W_hz, b_z, W_xr, W_hr, b_r, W_xh, W_hh, b_h, W_hq, b_q = params
    H, = state
    outputs = []
    for X in inputs:
        Z = torch.sigmoid((X @ W_xz) + (H @ W_hz) + b_z)
        R = torch.sigmoid((X @ W_xr) + (H @ W_hr) + b_r)
        H_tilda = torch.tanh((X @ W_xh) + ((R * H) @ W_hh) + b_h)
        H = Z * H + (1 - Z) * H_tilda
        Y = H @ W_hq + b_q
        outputs.append(Y)
    return torch.cat(outputs, dim=0), (H,)
相关推荐
一隅论数智2 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
LaughingZhu2 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
猎头南楼2 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
高洁012 天前
未来三年,AI 落地的五个确定性判断一
人工智能·深度学习·机器学习·transformer·知识图谱
深圳老胡2 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
Because_of_Her12 天前
并查集-听课笔记
笔记·算法·并查集
彧azz2 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
陈卫军老师2 天前
陈卫军:把口味写在一张纸上,店才稳得住
经验分享·笔记·流量运营
`流年づ2 天前
人工智能学习笔记 - 补充
人工智能·笔记·深度学习·学习
qeen873 天前
【Linux】操作系统之进程介绍(二)
linux·笔记·学习·进程