当前位置: 首页 > news >正文

神经网络中的梯度消失与梯度爆炸 - 实践

神经网络中的梯度消失与梯度爆炸 - 实践

在深层次的神经网络中很容易出现梯度消失与梯度爆炸的问题。这篇博客就详细介绍一下为什么会产生梯度消失与梯度爆炸的问题,以及如何解决。

首先梯度是什么

类比快递员送包裹

  • 神经网络训练时,需根据预测错误(损失函数)调整每层的参数(比如权重)。
  • 梯度就像 “错误快递员”,它从最后一层(输出层)出发,反向传播到每一层,告诉该层 “参数应该调多少”。
  • 目标:让梯度顺利送达每一层,指导参数更新,减少预测错误。

梯度消失 / 爆炸的本质:反向传播时 “快递员迷路或暴走”

假设一个 100 层的神经网络,反向传播时梯度要从第 100 层传到第 1 层。
每经过一层,梯度会被该层的权重矩阵激活函数的导数“放大或缩小”。

1.梯度消失--快递员送到最后没有力气了

2.梯度爆炸--快递员突然发疯乱送

为什么深层网络更容易出问题?

1.链式反应的累积效应

2. 激活函数的 “先天缺陷”

  • 早期常用 Sigmoid/Tanh
    • 导数范围小(Sigmoid 导数≤0.25,Tanh 导数≤1),容易导致梯度消失。
    • 示例:假设每层导数都是 0.25,10 层后梯度变为0.2510≈0.0000059,几乎消失。
  • ReLU 缓解消失但无法根治爆炸
    • ReLU 导数在正数区域为 1,梯度不会因激活函数缩小,但权重矩阵仍可能放大梯度。

为什么浅层网络不容易出问题?

解决方案

  • 核心矛盾:深度带来更强的表达能力,但反向传播时梯度难以稳定传递。
  • 比喻
    就像水管太长时,水压会衰减(消失)或因水流太急爆管(爆炸),导致末端(浅层)得不到正常供水(有效梯度)。
  • ResNet 的解决方案
    借助残差连接增加 “旁路水管”,让梯度可以绕过部分层直接传递,减少链式乘积的层数,从而缓解消失 / 爆炸。

总结

梯度在深层网络中就像传话筒,传的人越多(层数越多),声音越容易变弱(消失)或变吵(爆炸),ResNet 则给它加了个 “扩音器”(残差连接)。