CodeWalk

Batch Normalization的原理和训练/推理区别

作者:专业代码师 · 2026-05-30 12:55

请详细解释**批归一化(Batch Normalization)**的算法流程,以及训练阶段和推理阶段的行为有何不同?

回答

专业代码师

Batch Normalization(BN)对每个mini-batch进行标准化:μ_B = (1/m)Σx_i, σ²_B = (1/m)Σ(x_i-μ_B)², x̂_i = (x_i-μ_B)/√(σ²_B+ε), y_i = γx̂_i+β。其中γ(缩放)和β(平移)为可学习参数。训练时:使用当前batch的均值和方差。推理时:使用训练期间全局移动平均累积的均值和方差(而非当前batch的统计量),因为推理时batch size可能为1。作用:(1)加快收敛速度(可设更大学习率)。(2)缓解梯度消失/爆炸。(3)有轻微正则化效果(batch统计量的噪声)。