在深度学习中,归一化技术是提升模型训练稳定性和收敛速度的关键方法,Layer Normalization(LN) 和 Batch Normalization(BN) 是两种最常用的归一化方法,它们的核心区别在于归一化的维度以及适用场景。
1. 核心区别
维度 | Batch Normalization (BN) | Layer Normalization (LN) |
---|---|---|
归一化维度 | 沿 Batch 维度(对同一特征的所有样本归一化) | 沿 特征维度(对同一样本的所有特征归一化) |
统计量来源 | 依赖当前 Batch 的均值和方差 | 仅依赖当前样本的均值和方差 |
输入数据形状 | 适合固定结构的输入(如 CNN 中的图像数据) | 适合动态或变长输入(如 RNN、Transformer 中的序列数据) |
直观理解
- BN:假设输入数据形状为
[B, H, W, C]
(B: Batch size,H: 高度,W: 宽度,C: 通道数),BN 会对每个通道C
的所有 Batch 样本和空间位置(H, W)计算均值和方差。 - LN:对每个样本的
[H, W, C]
的所有特征(即通道和空间位置)计算均值和方差。
2. 公式对比
Batch Normalization
对每个特征通道 C
,计算 Batch 内所有样本的均值和方差:
μ
C
=
1
B
⋅
H
⋅
W
∑
b
=
1
B
∑
h
=
1
H
∑
w
=
1
W
x
b
,
h
,
w
,
C
σ
C
2
=
1
B
⋅
H
⋅
W
∑
b
=
1
B
∑
h
=
1
H
∑
w
=
1
W
(
x
b
,
h
,
w
,
C
−
μ
C
)
2
\ \mu_C = \frac{1}{B \cdot H \cdot W} \sum_{b=1}^B \sum_{h=1}^H \sum_{w=1}^W x_{b,h,w,C} \ \ \sigma_C^2 = \frac{1}{B \cdot H \cdot W} \sum_{b=1}^B \sum_{h=1}^H \sum_{w=1}^W (x_{b,h,w,C} - \mu_C)^2 \
μC=B⋅H⋅W1b=1∑Bh=1∑Hw=1∑Wxb,h,w,C σC2=B⋅H⋅W1b=1∑Bh=1∑Hw=1∑W(xb,h,w,C−μC)2
归一化后:
x
^
b
,
h
,
w
,
C
=
x
b
,
h
,
w
,
C
−
μ
C
σ
C
2
+
ϵ
\ \hat{x}_{b,h,w,C} = \frac{x_{b,h,w,C} - \mu_C}{\sqrt{\sigma_C^2 + \epsilon}} \
x^b,h,w,C=σC2+ϵxb,h,w,C−μC
Layer Normalization
对每个样本 B
,计算该样本所有特征的均值和方差:
μ
B
=
1
H
⋅
W
⋅
C
∑
h
=
1
H
∑
w
=
1
W
∑
c
=
1
C
x
B
,
h
,
w
,
c
σ
B
2
=
1
H
⋅
W
⋅
C
∑
h
=
1
H
∑
w
=
1
W
∑
c
=
1
C
(
x
B
,
h
,
w
,
c
−
μ
B
)
2
归一化后:
x
^
B
,
h
,
w
,
c
=
x
B
,
h
,
w
,
c
−
μ
B
σ
B
2
+
ϵ
\ \mu_B = \frac{1}{H \cdot W \cdot C} \sum_{h=1}^H \sum_{w=1}^W \sum_{c=1}^C x_{B,h,w,c} \ \ \sigma_B^2 = \frac{1}{H \cdot W \cdot C} \sum_{h=1}^H \sum_{w=1}^W \sum_{c=1}^C (x_{B,h,w,c} - \mu_B)^2 \ 归一化后: \ \hat{x}_{B,h,w,c} = \frac{x_{B,h,w,c} - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} \
μB=H⋅W⋅C1h=1∑Hw=1∑Wc=1∑CxB,h,w,c σB2=H⋅W⋅C1h=1∑Hw=1∑Wc=1∑C(xB,h,w,c−μB)2 归一化后: x^B,h,w,c=σB2+ϵxB,h,w,c−μB
3. 应用场景
Batch Normalization 的优势
- 适合 CNN:在图像任务(如 ResNet)中,BN 能显著加速训练并提升模型性能。
- 依赖 Batch 统计量:需要较大的 Batch Size(如 32 以上)以稳定估计均值和方差。
- 正则化效果:通过 Batch 内样本的随机性,隐式引入噪声,起到轻微正则化作用。
Layer Normalization 的优势
- 适合 RNN/Transformer:在序列模型(如 LSTM、Transformer)中,序列长度可变,BN 无法对齐不同长度的样本,而 LN 对每个样本独立处理。
- 不依赖 Batch Size:在 Batch Size 较小(甚至为 1)时仍有效,适合动态网络结构。
- 训练与推理一致:LN 的统计量仅依赖当前样本,无需维护全局均值和方差(BN 在推理时需使用训练集的移动平均统计量)。
4. 典型应用案例
方法 | 典型模型 | 场景 |
---|---|---|
BN | ResNet、VGG、MobileNet | 图像分类、目标检测等 CNN 任务 |
LN | Transformer、BERT、GPT | NLP、序列生成、自回归模型 |
混合使用 | 部分 GAN 或多模态模型 | 同时需要稳定特征和动态适应能力 |
5. 关键对比总结
特性 | BN | LN |
---|---|---|
归一化维度 | Batch + 空间维度(如 H, W) | 特征维度(如 C) |
对 Batch 依赖 | 强依赖(需较大 Batch Size) | 无依赖(适合小 Batch 或单样本) |
适用范围 | CNN、固定结构数据 | RNN、Transformer、变长序列数据 |
训练/推理差异 | 推理时使用移动平均统计量 | 训练与推理行为一致 |
正则化效果 | 有(通过 Batch 内样本噪声) | 无 |
6. 选择建议
- 图像任务(CNN):优先使用 BN,尤其是 Batch Size 较大时。
- 序列任务(RNN/Transformer):必须使用 LN,因为序列长度可变且 Batch Size 可能较小。
- 小 Batch Size 或动态网络(如强化学习):选择 LN,避免 BN 的统计量不稳定问题。
- 混合场景(如多模态模型):可尝试结合 BN 和 LN(例如 CNN 部分用 BN,序列部分用 LN)。
总结
BN 和 LN 的核心差异在于归一化的维度,这直接影响了它们的适用场景。
- BN 通过 Batch 维度的统计量对齐数据分布,适合静态结构数据(如图像);
- LN 通过特征维度的归一化,独立处理每个样本,更适合动态或变长数据(如文本、语音)。
理解两者的原理和适用性,能帮助在不同任务中选择合适的归一化方法。