核心一句话:三种 Norm 本质都在做 “标准化 + 可学习仿射变换”,差别只在于 均值/方差统计的维度不同,因此适用场景与工程表现不同。


1. 归一化(Normalization)的统一形式

对任意激活值 xx,归一化可写为:

x^=xμσ2+ϵ\hat{x} = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}}

y=γx^+βy = \gamma \hat{x} + \beta

  • μ,σ2\mu, \sigma^2:在某些维度上统计得到的均值与方差(Norm 的核心差异)
  • ϵ\epsilon:数值稳定项,防止除 0
  • γ,β\gamma, \beta:可学习参数,给模型“恢复尺度/偏移”的能力

2. 以 CNN 特征为例:张量形状与维度

CNN 常见激活张量:

xRN×C×H×Wx \in \mathbb{R}^{N \times C \times H \times W}

  • NN:batch size
  • CC:通道数
  • H,WH, W:空间大小

各种 Norm 的区别就是:μ,σ2\mu, \sigma^2 是对哪些维度进行 reduce(求平均/方差)

3. BatchNorm(BN)

3.1 统计方式:对每个通道,在整个 batch + 空间上统计

对每个通道 cc

μc=1NHWn,h,wxn,c,h,w\mu_c = \frac{1}{NHW} \sum_{n,h,w} x_{n,c,h,w}

σc2=1NHWn,h,w(xn,c,h,wμc)2\sigma_c^2 = \frac{1}{NHW} \sum_{n,h,w} (x_{n,c,h,w} - \mu_c)^2

归一化:

x^n,c,h,w=xn,c,h,wμcσc2+ϵ\hat{x}_{n,c,h,w}=\frac{x_{n,c,h,w}-\mu_c}{\sqrt{\sigma_c^2+\epsilon}}

3.2 核心特点

利用 batch 统计,训练稳定且通常收敛更快(尤其在 CNN 分类任务中)
✅ 对同一通道的不同样本进行对齐,有助于判别式学习
依赖 batch size:batch 太小统计不稳定(常导致性能下降)
训练与推理行为不一致:训练用 batch 统计,推理用 running mean/var

3.3 常见应用

  • CNN 图像分类(ResNet、VGG、EfficientNet 等)
  • batch size 充足、分布稳定的任务非常适合 BN

4. LayerNorm(LN)

4.1 统计方式:对每个样本,把一个样本的特征维度整体统计

对一个样本 nn

μn=1Dd=1Dxn,d\mu_n = \frac{1}{D} \sum_{d=1}^D x_{n,d}

σn2=1Dd=1D(xn,dμn)2\sigma_n^2 = \frac{1}{D} \sum_{d=1}^D (x_{n,d}-\mu_n)^2

归一化:

x^n,d=xn,dμnσn2+ϵ\hat{x}_{n,d}=\frac{x_{n,d}-\mu_n}{\sqrt{\sigma_n^2+\epsilon}}

在 CNN 中常理解为:对每个样本,在 C,H,WC,H,W 上统计(即对 CHWCHW 求均值/方差)。

4.2 核心特点

不依赖 batch size(batch=1 也可稳定工作)
训练与推理一致,无需 running stats
✅ 非常适合序列建模、Transformer、RNN
❌ 在 CNN 分类中往往不如 BN(通道统计结构被混合)

4.3 常见应用

  • Transformer(BERT/GPT/ViT 等)
  • NLP、语言建模、自回归推理(batch 很小甚至为 1)

5. InstanceNorm(IN)

5.1 统计方式:对每个样本的每个通道,仅在空间维度统计

对每个样本 nn、每个通道 cc

μn,c=1HWh,wxn,c,h,w\mu_{n,c}=\frac{1}{HW}\sum_{h,w}x_{n,c,h,w}

σn,c2=1HWh,w(xn,c,h,wμn,c)2\sigma_{n,c}^2=\frac{1}{HW}\sum_{h,w}(x_{n,c,h,w}-\mu_{n,c})^2

归一化:

x^n,c,h,w=xn,c,h,wμn,cσn,c2+ϵ\hat{x}_{n,c,h,w}=\frac{x_{n,c,h,w}-\mu_{n,c}}{\sqrt{\sigma_{n,c}^2+\epsilon}}

5.2 核心特点

✅ 不依赖 batch size
✅ 训练与推理一致
强烈去除每张图像的风格统计(对比度、亮度等)
❌ 在分类任务中可能损伤性能(因为全局强度信息被删除)

5.3 常见应用

  • 风格迁移(Style Transfer)
  • 图像生成任务(GAN、Diffusion 的部分结构中)
  • 强调 “内容结构” 而非 “风格统计” 的场景

6. 三者对比总结(核心:统计维度不同)

Norm 均值/方差统计维度 是否依赖 batch Train/Eval一致性 适用典型场景
BatchNorm 对每个通道,在 N,H,WN,H,W 统计 ✅依赖 ❌不一致(running stats) CNN 分类、大 batch
LayerNorm 对每个样本,在特征维(如 C,H,WC,H,WDD)统计 ❌不依赖 ✅一致 Transformer/NLP/序列建模
InstanceNorm 对每个样本每个通道,在 H,WH,W 统计 ❌不依赖 ✅一致 风格迁移、生成模型

7. 为什么需要这么多 Norm?

可以把 Norm 理解为:给特征定义一个 “参考坐标系”

  • BN:群体坐标系(用 batch 统计对齐不同样本)
    → 适合判别式任务、需要样本间对齐的分类等
  • LN:个体坐标系(每个样本自己稳定)
    → batch 不稳定、推理 batch=1 的生成模型/Transformer 必须这样
  • IN:每张图每通道坐标系(强去风格统计)
    → 风格迁移正是想去除这些统计量并重建风格

Norm 的不同,是为了适应 任务结构与数据分布 的不同。

8. 顺带:GroupNorm(GN)——介于 LN 和 IN 的折中

GroupNorm 将通道划分成 GG 组,每组统计均值方差:

  • LN:把所有通道看成 1 组(G=1G=1
  • IN:每个通道单独为一组(G=CG=C
  • GN:1<G<C1 < G < C,折中方案

✅ 不依赖 batch size
✅ 在 小 batch 的检测/分割任务 中非常常见(比 BN 稳)
常见模型:Mask R-CNN 系列、一些 segmentation backbone 等

9. 快速选择建议(经验法则)

  • CNN 分类(batch 大) → BatchNorm
  • 小 batch / 检测 / 分割 → GroupNorm / LayerNorm
  • Transformer / NLP / LLM / 自回归生成 → LayerNorm(或 RMSNorm)
  • 风格迁移 / 图像生成 → InstanceNorm(或 GN)

10. 一句话总结

三种 Norm 的联系:形式一致,本质都是标准化 + 仿射变换
三种 Norm 的区别:统计量的维度不同 → 参考系不同 → 工程适用场景不同