【机器学习300问】77、什么是梯度消失和梯度爆炸?

一、梯度消失(Vanishing gradients)

(1)定义

        在训练深度神经网络时,随着误差梯度从输出层向输入层逐层回传,梯度可能因为连乘效应逐渐减小。当使用激活函数的导数的最大值小于1时,深度网络中越前面的层(靠近输入层的层)在梯度回传过程中梯度变小得越快。如果梯度过小,它会使得网络的权重几乎不更新,从而导致学习过程中先导层训练缓慢,这就是所谓的梯度消失问题。

        梯度下降算法的权重更新公式:

W_{new} = W_{old} - \eta \frac{\partial J}{\partial W}

        其中W是权重,\eta是学习率,\frac{\partial J}{\partial W}是权重的梯度。梯度消失问题表现为\frac{\partial J}{\partial W}接近于0,导致权重的更新量变得非常小。

(2)举例理解

① 比喻举例 

        假设有一场“传话游戏”,有5个人在操场上站成一排,从队列中的最后一个孩子开始,让他们一个接一个地传递给最前面的孩子。在这个过程中,每个孩子只能复述他们听到的内容,且由于各种原因(比如声音太轻、风声干扰、听不清等),每传一次,信息就可能会变得模糊一些。当信息传到队伍前端时,原本清晰的信息可能已经变得难以辨认,甚至完全消失。这就是“信息消失”的现象。

② 具体案例 

        使用Sigmoid激活函数的深层神经网络容易出现梯度消失问题。Sigmoid函数在两端的导数值非常接近零,这意味着当网络层次加深时,反向传播的梯度经过多层Sigmoid函数后,会迅速衰减到几乎为零,使得前几层的权重几乎得不到有效更新。

        假设上面这个图中的神经网络激活函数是线性激活函数g(z)=z,这样一来输出就可以写成:

\hat y=W^{[l]}W^{[l-1]}W^{[l-2]}...W^{[3]}W^{[2]}W^{[1]}x

        如果使用激活函数(如Sigmoid)的导数的最大值小于1时(比如0.5),那么得到的输出是\hat y=\frac{1}{2^L}层数越深,激活函数输出以指数级递减。这样的情况也适用于与层数L相关的导数或梯度函数,也是呈指数级递减。

 

二、梯度爆炸(Exploding gradients)

(1)定义

        在训练深度神经网络时,权重的更新梯度成指数级增长。如此大的梯度值会导致权重的大幅波动,使得网络模型无法稳定下来,或者导致数值计算上溢,变得无法继续学习。梯度爆炸通常在RNNs中较为常见,尤其当时间序列数据非常长的时候。

        梯度下降算法的权重更新公式:

W_{new} = W_{old} - \eta \frac{\partial J}{\partial W}

        其中W是权重,\eta是学习率,\frac{\partial J}{\partial W}是权重的梯度。梯度爆炸则表现为\frac{\partial J}{\partial W}极大,使得更新步长非常大,可能在数值上溢(梯度值超过了计算机浮点数的表示范围)或者导致权重变得非常大以至于模型不稳定。

(2)举例理解

③ 比喻举例 

        假设有5个话筒和5个扬声器喇叭,他们是一对一对的组成5对,现在把他们收尾相连即“(话筒1,喇叭1) > (话筒2,喇叭2)>...>(话筒5,喇叭5)”,当你在第一个话筒处发出声音,声音会被一层层放大,直至超过喇叭的最大输出响度,产生啸叫。

④ 具体案例

        假设上面这个图中的神经网络激活函数是线性激活函数g(z)=z,这样一来输出就可以写成:

\hat y=W^{[l]}W^{[l-1]}W^{[l-2]}...W^{[3]}W^{[2]}W^{[1]}x

        如果使用激活函数(如Sigmoid)的导数的最大值大于1时(比如1.5),那么得到的输出是\hat y=1.5^L层数越深,激活函数输出以指数级递增。这样的情况也适用于与层数L相关的导数或梯度函数,也是呈指数级递增。

三、避免梯度消失和梯度爆炸的方法

(1)避免梯度消失

  • 选择合适的激活函数:使用ReLU激活函数及其变种(如Leaky ReLU, ELU等),它们的导数不会随着输入值的增大而减小,有助于缓解梯度消失问题。
  • 合适的初始化权重:采用He初始化或Xavier/Glorot初始化等策略,可以根据网络中每层的输入和输出尺寸来适当设定权重的初始化值,从而帮助梯度更平稳地流动。

(2)避免梯度爆炸

  • 选择合适的优化算法:如使用具有动量项的SGD或Adam等,以确保梯度在反向传播过程中保持在一个可控范围内,从而使模型能够稳健地学习和优化。
  • 使用梯度裁剪:在反向传播时,如果计算出的梯度超出了某个阈值,就将它限制在这个阈值范围内。这个技术对于防止梯度爆炸尤其有用。

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

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

相关文章

动静态库详解

文章目录 动静态库动态库静态库动静态链接 动静态库 库LinuxWindows动态库.so.dll静态库.a.lib 动静态库的本质就是文件。lld ldd命令可以查看一个可执行程序所依赖的库文件 ldd code:查看code依赖的库文件 平台要支持开发,必须要提前在系统中安装&am…

flutter书架形式格口的动态创建(行、列数,是否全选的配置)

根据传入的行列数创建不同格口数量的书架 左图:5行3列、右图:3行3列 代码 import package:jade/bean/experienceStation/ExpCellSpecsBean.dart; import package:jade/configs/PathConfig.dart; import package:jade/utils/DialogUtils.dart; import p…

基于SpringBoot+Vue的外卖点餐网站 免费获取源码

项目源码获取方式放在文章末尾处 项目技术 数据库:Mysql5.7/8.0 数据表:12张 开发语言:Java(jdk1.8) 开发工具:idea 前端技术:vue html 后端技术:SpringBoot 功能简介 (有文档) 项目获取关键字&…

Java 笔试强训篇- Day1

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 点击消除 1.1 解题思路一 1.2 解题思路二 2.0 在两个数组中找出相同的数 2.1 解题思路 笔试强训说明:有一些题目提供不了原题。 1.0 点击消除 该题链…

Group Query Attention (GQA) 机制详解以及手动实现计算

Group Query Attention (GQA) 机制详解 1. GQA的定义 Grouped-Query Attention (GQA) 是对 Multi-Head Attention (MHA) 和 Multi-Query Attention (MQA) 的扩展。通过提供计算效率和模型表达能力之间的灵活权衡,实现了查询头的分组。GQA将查询头分成了G个组&#…

事务的传播行为介绍和事务失效

常用的就下图介绍的这两种,REQUIRED 支持当前事务,如果不存在,就新建一个,EQUIRES_NEW 如果有事务存在,挂起当前事务,创建一个新的事务 同一个service中必须用代理对象调用,否则失效

使用go和消息队列优化投票功能

文章目录 1、优化方案与主要实现代码1.1、原系统的技术架构1.2、新系统的技术架构1.3、查看和投票接口实现1.4、数据入库MySQL协程实现1.5、路由配置1.6、启动程序入口实现 2、压测结果2.1、设置Jmeter线程组2.2、Jmeter聚合报告结果,支持11240/秒吞吐量2.3、Jmeter…

【情侣博客网站】

效果图 PC端 建塔教程 第一步:下载网站源码(在文章下方有下载链接) 第二步:上传到服务器或虚拟主机,解压。 第三步:这一步很关键,数据库进行连接,看图 admin/connect.php就是这…

el-menu 该有的页面显示不出来第一个应该想到的问题首先就算检查是否多写了一个 , 导致显示不出来原有的页面

问题描述 el-menu 该有的页面显示不出来第一个应该想到的问题首先就算检查是否多写了一个 , 导致显示不出来原有的页面 如图所示多写了一个,就会导致该有的页面显示不出来。

【nginx代理和tengine的启动-重启等命令】

在nginx成功启动后[任务管理器有nginx.exe进程],运行vue项目,在浏览器访问http://localhost:10001/,提示:访问拒绝(调试中network某些地址403); 解决方案: localhost改为ip&#xff…

【Flutter】GetX状态管理及路由管理用法

目录 一、安装二、使用1.安装GetX插件,快捷生成模版代码2.主入口MaterialApp改成GetMaterialApp3.定义路由常量RoutePath类、别名映射页面RoutePages类4. 初始initialRoute,getPages。5.调用 总结 一、安装 dependencies: get: ^4.6.6二、使用 1.安装G…

MDK-ARM Keil5.38 下载安装环境搭建

一、keil软件介绍 KEIL是公司的名称,有时候也指KEIL公司的所有软件开发工具,目前2005年Keil由ARM公司收购,成为ARM的公司之一。 MDK(Microcontroller Development Kit) 也称MDK-ARM、KEIL MDK、RealView MDK、KEIL For…

[最新]访问/加速StackOverFlow的方法

但是有很多问题都是在StackOverFlow上有现成的解决方案,而某度搜索引擎…前一页的回答互相抄袭,看着实在胀眼睛。 话不多说,解决办法: 直接访问插件商店下载插件(最快捷方便,点点就行)&#x…

Python中的迭代器:深入理解与实用指南

文章目录 1. 迭代器的基本概念2. Python中的迭代器实例3. 自定义迭代器3.1 例子3.2 详细过程 4. 迭代器的高级应用5. 常见问题与解答 迭代器是Python中非常核心的概念之一,在面试中也会被问到。下面我会详细介绍什么是迭代器,使用方法,以及使…

怎么转行做产品经理?

小白转产品经理第一点要先学基础理论知识,学了理论再去实践,转行,跳槽! 学理论比较好的就是去报NPDP的系统班,考后也会有面试指导课、职场晋升课程,对小白来说非常合适了~(B站:不爱…

探索 IntelliJ IDEA 2024.1最新变化:全面升级助力编码效率

探索 IntelliJ IDEA 2024.1最新变化:全面升级助力编码效率 文章目录 探索 IntelliJ IDEA 2024.1最新变化:全面升级助力编码效率摘要引言 IntelliJ IDEA 2024.1 最新变化关键亮点全行代码补全 Ultimate对 Java 22 功能的支持新终端 Beta编辑器中的粘性行 …

『FPGA通信接口』串行通信接口-IIC(2)EEPROM读写控制器

文章目录 1.EEPROM简介2.AT24C04简介3.逻辑框架设计4.随机读写时序5.仿真代码与仿真结果分析6.注意事项7.效果8.传送门 1.EEPROM简介 EEPROM (Electrically Erasable Programmable read only memory) 是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。在嵌入…

uniapp项目中表单输入完整项之后提交按钮颜色高亮显示并触发点击事件

1.效果图&#xff1a; 2.html <view class"add" :style"{background: dynamicBackgroundColor, border-color: white}" click"handleClick">添加新地址 </view> 3.js formData: {name: ,phoneNumber: ,addressDetail: }//利用com…

JVM 性能调优命令(jps,jinfo,jstat,jstack,jmap)

常用命令&#xff1a;jps、jinfo、jstat、jstack、jmap jps jps查看java进程及相关信息 jps -l 输出jar包路径&#xff0c;类全名 jps -m 输出main参数 jps -v 输出JVM参数jps命令示例 显示本机的Java虚拟机进程&#xff1a; # jps 15729 jar 92153 Jps 90267 Jstat显示主类…

嵌入式Linux:Linux系统文件目录说明

在Linux系统中&#xff0c;系统文件和目录按照一定的约定被组织和分配到不同的位置。这些文件和目录通常用于存储系统配置、程序文件、库文件等。 以下是一些常见的系统文件目录及其用途的详细说明&#xff1a; /bin:存放系统中最基本的命令&#xff08;二进制文件&#xff09;…