GRU 参数梯度推导与梯度消失分析

GRU 参数梯度推导与梯度消失分析

1. GRU 前向计算回顾

GRU 单元的核心计算步骤(忽略偏置项):

更新门:    z_t = σ(W_z · [h_{t-1}, x_t])
重置门:    r_t = σ(W_r · [h_{t-1}, x_t])
候选状态:  ̃h_t = tanh(W_h · [r_t ⊙ h_{t-1}, x_t])
新状态:    h_t = (1 - z_t) ⊙ h_{t-1} + z_t ⊙ ̃h_t

其中 σ 为 sigmoid 函数, 表示逐元素乘法。

2. 关键梯度推导(以 ∂L/∂W_h 为例)

设时间 T 的损失为 L。需计算 ∂L/∂W_h(影响候选状态 ̃h_t)。

反向传播从 h_t 开始:

∂L/∂h_t = δ_t  // 从更高层或损失函数接收的梯度

h_t̃h_t 的梯度:

∂h_t/∂̃h_t = diag(z_t)  // 对角矩阵,元素为 z_t

̃h_tW_h 的梯度:

̃h_t = tanh(W_h · [r_t ⊙ h_{t-1}, x_t])
∂̃h_t/∂W_h = [∂̃h_t/∂(W_h · in)] · [∂(W_h · in)/∂W_h] = diag(tanh'(net_h)) · [r_t ⊙ h_{t-1}, x_t]^T

其中 net_h = W_h · [r_t ⊙ h_{t-1}, x_t]

合并得 ∂L/∂W_h

∂L/∂W_h = (∂L/∂h_t) · (∂h_t/∂̃h_t) · (∂̃h_t/∂W_h)= δ_t^T · diag(z_t) · diag(tanh'(net_h)) · [r_t ⊙ h_{t-1}, x_t]^T= [δ_t ⊙ z_t ⊙ tanh'(net_h)] · [r_t ⊙ h_{t-1}, x_t]^T

3. 时间反向传播与梯度消失分析

损失 L 对历史状态 h_k (k < t) 的梯度是分析梯度消失的关键:

∂L/∂h_k = ∂L/∂h_t · (∂h_t/∂h_k)

计算 ∂h_t/∂h_k(核心路径):

h_t = (1 - z_t) ⊙ h_{t-1} + z_t ⊙ ̃h_t
̃h_t = tanh(W_h · [r_t ⊙ h_{t-1}, x_t])

展开递归关系:

∂h_t/∂h_k = ∏_{i=k+1}^{t} ∂h_i/∂h_{i-1}

∂h_i/∂h_{i-1} 的具体形式:

∂h_i/∂h_{i-1} = diag(1 - z_i) +  // 直接传递项diag(z_i ⊙ tanh'(net_{h_i})) · W_h^h · diag(r_i) + // 候选状态路径(∂h_i/∂z_i) · (∂z_i/∂h_{i-1}) + // 更新门路径(∂h_i/∂r_i) · (∂r_i/∂h_{i-1})   // 重置门路径

其中 W_h^hW_h 中对应 h_{i-1} 的子矩阵。

4. GRU 如何避免梯度消失

GRU 通过以下机制有效缓解梯度消失:

✅ 1. 加性状态更新
h_t = (1 - z_t) ⊙ h_{t-1} + z_t ⊙ ̃h_t
  • 梯度路径多样性:梯度可通过两条路径传播:
    • (1 - z_t) ⊙ h_{t-1} → 梯度乘以 (1 - z_t)
    • z_t ⊙ ̃h_t → 梯度乘以 z_t
  • 无损传播通道:当 z_t ≈ 0 时,h_t ≈ h_{t-1},梯度直接传递:
    ∂h_t/∂h_{t-1} ≈ I (单位矩阵)
    
    此时梯度可跨时间步无损传播,类似残差连接。
✅ 2. 门控机制调节
  • 更新门 z_t 的作用
    • z_t ≈ 0:模型保留历史信息,梯度主要走 (1 - z_t) 路径。
    • z_t ≈ 1:模型重置状态,梯度来自当前输入(避免旧信息干扰)。
  • 重置门 r_t 的作用
    • 控制历史状态 h_{t-1} 对候选状态 ̃h_t 的影响:
      ̃h_t = tanh(W_h · [r_t ⊙ h_{t-1}, x_t])
      
    • r_t ≈ 0 时,h_{t-1} 不影响 ̃h_t,适合忽略无关历史。
✅ 3. 梯度幅度分析

∂h_i/∂h_{i-1} 的主项为 diag(1 - z_i)

  • 该矩阵特征值接近 1(因 z_i ∈ (0,1)1 - z_i ∈ (0,1))。
  • 乘积 ∏_{i} (1 - z_i) 不会指数级衰减到 0(除非所有 z_i ≈ 1,但罕见)。

📊 与传统RNN对比
传统RNN:h_t = tanh(W·[h_{t-1}, x_t])∂h_t/∂h_{t-1} = diag(tanh'(...)) · W
梯度包含 W 的连乘,若 |W| < 1 则指数衰减。

5. 效果总结

机制效果
加性更新提供低衰减梯度路径 (∂h_t/∂h_{t-1} ≈ I),避免连乘权重矩阵
更新门 (z_t)自适应选择梯度来源:历史状态 (梯度保持) 或新输入 (及时更新)
重置门 (r_t)控制历史信息对当前候选状态的影响,防止无关历史干扰梯度计算
门控导数有界sigmoid 导数最大值为 0.25,但加性路径的 (1 - z_t) 项主导,整体梯度更稳定

结论

GRU 通过门控加性状态更新,在参数梯度计算中引入了近似恒等映射的路径(当 z_t ≈ 0 时)。这使其梯度 ∂h_t/∂h_k 的衰减速度远低于传统RNN,显著缓解了梯度消失问题,尤其适用于学习长序列依赖。实验表明,GRU 在语言建模、机器翻译等任务中能有效捕捉超过 100 步的依赖关系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【字节拥抱开源】字节团队开源视频模型 ContentV: 有限算力下的视频生成模型高效训练

本项目提出了ContentV框架&#xff0c;通过三项关键创新高效加速基于DiT的视频生成模型训练&#xff1a; 极简架构设计&#xff0c;最大化复用预训练图像生成模型进行视频合成系统化的多阶段训练策略&#xff0c;利用流匹配技术提升效率经济高效的人类反馈强化学习框架&#x…

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…

单片机0-10V电压输出电路分享

一、原理图 二、芯片介绍 GP8101是一个PWM信号转模拟信号转换器&#xff0c;相当于一个PWM信号输入&#xff0c;模拟信号输出的DAC。此 芯片可以将占空比为0%到100%的PWM信号线性转换成0-5V或者0-10V的模拟电压&#xff0c;并且输出电压 精度小于1%。GP8101M可以处理高频调制的…

Spring AMQP

在现代分布式系统中&#xff0c;消息队列是一种非常重要的通信机制&#xff0c;它能够实现服务之间的异步通信、负载均衡以及解耦。Spring AMQP 是 Spring 框架对 AMQP&#xff08;高级消息队列协议&#xff09;的支持&#xff0c;而 RabbitMQ 是 AMQP 协议的最流行实现之一。通…

第6章:Neo4j数据导入与导出

在实际应用中&#xff0c;数据的导入与导出是使用Neo4j的重要环节。无论是初始数据加载、系统迁移还是数据备份&#xff0c;都需要高效可靠的数据传输机制。本章将详细介绍Neo4j中的各种数据导入与导出方法&#xff0c;帮助读者掌握不同场景下的最佳实践。 6.1 数据导入策略 …

RKNN开发环境搭建1-基于Ubuntu 18.04系统使用Docker安装rknn-toolkit2

目录 写在最前面Docker 方式安装rknn-toolkit2写在最前面 瑞芯微在RKNN的环境搭建方面的资料很多,但是在搭建过程中发现很多问题教程中并未提及,对初学者不友好。所以博主做了这个系列的文章,从开始搭建环境到对于RKNN Model Zoo的示例进行实践,希望能对初学者有帮助。坚持…

【实施指南】Android客户端HTTPS双向认证实施指南

&#x1f510; 一、所需准备材料 证书文件&#xff08;6类核心文件&#xff09; 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…

FPGA管脚类型,及选择

fpga的IO Type选择&#xff0c;如下&#xff1a; 具体的定义&#xff1a;

SELinux是什么以及如何编写SELinux策略

目录 一、SELinux 是什么&#xff1f; 二、SELinux 的两种模式 如何查看当前 SELinux 状态&#xff1f; 三、SELinux 在 Android 中的作用 四、为什么Root之后很多设备是 Permissive&#xff1f; 五、开发与调试场景 总结 &#x1f9e9; 一、什么是 SELinux 策略&#x…

MQTT示例体验(C)

1、通用依赖准备 安装编译工具‌ Linux/macOS 需安装&#xff1a; sudo apt update && sudo apt install build-essential cmake git # Ubuntu/Debian:ml-citation{ref"6" data"citationList"} brew install cmake # macOSWindows 需安装 CMake…

MySQL中的系统库(简介、performance_schema)

文章目录 性能监控performance_schema1、performance schema入门2、performance_schema表的分类3、performance_schema的简单配置与使用4、常用配置项的参数说明5、重要配置表的相关说明6、performance_schema实践操作 Show processlist 性能监控 每次你提交完一个 sql 语句之…

【Ftrace 专栏】Ftrace 参考博文

ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…

bug 记录 - 使用 el-dialog 的 before-close 的坑

需求说明 弹窗中内嵌一个 form 表单 原始代码 <script setup lang"ts"> import { reactive, ref } from "vue" import type { FormRules } from element-plus const ruleFormRef ref() interface RuleForm {name: stringregion: number | null } …

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…

老年生活照护实训室建设规划:照护质量评估与持续改进实训体系

随着人口老龄化程度的不断加深&#xff0c;老年生活照护需求日益增长&#xff0c;对专业照护人才的培养提出了更高要求。老年生活照护实训室建设方案作为培养高素质照护人才的重要载体&#xff0c;其核心在于构建科学完善的照护质量评估与持续改进实训体系。通过该体系的建设&a…

Ctrl-Crash 助力交通安全:可控生成逼真车祸视频,防患于未然

视频扩散技术虽发展显著&#xff0c;但多数驾驶数据集事故事件少&#xff0c;难以生成逼真车祸图像&#xff0c;而提升交通安全又急需逼真可控的事故模拟。为此&#xff0c;论文提出可控车祸视频生成模型 Ctrl-Crash&#xff0c;它以边界框、碰撞类型、初始图像帧等为条件&…

jieba实现和用RNN实现中文分词的区别

Jieba 分词和基于 RNN 的分词在技术路线、实现机制、性能特点上有显著差异&#xff0c;以下是核心对比&#xff1a; 1. 技术路线对比 维度Jieba 分词RNN 神经网络分词范式传统 NLP&#xff08;规则 统计&#xff09;深度学习&#xff08;端到端学习&#xff09;核心依赖词典…

excel数据对比找不同:6种方法核对两列数据差异

工作中&#xff0c;有时需要核对两列数据的差异&#xff0c;用于对比、复核等。数据较少的情况下差异肉眼可见&#xff0c;数据量较大时用什么方法比较好呢&#xff1f;从个人习惯出发&#xff0c;我整理了6种方法供参考。 6种方法核对两列数据差异&#xff1a; 1、Ctrl G定位…

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…