【深度学习原理】数值稳定性(二):梯度是如何在深度网络中消失与爆炸的

数值稳定性系列文章:
数值稳定性(一):为什么深度神经网络如此脆弱
数值稳定性(二):梯度是如何在深度网络中消失与爆炸的

第三篇还在写。。。

引言:梯度究竟是怎样"传回去"的?

​ 在上一篇中,我们从计算过程的角度讨论了数值稳定性,并指出:深度神经网络中的数值不稳定,最终往往集中体现在反向传播过程中的梯度变化上。

​ 这一篇,我们将把视角进一步聚焦到梯度本身,回答几个更具体的问题:

  • 梯度在网络中究竟是如何传播的?

  • 为什么"深度"会让梯度变得如此脆弱?

  • 梯度爆炸与梯度消失,分别是在什么条件下出现的?

    与第一篇一样,这一篇仍然以直觉和机制理解为主,刻意避免过早进入严格的数学推导。

一、反向传播的一个直觉视角

​ 从直觉上看,反向传播并不是一个"神秘过程",而更像是一次信息的逐层回传

​ 模型在前向传播中计算出输出与损失;而在反向传播中,这个损失对参数的影响,需要沿着网络结构,一层一层地传回到前面的权重。

​ 关键在于:梯度并不是整体回传的,而是必须穿过每一层的计算。

  • 这意味着,梯度在传播过程中,并不是保持不变的"信号",而是在每一层都会被重新处理一次

    • 它会先通过当前层的激活函数,对应地被缩放;
    • 再经过线性变换,与权重矩阵发生作用;
    • 然后才继续向前传递。
  • 因此,梯度的传播更像是一次连续的数值变换链条,而不是简单的信息复制。在这个过程中:

    • 如果某一层对梯度有轻微的放大作用,这种放大会被保留下来并继续向前传播;
    • 如果某一层对梯度有轻微的压缩作用,这种压缩也会被累积。

    ​ 当网络变深时,这种"逐层作用"的效果会被反复叠加,最终直接决定了梯度的整体尺度是逐渐放大,还是逐渐衰减。

二、深度意味着"连乘效应"

​ 为了理解梯度为何会在深度网络中失控,我们可以暂时忽略网络的具体结构、任务语义甚至损失函数,只关注一个更底层的事实:反向传播过程中,梯度会被多次连续地缩放。

  • 在单独的一层中,这种缩放往往并不显著---权重矩阵不会刻意放大或压缩梯度,激活函数的导数看起来也只是一个"正常的数"。

  • 但关键在于,这样的缩放并不会只发生一次

    ​ 当网络具有多层结构时,梯度在反向传播中必须依次穿过每一层的线性变换与非线性变换。从数值角度看,这相当于对梯度施加了一系列连续的尺度变换

  • 如果我们只关心梯度的"整体尺度",那么这个过程可以被直观地理解为:

    • 当每一层对梯度的影响平均略大于 1 时,单层看似温和的放大,会在多层叠加后演化为指数级增长;
    • 当每一层对梯度的影响平均略小于 1 时,单层几乎可以忽略的压缩,也会在深度结构中不断累积,最终使梯度趋近于 0。
  • 因此,梯度爆炸与梯度消失并不是由某一层"突然异常"导致的,而是:大量"看起来没问题"的局部缩放,在深度结构中被连续相乘后的必然结果。

  • 从这个角度看,"深度"本身就意味着一种风险:它放大了单层计算中任何细微的尺度偏差,使得梯度的整体行为变得极其敏感。

三、梯度爆炸:放大效应如何失控

3.1 现象层面的表现

  • 在训练过程中,梯度爆炸通常表现为一系列非常直观、但又往往让人措手不及的现象:

    • 梯度范数在极少数 step 内迅速增大;
    • 参数更新幅度异常,权重数值突然变得极大;
    • loss 不再平滑变化,而是剧烈震荡,甚至直接变为 NaNinf
  • 这种情况在以下场景中尤为常见:

    • 网络层数较深,反向传播路径较长;
    • 权重初始化偏大,使得单层的放大效应更明显;
    • 学习率设置较高,进一步放大了梯度的数值变化。
  • 需要注意的是,一旦梯度爆炸开始出现,训练往往不会"自行恢复",而是迅速走向彻底失控。

3.2 一个更完整的直觉解释

​ 如果将反向传播理解为一次逐层传递并不断变换数值尺度的过程 ,那么梯度爆炸并不是某一层"突然异常",而是一种系统性失控

​ 从直觉上看,可以这样理解:每一层都在对梯度施加一个略大于 1 的放大因子,而这些因子在深度结构中被连续相乘。

  • 在单独的一层中,这种放大往往并不显眼---梯度可能只是稍微变大了一点点,看起来仍然处于"合理范围"。

  • 但问题在于,这样的放大并不会停止在某一层:

    • 梯度在通过下一层时,会在已有放大的基础上再次被放大;
    • 放大的结果又会作为输入,继续传递给更前面的层。

    ​ 当网络足够深时,这种层层叠加的放大效应会迅速突破数值可控的边界,使得梯度的尺度呈现出近似指数级的增长。

  • 一旦梯度的数值规模失去控制,即使优化算法本身仍在"按规则更新",参数更新也已经不再具有任何稳定意义。

  • 从这个角度看,梯度爆炸并不是一个偶发问题,而是:深度结构 + 连续放大效应在数值层面的必然后果。

四、梯度消失:信息为何在传播中逐渐丢失

4.1 现象层面的表现

  • 与梯度爆炸相对,梯度消失在训练过程中通常表现得更加"安静",但影响同样严重:

    • 越靠近输入端的参数,梯度越小,更新几乎可以忽略;
    • 参数更新幅度极低,训练过程显著变慢;
    • loss 仍在变化,但模型性能长期停滞,呈现出一种"学不动"的状态。

    这种现象往往不会直接触发报错,却会让训练过程在表面上看似正常,实际上却难以取得有效进展。

4.2 一个更完整的直觉解释

​ 在许多常见的网络结构中,每一层对梯度的作用并不是放大,而是对其进行轻微的压缩

  • 在单独的一层中,这种压缩几乎不会引起注意---梯度只是变小了一点点,仍然处于数值可表示的范围内。

  • 但问题在于,这样的压缩同样会在深度结构中被不断重复

    • 梯度在通过下一层时,会在已有缩小的基础上再次被压缩;
    • 压缩后的梯度继续向前传播,其有效信息不断减少。

    ​ 当网络层数增加时,这种层层叠加的压缩效应,会使梯度的数值规模呈现出持续衰减的趋势,最终逐渐接近于 0。

  • 从信息传播的角度看,这意味着:损失函数所携带的学习信号,在反向传播途中被不断削弱,直到对前层参数几乎不再产生影响。

    一旦梯度衰减到这种程度,即使优化算法本身仍在正常运行,前层参数也已经失去了被有效更新的可能。

  • 从这个角度看,梯度消失并不是"学不会",而是:学习信号在深度结构中无法被完整地传递回去。

五、爆炸与消失并不是"两个独立问题"

​ 从表面上看,梯度爆炸和梯度消失似乎是两种截然相反的现象:一个表现为数值失控,另一个表现为信息沉寂。

​ 但如果从反向传播的计算过程本身出发,就会发现它们并非由两套完全不同的机制引起,而是同一个问题在不同方向上的体现。

  • 在本质上,它们都源于同一个核心事实:梯度在多层传播过程中,其数值尺度逐渐偏离了合理区间。

  • 在反向传播中,梯度必须依次穿过每一层的线性变换与非线性变换。 这些局部计算并不会"判断方向是否正确",只会机械地对数值进行缩放。

    • 当这种缩放在整体上呈现出偏向放大的趋势时,梯度会在层层叠加中迅速膨胀,最终导致爆炸;
    • 而当这种缩放在整体上呈现出偏向压缩的趋势时,梯度则会在传播途中不断衰减,逐渐走向消失。
  • 因此,梯度爆炸与梯度消失并不是两个需要分别"修补"的问题,而是:**同一条数值传播链路,在不同尺度偏移方向上的两种极端结果。**理解这一统一视角,是后续讨论 Jacobian 连乘、初始化策略以及稳定性设计的关键前提。

  • 在本质上,它们都是同一个问题的不同侧面:梯度在多层传播过程中,其数值尺度偏离了合理区间。

    是偏向放大,还是偏向压缩,取决于每一层对梯度产生的综合作用。

小结

​ 在这一篇中,我们从反向传播的直觉出发,分析了梯度在深度网络中是如何一步步传播的,以及这种传播方式为何会带来稳定性问题。

​ 通过对梯度爆炸与梯度消失的讨论可以看到,这两种现象并不是由某一层"突然出错"引起的,也不只是超参数选择不当的结果,而是梯度在多层连续计算中不断被缩放后的自然后果

​ 当这种缩放在整体上偏向放大时,梯度会在反向传播过程中迅速膨胀,导致训练失控; 而当这种缩放在整体上偏向压缩时,学习信号则会在传播途中逐渐衰减,使得前层参数难以得到有效更新。

​ 从这个角度看,梯度爆炸与梯度消失并不是两个孤立的问题,而是同一个数值机制在不同尺度方向上的表现。它们共同揭示了一个事实:深度意味着连乘,而连乘天然放大了数值尺度的偏差

​ 在下一篇中,我们将进一步把这一直觉形式化,从 Jacobian 连乘的角度,解释这种尺度变化为何如此敏感,并讨论工程中常见的稳定性设计思路。

相关推荐
热爱专研AI的学妹2 小时前
数眼搜索API与博查技术特性深度对比:实时性与数据完整性的核心差异
大数据·开发语言·数据库·人工智能·python
thinkerCoder2 小时前
SmoothQuant:一种用于大型语言模型的准确高效的训练后量化方法
人工智能·语言模型·自然语言处理
HUI 别摸鱼了2 小时前
【Gabor滤波】
人工智能
好奇龙猫2 小时前
【AI学习-comfyUI学习-第二十四节-open(contorlnet多重处理)+图生图openpose-各个部分学习】
人工智能·学习
LiFileHub2 小时前
ISO/IEC 5338:2023中文版
人工智能
慎独4132 小时前
政策东风起,财富新赛道:绿色积分与消费商引领新型消费革命
人工智能
CICI131414133 小时前
自动化焊接机器人厂家哪家好?
人工智能·机器人·自动化
wanzhong23333 小时前
CUDA学习5-矩阵乘法(共享内存版)
深度学习·学习·算法·cuda·高性能计算
ZzzZ314159263 小时前
【无标题】
人工智能