BN层(批归一化)核心思想直接源自传统机器学习中的白化(Whitening) 操作。为了降低计算复杂度并保证操作的可微性,BN层对白化进行了近似与简化,在加速网络收敛的同时有效缓解了梯度消失。 [1, 2]


1. 什么是白化?

白化是一种数据预处理技术,包含去均值、方差归一化和去除特征间的相关性三个步骤。 [1]

  • 目的: 将输入数据变换为零均值(E[x]=0)、单位方差(Var[x]=1),且特征之间互不相关。

  • 问题: 白化操作(如PCA白化)计算成本过高(需求解协方差矩阵及求逆),且在每一层网络中计算白化并不处处可微,难以直接嵌入到反向传播中。 [1, 2, 3]

2. BN层对白化的妥协与近似

由于全白化计算量极大,BN层进行了两项关键妥协,以便将其作为网络的一层参与梯度下降: [1, 2]

  • 特征独立假设: 不计算各维度间的协方差矩阵去相关,仅对每一个神经元的特征进行独立的标准化。

  • 批量近似: 使用单个 Batch 内的数据均值和方差来近似整个数据集的分布,而非使用全局数据集。 [1]

3. BN层的计算步骤(以单批次为例)

对于一个输入特征 x,通过以下步骤转化为输出 y: [1, 2]

  1. 计算 Batch 均值: \mu_B = \frac{1}{m} \sum_{i=1}^{m} x_i

  2. 计算 Batch 方差: \sigma_B^2 = \frac{1}{m} \sum_{i=1}^{m} (x_i - \mu_B)^2

  3. 标准化: \hat{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} (ε 为防止分母为0的极小数)

  4. 缩放与平移(恢复表达能力): y_i = \gamma \hat{x}_i + \beta

    • 注: γ 和 β 为可学习参数。此步骤为了防止标准化强制将特征分布固定,导致网络丧失原有的非线性表达能力。

4. 核心优势与机制

  • 缓解内部协变量偏移(ICS): 固定各层隐层输入分布,使后续层不需要不断适应变化的输入。

  • 平滑优化空间: 使得损失函数的地貌更加平滑,允许使用更大的学习率(Learning Rate),加速训练收敛。

  • 正则化效果: 由于同一个 Batch 内的数据每次迭代都在变化,引入了轻微的噪声,起到了类似 Dropout 的正则化作用。 [1, 2, 3]