Ch06 神经网络基础

梯度消失与梯度爆炸 (Vanishing/Exploding Gradient)

概述

梯度消失(Vanishing Gradient)和梯度爆炸(Exploding Gradient)是深层神经网络训练中最根本的挑战之一。在反向传播(Backpropagation)过程中,梯度从输出层逐层向输入层传播。由于链式法则的连乘效应,梯度可能以指数级速度衰减(梯度消失)或增长(梯度爆炸),导致浅层(靠近输入)的参数无法有效更新,训练失败。这一问题在 2015 年 BatchNorm 和 ResNet 出现之前是深度学习的核心瓶颈,至今仍是训练极深网络时的关键考量。

数学原理

考虑一个 层的简单网络,损失函数 对第 层参数 的梯度:

其中 。

梯度消失条件

如果 ,则连乘结果随 的增加以指数级衰减:

当 很大时,浅层梯度趋近于 0。

梯度爆炸条件

如果 ,则连乘结果以指数级增长:

梯度值可能溢出(NaN),训练崩溃。

问题根源分析

因素导致梯度消失导致梯度爆炸
激活函数Sigmoid: 当 $x
权重初始化权重太小(如全 0 或太小随机值)权重太大
网络深度层数越多,连乘效应越强层数越多,连乘效应越强
学习率间接影响(不直接导致,但可能加剧)学习率太大直接导致
数据尺度输入未归一化,初始激活值偏大输入未归一化
循环结构RNN 中信息随时间步衰减RNN 中信息随时间步放大

各激活函数的梯度特性

激活函数导数范围梯度消失风险梯度爆炸风险说明
Sigmoid极高低饱和区导数接近 0
Tanh高低饱和区导数接近 0
ReLU中(死亡神经元)低正半轴导数恒为 1
Leaky ReLU低低负半轴有小梯度
GELU低极低平滑,梯度流动好
Swish低极低类似 GELU
ELU低低负半轴指数衰减
Linear1无高无界,需配合其他机制

解决方案全景

解决方案原理解决消失解决爆炸提出年份代表
ReLU 系激活函数导数在正半轴恒为 1,避免饱和是部分2010-2016ReLU, Leaky ReLU, GELU
Batch Normalization归一化每层输入,控制分布是是2015BN, LN, RMSNorm
残差连接 (Residual)添加恒等映射捷径,梯度可直接传播是部分2015ResNet, Transformer
Xavier/Glorot 初始化保持前向传播方差一致是否2010Xavier Uniform/Normal
He/Kaiming 初始化适配 ReLU,保持方差是否2015He Normal/Uniform
梯度裁剪 (Gradient Clipping)限制梯度范数上限否是2013Clip by value/norm
LSTM / GRU门控机制控制信息流是是1997LSTM, GRU
学习率调度动态调整学习率间接间接-Warmup, Cosine, ReduceLROnPlateau
LayerNorm每样本归一化,稳定 Transformer 训练是是2016Transformer, BERT, GPT

诊断方法

症状可能原因诊断方法
训练损失不下降梯度消失检查各层梯度范数,浅层接近 0
损失突然变为 NaN梯度爆炸检查梯度范数,某层突然暴涨
参数不更新(全零梯度)梯度消失打印梯度统计量
损失震荡严重梯度爆炸使用梯度裁剪、降低学习率
浅层参数几乎不变梯度消失查看各层参数更新量

2026 年视角

虽然现代架构(Transformer + ResNet + LayerNorm + GELU)已大幅缓解梯度消失/爆炸问题,但在以下场景中仍是挑战:

  1. 极深网络:1000+ 层的 Transformer(如 DeepSeek-V3)
  2. 超长序列:1M+ tokens 的上下文,梯度需跨超长距离传播
  3. 低精度训练:FP8/FP4 训练中,梯度范围受限,更易消失
  4. SSM 架构:Mamba 等状态空间模型虽然有线性复杂度,但存在类似梯度传播问题

相关笔记

来源

关联8

知识图谱

局部图谱 · 点节点跳转