Batch Normalization

分类: 深度学习基础

Batch Normalization

定义

Batch Normalization(BN)是 Ioffe & Szegedy (2015) 提出的一种归一化技术,对每个 mini-batch 内的激活值进行标准化(零均值、单位方差),然后通过可学习的仿射参数恢复表达能力,显著加速训练并提升稳定性

数学形式

对 mini-batch B={x1,,xm}\mathcal{B} = \{x_1, \ldots, x_m\}μB=1mi=1mxi,σB2=1mi=1m(xiμB)2\mu_\mathcal{B} = \frac{1}{m}\sum_{i=1}^{m}x_i, \quad \sigma^2_\mathcal{B} = \frac{1}{m}\sum_{i=1}^{m}(x_i - \mu_\mathcal{B})^2 x^i=xiμBσB2+ϵ\hat{x}_i = \frac{x_i - \mu_\mathcal{B}}{\sqrt{\sigma^2_\mathcal{B} + \epsilon}} yi=γx^i+βy_i = \gamma \hat{x}_i + \beta

其中 γ\gamma(scale)和 β\beta(shift)为可学习参数,ϵ\epsilon 为数值稳定常数

推理时使用训练阶段积累的运行均值和方差(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)

相关概念

Gradient Descent

残差连接