08 梯度消失与梯度爆炸问题

news/2025/2/26 17:49:17/文章来源:https://www.cnblogs.com/wangle1006/p/18739214

由反向传播原理可知,梯度的计算遵循链式法则。由于网络层数不断加深,梯度的连乘效应可能会导致梯度呈指数形式衰减,又或以指数形式增加。
前者叫做梯度消失,梯度消失导致网络中的早期层几乎不更新,使得网络难以学习到输入数据的有效特征。可能导致网络权重更新非常缓慢,使得训练过程变得不稳定。
后者叫做梯度爆炸,梯度爆炸会导致权重更新过大,使得网络在训练过程中跳过最优解,无法收敛。

1. 可能导致梯度消失/爆炸的原因

激活函数的选择

常用的sigmoid和tanh激活函数的梯度小于1,尤其是sigmoid函数其导数最大为0.25。在深度网络中,经过多个层的反向传播后,梯度会乘以这些小的导数值,导致梯度指数级减小。

权重初始化

如果权重初始化过小,乘积效应会导致梯度在传播过程中迅速减小。如果权重初始化过大,那么在反向传播过程中,梯度的计算会受到很大的影响,容易导致梯度爆炸。例如,如果权重由标准正态分布初始化,其期望数量级为1,那么在多层传播后,梯度值可能会变得非常大。

学习率设置

学习率决定了模型参数更新的步长。如果学习率设置得过高,那么模型参数在更新时可能会因为步长过大而跳出最优解的范围。同时,过高的学习率会使模型在更新参数时过于激进,从而加剧梯度的波动,导致梯度爆炸。

深度网络的层次

在非常深的网络中,梯度必须通过多个层传播。每经过一个层,梯度都会乘以该层的权重导数。如果这些乘积都很小,最终梯度会趋向于零;如果每一层的梯度都稍微增大一点,那么经过多层传播后,梯度值就会变得非常大,从而导致梯度爆炸。因此,网络层数的增加会加剧梯度消失/爆炸的风险。

2. 梯度消失/爆炸的一些解决方法

替换激活函数

如将sigmoid替换成Relu等,因为Relu的导数在正数部分恒等于1,不会出现梯度消失和爆炸的问题。

权重初始化

合理的权重初始化方法(如He初始化或Xavier初始化)可以帮助防止梯度消失或爆炸。
Xavier初始化方法根据输入和输出神经元的数量来调整权重的初始值,使得前向传播和反向传播中的激活值和梯度值保持相近的方差,适用于sigmoid等激活函数。
He初始化针对ReLU及其变种,能使权重在正向和反向传播中保持合适的方差,确保梯度有效传递。

权重正则化

如L1和L2正则化可以限制权重的大小,减少梯度爆炸的风险。L1正则化通过给参数增加绝对值约束来鼓励参数稀疏化;L2正则化则通过给参数增加平方约束来鼓励参数值接近0。
正则化不仅可以防止模型过拟合,还可以在一定程度上缓解梯度爆炸问题。因为通过给参数增加约束项,可以限制参数在更新过程中的取值范围,从而避免梯度因参数值过大而爆炸。

梯度剪切

梯度裁剪是一种有效的解决梯度爆炸的方法。它的基本思想是在每个训练步骤后检查梯度的范数(或某些权重的范数),如果超过了某个阈值,就将梯度进行缩放,从而限制梯度的大小。这样可以防止梯度在反向传播过程中无限增长,导致网络不稳定。

BN(批量归一化)

批归一化(Batch Normalization)是一种通过在每层的输入上对数据进行标准化来减少梯度变化的方法。它通过对当前小批次的均值和方差进行归一化,使得每一层的输入分布保持稳定。这样可以有效缓解内部协变量漂移(Internal Covariate Shift)现象,即每一层的输入分布随着网络参数的更新而发生变化的现象。批归一化不仅有助于提高网络的训练速度和稳定性,还可以在一定程度上缓解梯度爆炸问题。因为通过归一化处理,每一层的输入数据的分布变得更加稳定,从而使得梯度的变化也更加平稳。

学习率调整

初期使用较大学习率加速收敛,后期逐步减小以稳定训练。

优化器选择

使用自适应学习率算法来根据参数梯度的统计信息来调整学习率。例如,Adam、Adagrad、RMSprop等优化算法都可以根据梯度的历史信息来动态调整学习率,从而提高训练的稳定性和效率,有助于缓解梯度消失问题。

更简单的网络结构

在某些情况下,使用更浅或更简单的网络结构可以减少梯度爆炸的风险。当然,更简单的网络结构可能会牺牲一定的模型表达能力和泛化能力。因此,在实际应用中需要根据具体任务和模型需求进行权衡和选择。

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

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

相关文章

GAMES101 作业三

重要知识点一 布林冯反射模型 漫反射+高光+环境光重要知识点二 通过作业也对空间中的坐标变换认识更清晰了一点,在摄像空间中进行变换是不对的,需要从原来的三维空间进行变换才对,所以会有一个矫正系数 重要知识点三 在计算光线时,要注意计算向量和单位化 不了解的 对于后两…

写一个简单的hexo-tag-plugin:quote

前置教程 [Akilarの糖果屋 - Akilar.top](https://akilar.top/posts/e2bf861f/) 为啥想写一个quote的标签外挂 我最近在写博客的时候,发现好多时候原生的Hexo标签不是很好用,效果如下。 {% tabs Hexo Block Quote, -1 %}没有提供参数,则只输出普通的 blockquote{% blockquot…

搭建DeepSeek-R1平台

前言 大家用到 DeepSeek-R1 时应该会经常出现下面的情况。但凡多问两个问题,不但缓慢,而且容易出现服务器繁忙的问题:今天教大家一种通过API部署的方式,可以体验满血版的DeepSeek-R1,不仅回答快速,而且不会出现服务器繁忙的情况。 注册账号 首先大家要通过下面的方式,先…

No.16 CSS--背景属性

一、CSS常见的背景属性 background-color: aqua; 设置背景颜色background-image: none; 设置背景图片background-position: 0%; 设置背景图片位置background-repeat: no-repeat; 设置背景图片如何重复填充background-size: 0%; …

Mybatis基础06

动态SQL 介绍 什么是动态SQL:动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句. 官网描述: MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,…

Spring5基础01

Spring概述简介Spring : 春天 --->给软件行业带来了春天 2002年,Rod Jahnson首次推出了Spring框架雏形interface21框架。 2004年3月24日,Spring框架以interface21框架为基础,经过重新设计,发布了1.0正式版。 很难想象Rod Johnson的学历 , 他是悉尼大学的博士,然而他的专…

P2375 [NOI2014] 动物园

P2375 [NOI2014] 动物园 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了。例如企鹅,只会卖萌向游客要吃的。为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法。 某天,园长给动物们讲解 KMP 算法。 园长:“…

KUKA库卡机器人KR210维修与保养秘籍

在工业自动化领域,KUKA库卡机器人凭借其性能和稳定的运行,成为众多企业的不二选择。然而,再先进的设备也需要定期的进行KUKA库卡机器人KR210维修和KUKA机械手保养,以确保其高效运行。 一、KUKA库卡机器人KR210维修方法包含了定期检查、润滑保养、更换损坏部件、控制柜维护等…

以下是使用:empty 搭配before实现表格中数据为空时的默认展示

以下是使用:empty 搭配before实现表格中数据为空时的默认展示// 在文件.vue中的table<template><!-- 省略其他代码 --><el-table-column prop="title" label="标题"></el-table-column><el-table-column prop="desc"…

07 常用优化器简介

模型能否准确地预测数据,是通过损失函数来衡量的。如何调整权重和偏差参数,从而最小化神经网络的损失函数,这是一类特定的优化算法。我们称它们为优化器(optimizer)。 为什么需要优化器? 因为损失函数参数众多且结构复杂,其导数置零的方程无法得到解析解或计算非常复杂。…

github-emoji-list

Github-emoji-list转载自https://github.com/caiyongji/emoji-list。emoji-list具体效果如下所示。人物:bowtie: :bowtie: 😄 :smile: 😆 :laughing:😊 :blush: 😃 :smiley: ☺️ :relaxed:😏 :smirk: 😍 :heart_eyes: 😘 :kissing_heart:😚 :kissing_closed_e…

2024年我读过的10本技术书籍(Java、架构、SRE运维)

什么是一本好书? 首先,我们需要定义什么是一本有价值的书籍。个人认为,一本好书应该具备以下特点:它能让我理解其中的一半+内容,引发共鸣,而剩下的部分内容则需要我反复阅读才能逐渐领会。如果我读完后发现完全理解了,那么这本书对我来说意义不大,因为它没有挑战我的思…