文章

30 Batch Normalization 为何有效?

30 Batch Normalization 为何有效?

一、直观理解:对隐藏层激活值进行归一化,加速训练

  在传统神经网络中,我们常对输入特征 $x$ 进行归一化(如减去均值、除以标准差),使其具有相近的尺度(例如均值为 0,方差为 1),从而加速优化过程
Batch Norm 将这一思想推广到每一层的隐藏单元(即中间激活值),使得每一层的输入分布更稳定。

关键点:不仅输入 $x$ 需要归一化,隐藏层的激活值 $a^{[l]}$ 或线性输出 $z^{[l]}$ 同样受益于归一化。


二、深层原因:缓解“协变量偏移”(Covariate Shift)

1. 什么是协变量偏移?

  • 在训练过程中,如果某一层的输入分布发生变化(即使真实映射 $x \to y$ 不变),后续层就需要不断“重新适应”这种变化。
  • 这种输入分布随训练动态变化的现象,称为 Internal Covariate Shift(内部协变量偏移)

2. 问题在深度网络中被放大

  • 假设第 3 层接收来自第 2 层的激活值 $a^{[2]} = [a_1^{[2]}, a_2^{[2]}, \dots]$。
  • 当第 1、2 层的参数 $W^{[1]}, b^{[1]}, W^{[2]}, b^{[2]}$ 更新时,$a^{[2]}$ 的分布会改变。
  • 第 3 层不得不持续适应这种“移动的目标”,导致训练不稳定、收敛慢。

3. Batch Norm 如何解决?

  • 对每一层的线性输出 $z^{[l]}$(即 $z^{[l]} = W^{[l]} a^{[l-1]} + b^{[l]}$)进行归一化:

    \[\hat{z}_i^{[l]} = \frac{z_i^{[l]} - \mu_{\text{batch}}}{\sqrt{\sigma_{\text{batch}}^2 + \epsilon}}\]

    其中:

    • $\mu_{\text{batch}} = \frac{1}{m} \sum_{i=1}^m z_i^{[l]}$ 是当前 mini-batch 的均值,
    • $\sigma_{\text{batch}}^2 = \frac{1}{m} \sum_{i=1}^m (z_i^{[l]} - \mu_{\text{batch}})^2$ 是方差,
    • $\epsilon$ 是数值稳定小常数(如 $10^{-8}$)。
  • 然后通过可学习的仿射变换恢复表达能力:

    \[\tilde{z}_i^{[l]} = \gamma^{[l]} \hat{z}_i^{[l]} + \beta^{[l]}\]

    其中 $\gamma^{[l]}$ 和 $\beta^{[l]}$ 是可训练参数,允许网络自主决定是否需要非标准化的分布(例如均值非 0、方差非 1)。

效果:即使前层参数更新导致 $z^{[l]}$ 变化,其归一化后的 $\hat{z}^{[l]}$ 仍保持稳定的均值和方差,从而减弱层间耦合,使每层能更独立地学习。


三、附加好处:轻微的正则化效应(Regularization Effect)

1. 来源:mini-batch 统计量的噪声

  • Batch Norm 使用 当前 mini-batch(而非全数据集)计算 $\mu$ 和 $\sigma$。
  • 因此,$\hat{z}^{[l]}$ 中引入了统计估计噪声(尤其当 batch size 较小时,如 64、128)。

2. 类似 Dropout 的正则化机制

  • 这种噪声使得每个隐藏单元的输出带有随机扰动,防止网络过度依赖特定神经元
  • 虽然正则化效果较弱,但确实存在。

⚠️ 注意:

  • 若使用更大的 batch size(如 512),统计噪声减小 → 正则化效果减弱。
  • 不要将 Batch Norm 主要用作正则化手段!它的主要目的是加速训练和提升稳定性
  • 可与 Dropout 联合使用,以获得更强的正则化。

四、重要实践细节:训练 vs. 推理(Inference)

  • 训练时:对每个 mini-batch 单独计算 $\mu_{\text{batch}}, \sigma_{\text{batch}}$。
  • 推理时(测试/预测):

    • 无法使用 mini-batch(可能只输入单个样本)。
    • 需使用训练期间累积的全局统计量(如指数移动平均 EMA):

      \[\mu_{\text{pop}} = \text{EMA of } \mu_{\text{batch}}, \quad \sigma_{\text{pop}}^2 = \text{EMA of } \sigma_{\text{batch}}^2\]
    • 推理时归一化使用 $\mu_{\text{pop}}, \sigma_{\text{pop}}^2$,确保输出确定性。

✅ 这是实现 Batch Norm 时必须处理的关键工程细节!


五、总结:Batch Norm 有效的三大核心原因

原因说明
1. 加速训练通过归一化隐藏层激活值,使优化 landscape 更平滑,梯度更稳定,允许使用更高学习率。
2. 缓解内部协变量偏移减少前层参数更新对后层输入分布的影响,使各层学习更独立、更高效。
3. 轻微正则化mini-batch 统计噪声带来类似 Dropout 的泛化提升(副作用,非主要目的)。

六、公式总览(KaTeX 兼容)

  1. 归一化

    \[\hat{z}_i^{[l]} = \frac{z_i^{[l]} - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}}, \quad \mu_B = \frac{1}{m} \sum_{i=1}^m z_i^{[l]}, \quad \sigma_B^2 = \frac{1}{m} \sum_{i=1}^m (z_i^{[l]} - \mu_B)^2\]
  2. 缩放与平移

    \[\tilde{z}_i^{[l]} = \gamma^{[l]} \hat{z}_i^{[l]} + \beta^{[l]}\]
  3. 推理时使用总体统计量

    \[\tilde{z}_i^{[l]} = \gamma^{[l]} \frac{z_i^{[l]} - \mu_{\text{pop}}}{\sqrt{\sigma_{\text{pop}}^2 + \epsilon}} + \beta^{[l]}\]
本文由作者按照 CC BY 4.0 进行授权