当前位置: 首页 > news >正文

机器学习周报(RNN的梯度消失和LSTM缓解梯度消失公式推导)

文章目录

    • 摘要
    • Abstract
  • 1 RNN的梯度消失问题
  • 2 LSTM缓解梯度消失
    • 总结

摘要

在深度学习领域,循环神经网络(Recurrent Neural Network, RNN)被广泛应用于处理序列数据,特别是在自然语言处理、时间序列预测等任务中。然而,传统的RNN在长序列数据学习过程中容易出现梯度消失和梯度爆炸问题,使得模型难以捕捉长时间依赖性。梯度消失问题源于RNN的反向传播算法中,多次矩阵相乘导致梯度指数级衰减,从而影响模型性能。为解决这一问题,长短期记忆网络(Long Short-Term Memory, LSTM)应运而生。LSTM通过设计特殊的门结构(输入门、遗忘门和输出门)以及引入细胞状态的传播,有效缓解了梯度消失现象。本文推导了RNN梯度消失的数学公式,并详细说明了LSTM如何利用门结构保持梯度稳定性,从而捕捉长时间依赖。

Abstract

Recurrent Neural Networks (RNNs) are widely used in deep learning for handling sequential data, particularly in tasks such as natural language processing and time series forecasting. However, traditional RNNs often encounter the vanishing and exploding gradient problem when learning from long sequences, which hinders their ability to capture long-term dependencies. The vanishing gradient problem arises in RNNs due to multiple matrix multiplications during backpropagation, causing exponential decay of gradients and impacting model performance. To address this issue, Long Short-Term Memory (LSTM) networks were developed. LSTM alleviates gradient vanishing by introducing specially designed gate structures—input gate, forget gate, and output gate—along with a cell state that propagates through time. This paper derives the mathematical basis for the vanishing gradient in RNNs and explains how LSTM leverages gate structures to maintain gradient stability, enabling the model to capture long-term dependencies effectively.

1 RNN的梯度消失问题

在这里插入图片描述

  • RNN的缺点

当序列太长时,容易产生梯度消失,参数更新只能捕捉到局部以来关系,没法再捕捉序列之间长期的关联或依赖关系。

如图为RNN连接,输入x,输出o(简单线性输出),权重w,s为生成状态。

在这里插入图片描述

根据前向传播可得:

在这里插入图片描述
假设使用平方误差作为损失函数,对单个时间点进行求梯度,假设再t=3时刻,损失函数为 L 3 = 1 2 ( Y 3 − O 3 ) 2 L_3=\frac{1}{2}(Y_3-O_3)^2 L3=21(Y3O3)2,然后根据网络参数Wx,Ws,Wo,b1,b2等求梯度。

  • W o W_o Wo求梯度得:

在这里插入图片描述

  • W x W_x Wx求梯度得:

在这里插入图片描述

具体求解过程:首先,所求目标为 L 3 L_3 L3 W x W_x Wx的偏导,通过链式法则进行展开。对比前向传播公式图可知, O 3 O_3 O3中并不能直接对 W x W_x Wx求偏导,而是包含在 S 3 S_3 S3中,所以要展开成如下形式。

在这里插入图片描述

但在 S 3 S_3 S3中又包含 S 2 S_2 S2 S 2 S_2 S2中包含 W x W_x Wx S 1 S_1 S1 S 1 S_1 S1中又包含 W x W_x Wx,嵌套了很多层,为了方便表示,我们用 θ 3 \theta_3 θ3来表示 S 3 S_3 S3括号中的内容。进一步简化可得:

在这里插入图片描述
S 3 S_3 S3演变为 S 2 S_2 S2,同理可递推求出 ∂ S 2 ∂ W x \frac{\partial{S_2}}{\partial{W_x}} WxS2 ∂ S 1 ∂ W x \frac{\partial{S_1}}{\partial{W_x}} WxS1

梯度的更新同时依赖于x3,x2,x1包括其梯度值。

在这里插入图片描述此为t=3时刻的梯度公式,推广至任意时刻的梯度公式为:

在这里插入图片描述
此式括号中的项为求导的连乘,此处求出的导数是介于0-1之间的,有一定的机率导致梯度消失(但非主要原因)。
造成梯度消失和梯度爆炸的主要原因是最后一项:当 W s W_s Ws很小的时候,它的k-1的次方会无限接近于0,而当 W s W_s Ws大于1时,它的k-1次方会很大。

如下为t=20时梯度更新计算的结果:

在这里插入图片描述
从式中可以看出,t=3的节点由于连乘过多导致梯度消失(t=3时的信息, x 3 x_3 x3所乘的 W s 17 W_s^{17} Ws17由于 W s W_s Ws介于0,1之间,已经非常接近于0),无法将信息传给t=20,因此t=20的更新无法引入t=3时的信息,认为t=20节点跟t=3的节点无关联。

对于梯度爆炸和梯度消失,可以通过梯度修剪来解决。相对于梯度爆炸,梯度消失更难解决。而LSTM很好的解决了这些问题。

2 LSTM缓解梯度消失

此过程为公式推导(以求 W x f W_{xf} Wxf为例)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

故得 ∂ L 1 ∂ W x f \frac{\partial{L_1}}{\partial{W_{xf}}} WxfL1

在这里插入图片描述
其中 ∂ C t ∂ C t − 1 \frac{\partial{C_t}}{\partial{C_{t-1}}} Ct1Ct

通过调节 W h f W_{hf} Whf W h i W_{hi} Whi W h g W_{hg} Whg的值,可以灵活控制 C t C_t Ct C t − 1 C_{t-1} Ct1的偏导值,当要从n时刻长期记忆某个东西到m时刻时,该路径上的 ∏ t = n m ∂ C t ∂ C t − 1 \quad \prod_{t=n}^m\frac{\partial{C_t}}{\partial{C_{t-1}}} t=nmCt1Ct ≈ \approx 1×1×1…×1=1从而大大缓解了梯度消失。
在这里插入图片描述

总结

传统RNN在处理长序列数据时,由于重复矩阵相乘使梯度呈指数级衰减,导致梯度消失问题。为此,RNN模型难以学习序列中远距离位置的依赖信息。通过对RNN的梯度推导可以看出,当模型深度较大时,梯度逐渐趋向于零,最终导致模型无法学习有效特征。LSTM网络通过引入细胞状态和多个门控机制来缓解这一问题。细胞状态在序列传递中起到信息通路的作用,门控机制则控制信息的增删过程,使得梯度的传递得以有效保留。通过这样的设计,LSTM能够在长序列任务中稳定地传递梯度,从而有效捕捉长时间依赖关系。

相关文章:

机器学习周报(RNN的梯度消失和LSTM缓解梯度消失公式推导)

文章目录 摘要Abstract 1 RNN的梯度消失问题2 LSTM缓解梯度消失总结 摘要 在深度学习领域,循环神经网络(Recurrent Neural Network, RNN)被广泛应用于处理序列数据,特别是在自然语言处理、时间序列预测等任务中。然而&#xff0c…...

一篇文章理解前端中的 File 和 Blob

概述: js处理文件、二进制数据和数据转换的时候,提供了一些API和对象,例如:File、Blob、FileReader、ArraryBuffer、Base64、Object URL 和 DataURL。现在主要介绍File和Blob这两个对象。 1.Blob介绍 在js中,Blob&am…...

串口屏控制的自动滑轨(未完工)

序言 疫情期间自己制作了一个自动滑轨,基于无线遥控的,但是整体太大了,非常不方便携带,所以重新设计了一个新的,以2020铝型材做导轨的滑轨,目前2020做滑轨已经很成熟了,配件也都非常便宜&#x…...

DFA算法实现敏感词过滤

DFA算法实现敏感词过滤 需求:检测一段文本中是否含有敏感词。 比如检测一段文本中是否含有:“滚蛋”,“滚蛋吧你”,“有病”, 可使用的方法有: 遍历敏感词,判断文本中是否含有这个敏感词。 …...

Python自动化运维:技能掌握与快速入门指南

#编程小白如何成为大神?大学生的最佳入门攻略# 在当今快速发展的IT行业中,Python自动化运维已经成为了一个不可或缺的技能。本文将为您详细介绍Python自动化运维所需的技能,并提供快速入门的资源,帮助您迅速掌握这一领域。 必备…...

在linux系统中安装pygtftk软件

1.下载和安装 网址&#xff1a; https://dputhier.github.io/pygtftk/index.html ## 手动安装 git clone http://gitgithub.com:dputhier/pygtftk.git pygtftk cd pygtftk # Check your Python version (>3.8,<3.9) pip install -r requirements.txt python setup.py in…...

decodeURIComponentSafe转义%问题记录URI malformed

decodeURIComponentSafe转义%问题记录 问题背景 当我们解析包涵 % 字符的字符串时&#xff0c;会出现错误如下 Uncaught URIError: URI malformed 解决方案&#xff1a; function decodeURIComponentSafe(s) {if (!s) {return s;}return decodeURIComponent(s.replace(/%(?…...

自由学习记录(18)

动画事件的碰撞器触发 Physics 类的常用方法 RaycastHit hit; if (Physics.Raycast(origin, direction, out hit, maxDistance)) {Debug.Log("Hit: " hit.collider.name); } Physics.Raycast&#xff1a;从指定点向某个方向发射射线&#xff0c;检测是否与碰撞体…...

vue3-ref 和 reactive

文章目录 vue3 中 ref 和 reactivereactive 与 ref 不同之处ref 处理复杂类型ref在dom中的应用 vue3 中 ref 和 reactive ref原理 基本原理 ref是Vue 3中用于创建响应式数据的一个函数。它的基本原理是通过Object.defineProperty()&#xff08;在JavaScript的规范中用于定义对…...

Apache Calcite - 查询优化之自定义优化规则

RelOptRule简介 为了自定义优化规则&#xff0c;我们需要继承RelOptRule类。org.apache.calcite.plan.RelOptRule 是 Apache Calcite 中的一个抽象类&#xff0c;用于定义优化规则。优化规则是用于匹配查询计划中的特定模式&#xff0c;并将其转换为更优化的形式的逻辑。通过继…...

大型语言模型(LLM)的小型化研究进展

2024年&#xff0c;大型语言模型&#xff08;LLM&#xff09;的小型化研究取得了显著进展&#xff0c;主要采用以下几种方法实现&#xff1a; 模型融合&#xff1a;通过将多个模型或检查点合并为一个单一模型&#xff0c;减少资源消耗并提升整体性能。例如&#xff0c;《WARM: …...

MiniWord

1.nuget 下载配置 2.引用 3. var value = new Dictionary<string, object>() { ["nianfen"] = nianfen, ["yuefen"] = yuefen, ["yuefenjian1"] = (int.Par…...

Netty 常见组件介绍

Netty 常见组件介绍 上篇文章Netty入门程序echo 基本包含了Netty常见的组件&#xff0c;本文分别介绍各个组件 Bootstrap or ServerBootstrapEventLoopEventLoopGroupChannelPipelineChannelFuture or ChannelFutureChannelInitializerChannelHandler Bootstrap vs ServerBo…...

高频电子线路---倍频器与振荡器

目录 倍频电路原理 丙类倍频器原理电路 问题: 提升滤波方法: 导通角 振荡器 振荡器基本工作原理 首先是怎么维持 那么如何振荡呢? 思考题: 组成要素 振荡器的起振条件 平衡条件 要点提示 稳定条件 振幅平衡 硬激励起振时: 稳定条件 相位平衡 倍频电路原理 简单原理 : …...

删除 git submodule

直接运行下面命令即可&#xff1a; git rm <path-to-submodule>然后提交修改即可。 但是&#xff0c;还有一个小问题&#xff1a;上面命令只是将 submodule 的代码目录删除了。 以下痕迹还存在你的仓库中&#xff1a; .gitmodule 中关于该 submodule 的信息.git 目录…...

el-table 多选默认选中(根据返回的id给数据加默认选中状态)

前言 el-table是我们最常用的展示数据的方式&#xff0c;但是有时候需要用到多选来选择数据&#xff0c;新增数据的时候还好&#xff0c;选中状态都是正常的&#xff0c;但是修改就遇到问题&#xff0c;需要对这个已经选择过的数据加上默认的选中状态&#xff0c;本次就是解决…...

境外网站翻译之自由职业

Polls Do you use AI tools (e.g ChatGPT, Midjourney, Github Copilot) as part of your work? 你在工作中会使用人工智能工具&#xff08;如 ChatGPT、Midjourney、Github Copilot&#xff09;吗&#xff1f; Yes, as an assistant 是的&#xff0c;作为一种辅助工具。 Y…...

批量图片转PDF文件的多种方法详解

要将批量图片转换为PDF文件&#xff0c;可以使用多种方法&#xff0c;包括使用在线工具、桌面应用程序或编程语言。以下是几种常见的方法&#xff1a; 方法一&#xff1a;使用在线工具 选择工具&#xff1a;搜索“图片转PDF”在线工具&#xff0c;如 Smallpdf、ILovePDF 等。…...

Web服务器(理论)

目录 Web服务器www简介常见Web服务程序介绍&#xff1a;服务器主机主要数据浏览器 网址及HTTP简介URLhttp请求方法:2.3 HTTP协议请求的工作流程&#xff1a; www服务器的类型静态网站动态网站 快速安装Apache安装准备工作httpd所需目录主配置文件 nignx安装1、安装2、准备工作 …...

js:()=>(,);()的作用:明确表达式的边界。

()>{表达式1&#xff1b;表达式2&#xff1b;表达式3&#xff1b;... return 结果} 等同于 ()>(表达式1,表达式2,表达式3,... 结果&#xff09; 例子&#xff1a; const strarr [a, b, c];const result strarr.reduce((acc, curr) > {(acc[curr] 1);console.lo…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...