【归一化总结】BatchNorm(BN)、InstanceNorm(IN)、LayerNorm(LN) 和 GroupNorm(GN)
文章目录
- 基础归一化方法:LayerNorm、InstanceNorm、BatchNorm 对比
- **1. BatchNorm(BN - Batch Normalization)**
- **原理**
- **特点**
- **2. InstanceNorm(IN - Instance Normalization)**
- **原理**
- **特点**
- **3. LayerNorm(LN - Layer Normalization)**
- **原理**
- **特点**
- **4. GroupNorm(GN - Group Normalization)**
- **原理**
- **特点**
- **对比总结:BN、IN、LN、GN**
- **条件归一化方法对比:AdaLN 和 AdaIN**
- 1. **AdaIN(Adaptive Instance Normalization)**
- 2. **AdaLN(Adaptive Layer Normalization)**
- **对比总结:AdaLN 和 AdaIN**
- **AdaLN-Zero 与 AdaLN 的对比**
- 1. **AdaLN-Zero**
- **对比总结:AdaLN 和 AdaLN-Zero**
- **条件归一化方法对比**
基础归一化方法:LayerNorm、InstanceNorm、BatchNorm 对比
1. BatchNorm(BN - Batch Normalization)
原理
Batch Normalization 基于 mini-batch 的统计信息(均值和方差)对输入特征进行归一化。公式如下:
BN ( x ) = x − μ B σ B 2 + ϵ ⋅ γ + β \text{BN}(x) = \frac{x - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} \cdot \gamma + \beta BN(x)=σB2+ϵx−μB⋅γ+β
- x x x: 输入特征。
- μ B \mu_B μB, σ B 2 \sigma_B^2 σB2: 当前 mini-batch 的均值和方差(逐通道计算)。
- γ \gamma γ, β \beta β: 可学习的缩放和平移参数。
- ϵ \epsilon ϵ: 防止除零的小值。
特点
- 归一化范围: mini-batch 的每个通道。
- 依赖全局统计信息: 在推理阶段,使用全局均值和方差(通过滑动平均计算)。
- 优点:
- 加速训练,稳定梯度。
- 减轻梯度消失和梯度爆炸问题。
- 缺点:
- 对小批量数据性能较差,因为统计信息可能不准确。
- 对序列建模(如 RNN)或生成任务效果有限。
- 依赖 batch size,过小的 batch size 会使其效果变差。
2. InstanceNorm(IN - Instance Normalization)
原理
Instance Normalization 对每个样本的每个通道分别计算均值和方差进行归一化。公式如下:
IN ( x ) = x − μ C σ C 2 + ϵ ⋅ γ + β \text{IN}(x) = \frac{x - \mu_C}{\sqrt{\sigma_C^2 + \epsilon}} \cdot \gamma + \beta IN(x)=σC2+ϵx−μC⋅γ+β
- μ C \mu_C μC, σ C 2 \sigma_C^2 σC2: 单个样本的每个通道的均值和方差。
- γ \gamma γ, β \beta β: 可学习的缩放和平移参数。
特点
- 归一化范围: 单个样本的每个通道。
- 优点:
- 更适合图像生成任务(如风格迁移),因为它能移除样本间的风格差异。
- 不依赖 batch size。
- 缺点:
- 忽略了 batch 和全局统计信息。
- 对分类任务或需要捕获样本间关系的任务效果不佳。
3. LayerNorm(LN - Layer Normalization)
原理
Layer Normalization 对每个样本的所有特征维度进行归一化。公式如下:
LN ( x ) = x − μ σ 2 + ϵ ⋅ γ + β \text{LN}(x) = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} \cdot \gamma + \beta LN(x)=σ2+ϵx−μ⋅γ+β
- μ \mu μ, σ 2 \sigma^2 σ2: 对一个样本的所有特征维度计算均值和方差。
- γ \gamma γ, β \beta β: 可学习的缩放和平移参数。
特点
- 归一化范围: 单个样本的所有特征维度。
- 优点:
- 不依赖 batch size,非常适合小批量任务。
- 对序列建模任务(如 NLP、RNN 和 Transformer)效果显著,因为它对每个样本单独归一化。
- 缺点:
- 忽略样本间的统计信息。
- 不适合需要跨样本统计的任务。
4. GroupNorm(GN - Group Normalization)
原理
Group Normalization 是对通道分组后计算归一化。每组通道内的值共享均值和方差,公式如下:
GN ( x ) = x − μ G σ G 2 + ϵ ⋅ γ + β \text{GN}(x) = \frac{x - \mu_G}{\sqrt{\sigma_G^2 + \epsilon}} \cdot \gamma + \beta GN(x)=σG2+ϵx−μG⋅γ+β
- G G G: 分组数。
- μ G \mu_G μG, σ G 2 \sigma_G^2 σG2: 每组通道的均值和方差。
- γ \gamma γ, β \beta β: 可学习的缩放和平移参数。
特点
- 归一化范围: 每个样本的每组通道。
- 优点:
- 不依赖 batch size,适合小批量任务。
- 对分类任务和图像生成任务都表现较好。
- 缺点:
- 需要人为设置分组数 G G G,分组数选择不当可能影响性能。
- 相比 BN,计算稍复杂。
对比总结:BN、IN、LN、GN
特性 | BatchNorm (BN) | InstanceNorm (IN) | LayerNorm (LN) | GroupNorm (GN) |
---|---|---|---|---|
归一化范围 | mini-batch 的每个通道 | 样本的每个通道 | 样本的所有特征维度 | 样本的每组通道 |
依赖 batch size | 是 | 否 | 否 | 否 |
动态性 | 基于 batch 统计 | 基于样本统计 | 基于样本统计 | 基于样本统计(分组归一化) |
适用场景 | 大批量分类任务 | 图像生成,风格迁移 | NLP、序列任务、小批量任务 | 小批量分类、检测、生成任务 |
优点 | 稳定训练,加速收敛 | 去除样本间风格差异 | 独立于 batch size | 适合小批量任务,通用性强 |
缺点 | 小批量效果差,依赖 batch size | 忽略全局统计信息 | 忽略样本间统计信息 | 需要手动调节分组数 |
条件归一化方法对比:AdaLN 和 AdaIN
1. AdaIN(Adaptive Instance Normalization)
AdaIN 是 InstanceNorm 的扩展,用于动态调整归一化后的特征分布。主要应用于风格迁移任务。
公式:
AdaIN
(
x
,
y
)
=
σ
(
y
)
⋅
x
−
μ
(
x
)
σ
(
x
)
+
μ
(
y
)
\text{AdaIN}(x, y) = \sigma(y) \cdot \frac{x - \mu(x)}{\sigma(x)} + \mu(y)
AdaIN(x,y)=σ(y)⋅σ(x)x−μ(x)+μ(y)
- x x x:输入特征(如内容图像的特征)。
- y y y:风格编码(如风格图像的特征)。
- μ ( x ) \mu(x) μ(x), σ ( x ) \sigma(x) σ(x):输入特征的均值和标准差(逐通道计算)。
- μ ( y ) \mu(y) μ(y), σ ( y ) \sigma(y) σ(y):风格编码的均值和标准差。
特点:
- 归一化范围:单个样本的每个通道。
- 动态性:通过风格编码动态调整均值( μ ( y ) \mu(y) μ(y))和标准差( σ ( y ) \sigma(y) σ(y))。
- 适用场景:风格迁移、图像生成。
2. AdaLN(Adaptive Layer Normalization)
AdaLN 是 LayerNorm 的扩展,通过条件输入动态调整归一化参数。
公式:
AdaLN
(
x
,
z
)
=
x
−
μ
σ
2
+
ϵ
⋅
γ
(
z
)
+
β
(
z
)
\text{AdaLN}(x, z) = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} \cdot \gamma(z) + \beta(z)
AdaLN(x,z)=σ2+ϵx−μ⋅γ(z)+β(z)
- x x x:输入特征。
- z z z:条件输入(如任务编码)。
- γ ( z ) \gamma(z) γ(z), β ( z ) \beta(z) β(z):由条件输入动态生成的缩放和平移参数。
- μ \mu μ, σ 2 \sigma^2 σ2:对输入 x x x 的归一化(基于 LayerNorm)。
特点:
- 归一化范围:单个样本的所有特征维度(与 LayerNorm 相同)。
- 动态性:条件输入控制归一化参数。
- 适用场景:条件生成、多任务学习。
对比总结:AdaLN 和 AdaIN
特性 | AdaIN | AdaLN |
---|---|---|
归一化范围 | 样本的每个通道 | 样本的所有特征维度 |
动态性来源 | 风格编码(均值与方差) | 条件输入生成缩放和平移参数 |
适用场景 | 风格迁移、图像生成 | 条件生成、多任务学习 |
复杂性 | 中等 | 高 |
AdaLN-Zero 与 AdaLN 的对比
1. AdaLN-Zero
AdaLN-Zero 是 AdaLN 的变体,最关键的区别在于初始化策略。为了更好地适应条件输入,AdaLN-Zero 的参数在初始化时设置为零,使得初始状态下归一化效果接近原始 LayerNorm。
- γ ( z ) \gamma(z) γ(z) 和 β ( z ) \beta(z) β(z) 的初始值为零。
- 这样,初始模型的预测与标准 LayerNorm 一致,条件输入的影响逐渐被学习到。
优点:
- 提升了模型在初始阶段的稳定性。
- 更适合多任务学习或生成任务中条件输入较弱的情况。
缺点:
- 与 AdaLN 相比,AdaLN-Zero 初始阶段的动态性被约束,需要更多的训练时间来学习条件输入的影响。
对比总结:AdaLN 和 AdaLN-Zero
特性 | AdaLN | AdaLN-Zero |
---|---|---|
动态性 | 条件输入即刻影响归一化参数 | 条件输入的影响逐渐学习 |
稳定性 | 初始阶段不如 AdaLN-Zero 稳定 | 初始阶段更稳定 |
适用场景 | 条件输入较强的任务 | 条件输入较弱的任务 |
条件归一化方法对比
方法 | 归一化范围 | 动态性来源 | 适用场景 |
---|---|---|---|
AdaIN | 样本的每个通道 | 风格编码 | 风格迁移、图像生成 |
AdaLN | 样本的所有特征维度 | 条件输入 | 条件生成、多任务学习 |
AdaLN-Zero | 样本的所有特征维度 | 条件输入(逐渐学习) | 条件输入弱的任务 |