DL ML Learning Lab
01 / 10
第 1 步 · 深层训练的第一道坎

梯度消失与激活权衡Vanishing Gradient & Activation Trade-offs

网络越深,反向传播的梯度越容易衰减到零——看清原因,以及 ReLU 如何破解。

11 分钟
阅读 + 实操
2 个
交互演示
中级
难度

梯度消失 · 交互演示

梯度比
层数6
网络结构(每格一层,颜色 = 激活均值大小)
各层梯度量级 ‖dW‖(对数刻度 — 从左到右 = 从输入层到输出层,梯度反向传播方向 ←)
各层激活值分布(每层一条折线 — 健康时各层形状相近)
隐藏层数
激活函数
权重初始化

为什么学这步?

深度网络之所以难训练,第一只拦路虎就是梯度消失。理解它,才懂为什么 ReLU、残差连接、归一化会成为标配。

📌 发生了什么

  • 反向传播逐层回传误差梯度
  • 饱和激活让梯度逐层缩小
  • 浅层参数几乎不更新

⚠️ 常见陷阱

  • Sigmoid/Tanh 深层必现梯度消失
  • 层数越深越明显
  • 初始化不当雪上加霜

本章小结

  • 梯度消失源于饱和激活连乘
  • ReLU 缓解(正区梯度为 1)
  • 是残差 / 归一化的动机

📐 梯度消失的数学根源

反向传播中,梯度为何会随深度衰减?关键在于链式法则的连乘与激活函数导数的上界。

Sigmoid 的导数 σ'(z)=σ(z)(1−σ(z)) 在 z=0 时取到最大值 0.25——每经过一层 Sigmoid,梯度最多只剩 1/4,连乘 10 层即衰减到 0.25¹⁰ ≈ 10⁻⁶。

链式法则下,第 1 层权重的梯度是各层"权重 × 激活导数"的连乘;当因子均值小于 1,连乘指数衰减到 0(消失);大于 1 则指数增长(爆炸)。

Xavier(配 tanh/sigmoid)与 He(配 ReLU)初始化按输入维度缩放权重方差,让信号强度逐层保持一致;He 多一个 2 倍以补偿 ReLU 负半轴置零造成的方差减半。

🎛 权重初始化对比

同一网络、同一激活,仅改初始化方式,梯度健康度天差地别。

初始化 表现 结果
zeros 所有神经元对称,梯度恒为 0 对称死锁
normal N(0,1) 方差随深度累积,激活饱和 梯度爆炸
Xavier 方差稳定,适合 tanh/sigmoid 适中
He 方差稳定,补偿 ReLU 零半轴 最佳(配 ReLU)

💡 配 ReLU 选 He,配 tanh/sigmoid 选 Xavier;上方演示器可切换初始化实时观察梯度柱状图。

💻 权重初始化实现

四种初始化的 Python 实现对比(与上方演示器逻辑一致):

# 四种权重初始化对比(n_in = 输入维度)
def init_weights(n_in, n_out, method):
    if method == 'zeros':
        return np.zeros((n_in, n_out))          # 死锁:梯度恒为 0
    elif method == 'normal':
        return np.random.randn(n_in, n_out)     # N(0,1):深层易爆炸
    elif method == 'xavier':
        s = np.sqrt(1.0 / n_in)                 # 适合 tanh / sigmoid
        return np.random.randn(n_in, n_out) * s
    elif method == 'he':
        s = np.sqrt(2.0 / n_in)                 # 适合 ReLU
        return np.random.randn(n_in, n_out) * s
# 经验:配 ReLU 用 He,配 tanh / sigmoid 用 Xavier

📚 参考文献与延伸阅读

  • Glorot & Bengio (2010), Understanding the difficulty of training deep feedforward neural networks, AISTATS — Xavier 初始化的出处
  • He et al. (2015), Delving Deep into Rectifiers, ICCV — He 初始化(针对 ReLU)
  • Goodfellow, Bengio & Courville, Deep Learning (2016), §8.4 Parameter Initialization Strategies
  • Wikipedia: Vanishing gradient problem — 梯度消失问题综述

📝 课后练习

检验你的理解——答对为止