Batch Normalization
分类: 深度学习基础
Batch Normalization
定义
Batch Normalization(BN)是 Ioffe & Szegedy (2015) 提出的一种归一化技术,对每个 mini-batch 内的激活值进行标准化(零均值、单位方差),然后通过可学习的仿射参数恢复表达能力,显著加速训练并提升稳定性
数学形式
对 mini-batch :
其中 (scale)和 (shift)为可学习参数, 为数值稳定常数
推理时使用训练阶段积累的运行均值和方差(exponential moving average)
核心要点
原始动机:解决 Internal Covariate Shift——每层输入分布随前层参数更新而漂移,导致训练不稳定
实际效果:(1) 允许使用更大学习率;(2) 减少对初始化的敏感性;(3) 起到轻微正则化效果(batch 内统计量的噪声)
争议:Santurkar et al. (2018) 证明 BN 的效果主要来自平滑损失景观而非减少 covariate shift
适用场景:CNN 中几乎标配(ResNet、VGG 等),但在 RNN/Transformer 中效果不佳(batch 维度统计不稳定)
替代方案:Layer Normalization(Transformer 标配)、Group Normalization(小 batch 场景)、Instance Normalization(风格迁移)
BN 与 batch size 耦合:batch 太小时统计量估计不准,性能下降——这是 BN 的主要局限
CS224N 虽然以 NLP 为主(更常用 LayerNorm),但 BN 是理解归一化技术家族的基础
代表工作
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift (Ioffe & Szegedy, 2015)
Santurkar et al., 2018: How Does Batch Normalization Help Optimization?
Group Normalization: (Wu & He, 2018)