【深度学习 | 梯度那些事】 梯度爆炸或消失导致的模型收敛困难?挑战与解决方案一览, 确定不来看看?

在这里插入图片描述

🤵‍♂️ 个人主页: @AI_magician
📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。
👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍
🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能&硬件(虽然硬件还没开始玩,但一直很感兴趣!希望大佬带带)

在这里插入图片描述

该文章收录专栏
[✨— 《深入解析机器学习:从原理到应用的全面指南》 —✨]

梯度爆炸与消失

前置条件:先弄懂反向传播算法之后才能快速领悟。

梯度爆炸是指在使用梯度下降算法时,由于某些原因导致梯度值变得非常大,从而对参数的更新产生巨大影响。这可能会导致模型无法收敛或收敛速度过慢。

当神经网络层数较多、学习率设置过高或损失函数设计不合理时,就容易发生梯度爆炸现象。以下是一些可能引起梯度爆炸的原因(这其实就是根据反向传播的三个函数链式求导,一个是上一个神经元激活函数,一个是损失函数导数,一个是激活函数导数:

  1. 激活函数选择(损失函数导数):如果在神经网络中使用了具有饱和性质(如Sigmoid)的激活函数,并且权重初始化不当,则可能会出现数值上溢问题。当反向传播通过每一层传递时,sigmoid函数在中间区域的斜率很敏感变化很大,最终使得梯度变得异常大
  2. 参数初始化(激活函数导数):如果权重参数初始化过大,则在前向传播和反向传播过程中都容易造成数值溢出问题。特别是在深层神经网络中,在后面的层级上发生累积效应并放大了初始错误。
  3. 学习率设置(上一个神经元激活函数):学习率决定了每次迭代更新参数时所采用的步长大小。如果学习率设置太大,每次更新时参数的变化就会非常剧烈,(即权重变大,数值上溢)可能导致梯度值爆炸。

饱和性质的激活函数是指在输入数据较大或较小时,激活函数的导数趋近于0,导致梯度消失或爆炸。这种情况下,神经网络可能会面临训练困难、收敛缓慢等问题。

常见的饱和性质的激活函数有Sigmoid函数和双曲正切(Tanh)函数。它们在输入接近极端值时,导数接近于0。对于Sigmoid函数而言,在输入非常大或非常小时,输出值会趋向于1或-1,并且导数几乎为0;对于Tanh函数而言,在输入非常大或非常小时,输出值也会趋向于1或-1,并且导数同样几乎为0。

相比之下,不饱和性质的激活函数没有上述问题并具有更好的表达能力。以下是两个例子:

ReLU(Rectified Linear Unit):
ReLU是一种简单但广泛使用的不饱和性质的激活函数。当输入为正时,ReLU将保持原始值作为输出;当输入为负时,则返回零作为输出。ReLU在实践中被证明可以有效地解决梯度消失问题,并提高神经网络模型的训练速度与效果。

Leaky ReLU:
Leaky ReLU是对ReLU的改进,它在输入为负时不返回零,而是返回一个小的非零值。这样可以避免ReLU中出现的“神经元死亡”问题(即某些神经元永远不会被激活),并且有助于增加模型的表达能力。

总结起来,饱和性质的激活函数可能导致梯度消失或爆炸问题,并且限制了神经网络模型能够学习复杂特征表示的能力。而不饱和性质的激活函数(如ReLU、Leaky ReLU等)则可以解决这些问题,并提供更好的训练效果。选择适当的激活函数取决于具体任务需求和实际情况。

为了解决梯度爆炸问题,可以采取以下措施:

  1. 权重初始化:合理选择权重的初始化方法,例如使用**Xavier(饱和函数)或He(不饱和函数)**等经典的初始化方法,并避免初始权重过大。

  2. 激活函数选择:选用具有较小饱和区域并且能够缓解梯度爆炸问题的激活函数(如ReLU、Leaky ReLU)。

  3. 梯度裁剪:通过限制梯度值的范围来防止其过大。一种常见做法是设置一个阈值,在反向传播过程中对超出阈值范围的梯度进行裁剪。

  4. 调整学习率:降低学习率可以减轻梯度爆炸现象。可以逐步减小学习率或者使用自适应优化算法(如Adam、Adagrad),使得模型在训练过程中更加稳定。

总而言之,当发生梯度爆炸时,需要检查神经网络结构、参数初始化和学习率设置等因素,并根据情况采取相应调整以解决该问题。

梯度消失是指在深层神经网络中,**随着反向传播过程的进行,较早层的权重更新变得非常小或趋近于零,导致这些层对整个网络参数的学习贡献几乎为零。**这可能会导致模型无法有效地学习和优化。

以下是一些常见导致梯度消失问题的原因:

1. 激活函数选择不当:

  • 一些常用的激活函数(如sigmoid、tanh)在输入值接近饱和区域时具有很小的斜率(求导很小)。
  • 当网络层数增加时,在多次应用这些激活函数后,梯度逐渐缩小到接近于零(求导后累乘下溢)。

2. 权重初始化不合适:

  • 在深层神经网络中使用统一或过大/过小范围内初始化权重,可能会引发梯度消失问题(不平衡分布,每个隐藏单元计算出来的特征表示也将高度相似(对称性),在更新参数时无法利用到各个隐藏单元之间不同特征的差异,导致网络学习能力受限。)
  • 如果初始权重太小,则每次通过网络传播的信号将被削弱(激活值小);如果初始权重太大,则容易使得某些神经元进入饱和状态(斜率变化小)。

3. 大规模架构设计不良:

  • 构建一个非常深且复杂的神经网络结构时,信息必须通过多个层级进行传递,并且错误的设计可能会导致梯度消失。
  • 过深的网络结构使得梯度在反向传播过程中需要经历多次相乘操作,从而容易受到数值计算误差和指数级衰减的影响(下溢或者上溢)。

4. 数据预处理不当:

  • 不恰当的数据标准化或归一化方法可能导致输入特征分布不均匀(输入值或大或小,同样是导致上溢或者下溢,进而引发梯度消失问题。

为了应对梯度消失问题,可以尝试以下方法:

  • 使用其他激活函数(如ReLU、Leaky ReLU等),它们不饱和具有更大的斜率并且在一定程度上缓解了梯度消失问题。
  • 采用合适的权重初始化策略,例如Xavier初始化或He初始化。

Xavier初始化和He初始化是两种常用的权重初始化策略,它们旨在帮助神经网络模型更好地学习和收敛。

Xavier初始化(也称为Glorot初始化):
Xavier初始化适用于激活函数为sigmoid或tanh的神经网络层。该方法根据输入和输出节点数量来确定初始权重值的范围,使得信号在前向传播时能够保持一定程度上的平衡。(由 Xavier Glorot 和 Yoshua Bengio 在2010年提出。)

具体步骤如下:

  1. 针对每个权重矩阵W,在[-a, a]之间均匀随机采样初始值,其中a = sqrt(6 / (n_in + n_out))。
    • n_in是输入节点数
    • n_out是输出节点数

这种方式通过考虑输入和输出维度来推导合适的初始范围(节点数越多权重值越小),并避免了梯度消失或爆炸等问题。实验证明,在训练深度神经网络时使用Xavier初始化可以加速收敛并提高模型性能。

He初始化:He初始化,也称为He正态分布初始化,是一种用于神经网络权重初始化的方法。它由Kaiming He等人在2015年提出,并被广泛应用于深度学习模型中。He初始化旨在解决激活函数为线性修正单元(Rectified Linear Unit, ReLU)时可能导致的梯度消失或爆炸问题。在**传统的随机权重初始化方法(如高斯分布、均匀分布)**下,如果网络较深且使用ReLU作为激活函数,则容易发生梯度消失或爆炸现象。

  • He初始化通过将每个神经元层输入与一个服从标准差为sqrt(2/n) 的高斯分布进行采样来设置初始权重。 (其中n表示前一层神经元数量,输入点)

确保了输出信号在前向传播时能够更好地得到激活。He初始化在使用ReLU或其变种(如Leaky ReLU)作为激活函数时表现良好。其是一种针对ReLU等非线性激活函数的权重初始化方 法。

  • 使用正则化技术(如批量归一化)来规范网络层之间的输入分布,并加速训练过程。
  • 考虑使用残差连接(如Resnet)、跳跃连接等架构设计技术来减轻信息传递路径中信号被削弱或消失的影响。

跳跃连接指的是将输入数据直接添加到网络某一层输出之上。这种设计使得信息可以更自由地流动,并且保留了原始输入数据中的细节和语义信息。 使信息更容易传播到后面的层次,避免了信息丢失。跳跃连接通常会通过求和操作或拼接操作来实现。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZsRhf9bZ-1691997448878)(classical algorithm.assets/skip-connection.png)]

以图像分类任务为例,假设我们使用卷积神经网络进行特征提取,在每个卷积层后面都加入一个池化层来减小特征图尺寸。然而,池化操作可能导致信息损失。通过添加一个跳跃连接,将原始输入直接与最后一个池化层输出相加或拼接起来,可以保留原始图像中更多的细节和语义信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XnGUTcWk-1691997448879)(classical algorithm.assets/dense-block.png)]

如果感兴趣了解更多,建议阅读文章:
非常经典的文章《All You Need to Know About Skip Connections》: https://www.analyticsvidhya.com/blog/2021/08/all-you-need-to-know-about-skip-connections/

残差网络(Residual Network),也被称为ResNet,是一种深度神经网络架构,旨在解决梯度消失和训练困难的问题。它的核心思想是通过引入残差块(residual blocks)来构建网络,并通过跳跃连接将输入直接添加到层输出上。

具体而言,在每个块或子模块内部,输入被加到该块/子模块计算后得到的输出上,并且这两者尺寸必须相同。然后再将此结果送入下一个块/子模块进行处理。

残差网络(Residual Network),也被称为ResNet,是一种深度神经网络架构,旨在解决梯度消失和训练困难的问题。它的核心思想是通过引入残差块(residual blocks)来构建网络,并通过跳跃连接将输入直接添加到层输出上。

下面是详细解释残差网络的步骤:

  1. 基本结构:每个残差块由两个主要部分组成——主路径和捷径。主路径包含了一系列卷积、批归一化和非线性激活函数等操作,用于学习特征表示。捷径是一个直接连接,将输入数据“跳过”了主路径中的所有操作。

  2. 捷径连接:在传统的卷积神经网络中,信息必须从前向后依次通过每个层进行传递并逐渐轻微地改变。而在残差网络中,捷径连接允许信息更快地流动,在不同层之间形成了短路路径。

  3. 残差学习:对于每个残差块,在主路径内部会发生特征图尺寸缩小或通道数变化等情况。这样可能导致信息丢失或降低模型性能。为了解决这个问题,残差网络采用了跳跃连接将输入直接添加到输出上,使得模型可以学习到相对于期望输出的微小调整。

  4. 深度扩展:残差网络允许非常深的层次堆叠,因为捷径连接提供了一个快速通道来传播梯度和信息。通过增加更多的残差块,网络可以逐渐变得更深,并且在一定程度上能够减少过拟合现象。

  5. 预训练与微调:由于残差网络具有良好的初始化特性在大规模数据集上进行预训练后往往能够获得较好的性能。然后可以使用迁移学习(transfer learning)技术,在其他任务或数据集上进行微调以达到更好的效果。

总结起来,残差网络通过引入捷径连接和利用残差学习机制来改善深层神经网络中的梯度消失、信息流动等问题。这些方法使得网络能够更轻松地训练,并且在图像分类、目标检测和语义分割等计算机视觉任务中取得了显著成果。

理解和解决梯度消失问题是构建有效深层神经网络模型非常重要的一步。通过合理选择参数初始化、优化算法以及网络结构设计等手段可以克服这个问题,并提高模型的性能和收敛速度。
在这里插入图片描述

						  🤞到这里,如果还有什么疑问🤞🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳

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

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

相关文章

考虑分布式电源的配电网无功优化问题研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Linux系统安装Google Chrome

1.进入谷歌浏览器官网 Google Chrome - Download the Fast, Secure Browser from GoogleGet more done with the new Google Chrome. A more simple, secure, and faster web browser than ever, with Google’s smarts built-in. Download now.http://www.google.cn/intl/en_…

easyx图形库基础:2.基本运动+键盘交互

基本运动键盘交互 一.基本运动1.基本运动:1.如何实现动画:2.实现一个小球从左到右从右到左:(往返运动)3.实现一个五角星的移动:4.实现一个五角星自转和圆周运动的集合:(圆周运动&…

Google浏览器点击链接打开新标签页

由于新安装的谷歌浏览器点击链接时默认在当前窗口打开非常不方便,这里提供一下解决思路 1、打开浏览器输入任意内容,点击右上角的设置 2、在弹出的选项栏中点击See all Search settings 3、点击Other settings,将指定选项打开即可

Java进阶-Oracle(二十一)(2)

🌻🌻 目录 一、Oracle 数据库的操作(DDL DML DQL DCL TPL)1.1 标识符、关键字、函数等1.1.1 数值类型:1.1.2 字符串类型:1.1.3 日期类型1.1.4 大的数据类型--适合保存更多的数据 1.2 运算符1.3 函数---预定义函数、自定义函数&…

侯捷 C++ part2 兼谈对象模型笔记——6 多态 虚机制

6 多态 虚机制 6.1 虚机制 当类中有虚函数时(无论多少个),其就会多一个指针—— vptr 虚指针,其会指向一个 vtbl 虚函数表,而 vtbl 中有指针一一对应指向所有的虚函数 有三个类依次继承,其中A有两个虚函…

八股文之框架篇(Spring Boot、SSM)

文章目录 Spring中的单例bean是线程安全的吗什么是AOP,项目中有没有使用到AOPSpring中的事务是如何实现的Spring中事务失效的场景有哪些Bean的生命周期Spring中的循环依赖(循环引用)SpringMVC的执行流程SpringBoot自动配置原理Spring、Spring…

【Apollo】Apollo 8.0系统下载指南

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖&#x1f…

全面揭秘:抖音集团 QUIC 千万 QPS 应用实践

近日,ArchSummit全球架构师峰会深圳站成功举办。随着移动互联网的蓬勃发展,人们对网络速度和实时性的需求日益增加。在面对越来越多的图片、视频和音频等大资源时,页面加载缓慢、视频卡顿等问题频发,传统的传输控制协议&#xff0…

Nginx代理功能与负载均衡详解

序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细。 Nginx代理服务的配置说明 1、上一篇中我们在http…

如何使用Python获取SAP Temporary key 临时密钥

什么是Sap 临时密钥? SAP 临时密钥是用于激活 SAP 软件的一种许可证,只能在有限的时间内使用。这些密钥可用于评估目的或在系统迁移期间使用。它们是临时解决方案,通常在一定时间后过期。 如何获取Sap Temporary keys? 临时密钥: 如果创建…

2011-2021年数字普惠金融指数Bartik工具变量法(含原始数据和Bartik工具变量法代码)

2011-2021年数字普惠金融指数Bartik工具变量法(含原始数据和Bartik工具变量法代码) 1、时间:2011-2020(省级、城市),2014-2020(区县) 2、原始数据来源:北大金融研究中心…

【数据结构与算法——TypeScript】树结构Tree

【数据结构与算法——TypeScript】 树结构(Tree) 认识树结构以及特性 什么是树? 🌲 真实的树:相信每个人对现实生活中的树都会非常熟悉 🌲 我们来看一下树有什么特点? ▫️ 树通常有一个根。连接着根的是树干。 ▫️ 树干到…

mysql 8.0安装

操作系统:22.04.1-Ubuntu apt 安装命令 sudo apt install mysql-client-core-8.0 sudo apt install mysql-server-8.0终端输入 mysql 可以直接免密登录 如果此时提示需要密码,则可以进入配置文件,设置免密登录 sudo vim /etc/mysql/mysq…

探究主成分分析方法数学原理

目录 1、简介 2、实现原理 3、实现步骤 4、公式分析 5、实例分析 6、⭐协方差矩阵补充说明 7、LaTex文本 ⭐创作不易,您的一键三连,就是支持我写作的最大动力!🥹 关于代码如何实现,请看这篇文章:[机器…

Android 远程真机调研

背景 现有的安卓测试机器较少,很难满足 SDK 的兼容性测试及线上问题(特殊机型)验证,基于真机成本较高且数量较多的前提下,可以考虑使用云测平台上的机器进行验证,因此需要针对各云测平台进行调研、比较。 …

打造专属照片分享平台:快速上手Piwigo网页搭建

文章目录 通过cpolar分享本地电脑上有趣的照片:部署piwigo网页前言1.Piwigo2. 使用phpstudy网页运行3. 创建网站4. 开始安装Piwogo 总结 🍀小结🍀 🎉博客主页:小智_x0___0x_ 🎉欢迎关注:&#x…

数据可视化和数字孪生相互促进的关系

数据可视化和数字孪生是当今数字化时代中备受关注的两大领域,它们在不同层面和领域为我们提供了深入洞察和智能决策的机会,随着两种技术的不断融合发展,很多人会将他们联系在一起,本文就带大家浅谈一下二者之间相爱相杀的关系。 …

最好的开放式耳机品牌,开放式耳机选购推荐

传统入耳式耳机长时间佩戴会给耳朵增加压力,在封闭状态下,还容易滋生细菌,引发耳部感染、发炎的症状,但开放式耳机就没有这种情况发生,无需入耳设计,佩戴更舒适,音质更真实通透,也不…