Group Normalization (GN) 是一种解决 Batch Normalization (BN) 在小批量(small batch size)情况下失效的问题的技术。GN 是在卷积神经网络(CNN)中常用的一种归一化方法,它通过在每个样本的特征图的通道维度上进行分组归一化,提供了一种比 BN 更适合小批量训练的归一化策略。
1.为什么需要 Group Normalization?
在 Batch Normalization 中,均值和方差是在整个批量(batch)内计算的,因此它依赖于批量大小。当批量大小较小时,计算的均值和方差的统计量会变得不稳定,导致归一化的效果较差,甚至会影响训练稳定性。这就是 GN 被提出的背景。
与 BN 不同,Group Normalization 不依赖于批量大小,它在样本级别上进行归一化,因此即使在批量很小的情况下,它也能表现得很好。
2.Group Normalization 的核心思想
Group Normalization 的核心思想是将每个样本的通道分为多个组(group),然后在每组内部进行归一化处理,而不是在整个批量上做归一化。换句话说,GN 只在 每个样本的通道维度 上进行归一化,并且不依赖于批量大小。
Group Normalization 的步骤
-
将通道分组: GN 会将每个样本的 C 个通道分为 G 组(G 是一个超参数)。每组包含 C/G 个通道。比如,如果 C=8 且 G=4,则每组包含 2 个通道。
-
计算每组的均值和方差: 对于每个样本,GN 会在每一组内部计算均值和方差。这里的均值和方差是在组内的通道上计算的,而不是整个批量上的通道。
对于每个组 g 和每个样本 nnn,均值和方差计算如下:
- 归一化: 对于每个样本 nnn,每个组的每个通道在该组内部进行归一化:
其中 ϵ 是一个小常数,用来防止分母为零。
4.缩放和平移: 与 Batch Normalization 一样,GN 还可以引入学习的缩放(scale)和偏移(shift)参数。每个组都会有一对 γ和 β来对归一化后的特征进行调整:
3.Group Normalization 的优势
-
不依赖批量大小: 相比于 Batch Normalization,GN 在训练时不依赖批量大小,适用于小批量或每次只有一个样本的情况。这使得 GN 特别适用于计算资源有限的环境或那些批量较小的任务。
-
计算资源友好: 由于 GN 在每个样本的通道维度上进行归一化,它不需要跨样本计算统计量,因此在内存上也更节省。
-
适用于多种任务: GN 在一些需要较小批量的任务中表现出色,尤其是 视觉任务(如图像分类、物体检测)和 自然语言处理(NLP)中的任务,尤其是使用较小 batch size 时。
4.实际应用中的 Group Normalization
Group Normalization 已经在一些需要小批量训练的任务中得到了广泛应用,尤其是在卷积神经网络(CNN)和 Transformer 模型中。它在多种不同的网络结构中都能提高训练的稳定性。
5.Group Normalization 与 Batch Normalization 的对比
特性 | Batch Normalization(BN) | Group Normalization(GN) |
---|---|---|
归一化的维度 | 批量(batch)维度上的所有样本 | 每个样本内的通道(group)维度 |
依赖批量大小 | 依赖批量大小(batch size) | 不依赖批量大小 |
适用于小批量训练 | 不适合小批量(small batch size) | 适合小批量训练(small batch size) |
计算的均值和方差 | 整个批次中每个通道的均值和方差 | 每个样本的每组的均值和方差 |
在视觉任务中的效果 | 在大批量下效果更好,尤其是在图像任务中 | 在小批量下(尤其是低 batch size)表现更好 |
训练时是否使用额外参数 | 使用缩放和偏移参数(gamma 和 beta) | 使用缩放和偏移参数(gamma 和 beta) |
6.总结
Group Normalization 是一种非常有用的归一化方法,尤其适合在小批量训练时使用。通过将通道划分成多个组,并在每组内计算均值和方差,GN 能有效解决小批量训练时的稳定性问题。与 Batch Normalization 相比,Group Normalization 更加灵活,不依赖于批量大小,适用于更多样化的场景,尤其是在需要较小批量的任务中。
如果你正在进行小批量训练,或者在计算资源有限的环境中工作,Group Normalization 是一个很好的选择。