Group Normalization/zh
| Article | |
|---|---|
| Topic area | Deep Learning |
| Prerequisites | Batch Normalization, Convolutional Neural Network |
概述
组归一化(GN)是一种用于深度神经网络的特征归一化技术,由 Yuxin Wu 和 Kaiming He 于 2018 年提出。[1] 它将一层的通道划分为固定数量的组,并在每个组内独立计算均值和方差进行归一化,对批次中的每个样本独立进行。与批归一化不同,它的统计量不依赖于批次维度,这使其在使用小批次训练时、在内存受限的硬件上、或在目标检测和视频理解等大批大小不切实际的任务中保持稳定。
GN 在激活归一化方法家族中介于层归一化和实例归一化之间。层归一化对单个样本的所有通道进行归一化,实例归一化对每个样本的每个通道分别归一化,而组归一化则取中间方案,对若干组通道进行归一化。从经验上看,这一中间方案在视觉基准上的准确率通常接近批归一化,同时消除了对批次统计量的依赖。
动机
批归一化通过稳定训练并使更深的网络成为可能,彻底改变了深度学习,但它有一个结构性弱点:其逐通道的均值和方差是从当前小批次中的样本估计的。当批次较小时,这些估计具有噪声,归一化本身就成为误差来源。在检测、分割、视频和 3D 学习等任务中问题尤为严重——单个样本就可能占用 GPU 内存的很大一部分,每设备的批次为 1 或 2 是常见情况。在 BN 中将批大小从 32 减少到 2,可能会使 ImageNet top-1 准确率下降十个百分点以上。
组归一化的设计目标是在去除批次依赖的同时,保留激活归一化所带来的正则化和条件化收益。由于GN仅从单个样本计算统计量,因此训练和推理时使用相同的代码路径,归一化行为不会随批大小或训练批次与测试批次之间的分布偏移而改变。
公式化
考虑来自卷积神经网络的形状为 $ (N, C, H, W) $ 的 4D 激活张量,其中 $ N $ 为批大小,$ C $ 为通道数,$ H, W $ 为空间维度。组归一化将 $ C $ 个通道划分为 $ G $ 个组,每个组包含 $ C/G $ 个通道。对给定样本 $ n $ 和组 $ g $,设 $ \mathcal{S}_{n,g} $ 表示该组中的激活集合,其大小为 $ (C/G) \cdot H \cdot W $。
该组的均值和方差为
$ {\displaystyle \mu_{n,g} = \frac{1}{|\mathcal{S}_{n,g}|} \sum_{x \in \mathcal{S}_{n,g}} x, \qquad \sigma_{n,g}^2 = \frac{1}{|\mathcal{S}_{n,g}|} \sum_{x \in \mathcal{S}_{n,g}} (x - \mu_{n,g})^2.} $
样本 $ n $ 的组 $ g $ 中的每个激活 $ x_i $ 随后按如下方式归一化
$ {\displaystyle \hat{x}_i = \frac{x_i - \mu_{n,g}}{\sqrt{\sigma_{n,g}^2 + \epsilon}},} $
其中 $ \epsilon $ 是为数值稳定性而加入的小常数(通常为 $ 10^{-5} $)。最后,应用一个带有可学习参数 $ \gamma_c $ 和 $ \beta_c $ 的逐通道仿射变换:
$ {\displaystyle y_i = \gamma_c \hat{x}_i + \beta_c.} $
仿射参数保留了该层的表征容量,并在空间位置和批次维度上共享。两个极端情形对应于已知的方法:当 $ G = 1 $ 时,GN 退化为层归一化(一个组覆盖所有通道);当 $ G = C $ 时,退化为实例归一化(每个通道一个组)。Wu 和 He 推荐 $ G = 32 $ 作为在各种架构上都表现良好的默认值。
与其他归一化器的比较
激活归一化方法家族可以通过计算统计量时所归约的坐标轴来刻画。给定形状为 $ (N, C, H, W) $ 的张量:
- 批归一化按通道在 $ (N, H, W) $ 上归约——其统计量将批次中的样本耦合在一起。
- 层归一化按样本在 $ (C, H, W) $ 上归约——每个样本一对均值和方差。
- 实例归一化按(样本,通道)在 $ (H, W) $ 上归约。
- 组归一化按(样本,组)在 $ (C/G, H, W) $ 上归约。
只有批归一化在样本之间混合信息;其他方法,包括GN,都是逐样本进行的,因此在训练和推理时行为完全一致。这种独立于批次构成的特性正是 GN 在小批次或变化批次下保持稳定的原因。代价是 GN 不能获得 BN 从批次噪声中得到的隐式正则化,因此最优学习率和权重衰减策略可能有所不同。
实用考量
组的数量 $ G $ 是一个超参数,但在实践中很少逐层调优。标准选择 $ G = 32 $ 对通道数为 32 的倍数的 ResNet 类主干网络效果良好。当某一层的通道数少于 32 时,通常采用固定的组大小(例如每组 16 个通道)而非固定的组数。大多数实现要求 $ C $ 能被 $ G $ 整除;必要时需对架构进行补齐或调整。
在大多数架构中,GN可以直接替换 BN:将每个 BN 层替换为 GN 层,其余网络保持不变,然后重新训练。无需跟踪运行统计量,这简化了模型并消除了一处训练/测试不匹配的来源。内存和计算开销不大——在现代框架中,GN 每次前向传播的开销通常略高于 BN,因为其归约形状对硬件不如逐通道归约友好,但差距通常在百分之十以内。
在对使用 BN 预训练的网络进行微调时,切换到 GN 通常需要重新训练或大量微调,而不能直接热替换,因为仿射参数是在不同的归一化方案下学习的。
实证行为
在原始论文中,使用每 GPU 批大小为 32 在 ImageNet 上训练的 ResNet-50,在 BN 和 GN 下取得了相近的 top-1 准确率(差距约为半个百分点以内)。决定性差异在批次缩小时显现:当每 GPU 批大小为 2 时,BN 的准确率下降约十个百分点,而 GN 几乎保持不变。在使用 Mask R-CNN 在 COCO 上的目标检测和视频分类任务中,也呈现同样的规律——在这些任务所要求的小批次条件下,GN 持续优于 BN。
组归一化已成为检测和分割框架中的标准选择,并广泛用于扩散模型以及其他每设备批大小受激活内存限制的架构中。它也是需要确定性、无分布依赖行为的实现中常用的基线归一化器,例如强化学习和联邦设置。
变体与相关方法
若干方法扩展或关联了 GN:
- 可切换归一化(Switchable Normalization)按层学习 BN、LN 和 IN 统计量的加权组合,实际上让网络选择在 BN/GN/LN/IN 谱系上的工作位置。[2]
- 滤波器响应归一化(Filter Response Normalization)完全移除了减去均值的步骤,并将逐通道的方差归一化与一种带阈值的可学习激活相结合,同样避免了对批次的依赖。[3]
- 权重标准化(Weight Standardization)对卷积权重而非激活进行归一化,通常与 GN 结合使用,以在小批大小下恢复 BN 级别的准确率。[4]
- 分组卷积在通道维度上共享分组的直觉,但作用于卷积本身而非归一化统计量,二者有时会在高效架构中结合使用。
局限性
GN消除了对批次的依赖,但代价是失去了 BN 提供的隐式正则化,在大批次图像分类任务中,有时会以较小的差距落后于 BN。要求 $ C $ 能被 $ G $ 整除是一种较小的架构约束。由于归约跨越可变的空间范围,在高度优化于按通道归约的硬件上,GN 可能比 BN 更慢。最后,$ G $ 的选择是一个额外的超参数;尽管默认值表现良好,但最优值可能依赖于网络宽度和任务。