一句话定义:组归一化(Group Normalization,GroupNorm)是一种不依赖批大小(batch size)的归一化方法:它把通道(channel)分成若干组,在每个样本、每组通道内部计算均值和方差,再做标准化。
要理解它,先理解归一化在干什么。神经网络每层的输出数值忽大忽小,训练就不稳定。归一化的做法是:算出一批数的平均值和波动幅度,把它们拉回统一的尺度。关键在于“这批数”从哪里取——这正是不同归一化方法的分水岭。
打个比方:一个班的学生考了多门科目,你想把成绩标准化。BatchNorm 是“拿全班同学在同一科目上的分数算平均”,问题是如果这个班只来了两三个人,这个平均分就没什么代表性,估出来的统计量抖得厉害。GroupNorm 换了个思路:每个学生自己跟自己比——把他的科目分成几组(比如理科一组、文科一组),在组内算平均和波动。因为统计只发生在单个样本内部,所以“这次凑了几个人一起训练”完全不影响结果。
分组数 G 是个可调旋钮。极端情况下:G 等于通道总数时,每组只有一个通道,退化成实例归一化(Instance Normalization);G 等于 1 时,所有通道并成一组,就相当于对单个样本整体做层归一化(Layer Normalization)。所以 GroupNorm 可以看成 LN 和 IN 之间的一族插值。
| 方法 | 统计范围 | 依赖 batch? | 典型场景 |
|---|---|---|---|
| BatchNorm | 每个通道,跨 (N, H, W) | 是,小 batch 不稳 | 大 batch 图像分类 |
| AI 词典:LayerNorm">LayerNorm | 每个样本的 (C, H, W) | 否 | Transformer、NLP |
| InstanceNorm | 每个样本的每个通道 (H, W) | 否 | 风格迁移类任务 |
| GroupNorm | 每个样本的每组通道 (C/G, H, W) | 否 | 检测、分割、视频、小 batch |
和 LayerNorm 的区别值得单独说一句:两者都不看 batch,但 LN 把通道和空间位置一锅端,抹掉了通道之间的结构差异;GN 保留了“哪些通道归为一类”的分组结构,对卷积特征(带空间维度、通道间有语义分工)更友好。反过来,Transformer 里每个 token 是一个向量、没有空间维度,LN 就是自然选择。所以它们不是谁替代谁,而是场景不同。
对从业者的实际意义:目标检测、语义分割、视频理解、3D 医学影像这类任务,输入大、显存紧,batch 常常只能开到 2 或 4。这时 BatchNorm 的统计量噪声大、训练掉点,GroupNorm 是默认备选。它还有个附带好处:训练和推理行为完全一致,不需要维护滑动平均的 running statistics,省掉一类隐蔽 bug。代价是推理时 BN 可以折进卷积核做加速,GN 不能,所以对延迟极敏感的部署场景仍可能偏好 BN。具体选型建议以你自己的数据做消融为准。
对普通人:归一化说白了就是“统一量纲”。而 GroupNorm 提醒我们一件事——统计数据从哪儿来,决定了它靠不靠谱;样本太少时的平均值,不如不看。
