批归一化(Batch Normalization,简称BN)是一种通过对神经网络每一层输入数据进行标准化处理,以加速训练过程、提升模型稳定性和性能的深度优化技术。其核心思想是在每个训练批次(Batch)的数据上,对输入进行零均值、单位方差的归一化,并引入可学习的缩放与偏移参数,以恢复网络应有的表达能力。
可以将神经网络的学习过程想象成一场接力赛,每一层都是接力队员。如果前一位队员(前一层)传递过来的接力棒(数据分布)忽快忽慢、忽左忽右(即数据分布发生“内部协变量偏移”),下一位队员就需要不断调整姿势去接棒,这会大大降低整体速度。

批归一化扮演了“标准化接棒员”的角色。它在每一层激活函数之前插入一个操作,具体分为三步:首先,计算当前训练批次数据的均值和方差;其次,用这个均值和方差将数据标准化为均值为0、方差为1的分布;最后,引入两个可训练的参数——缩放因子(γ)和偏移因子(β),对标准化后的数据进行线性变换。这最后一步至关重要,它赋予了网络“撤销”归一化的能力,确保模型的非线性表达能力不被破坏。

理解批归一化,可以关联以下概念:内部协变量偏移、层归一化、实例归一化、组归一化、激活函数、梯度消失、优化器。

若想深入了解,建议阅读原始论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》(Sergey Ioffe & Christian Szegedy, 2015)。此外,可以关注其后续发展,如在推理阶段的处理方式(使用移动平均的全局统计量),以及针对不同场景的归一化变体(如层归一化、实例归一化)的比较研究。
