深度学习|表示学习|Instance Normalization 全面总结|26
它的核心思想是对每个样本的每个通道单独计算均值和方差,然后进行归一化。
如是我闻:
1. Instance Normalization(IN)
Instance Normalization(IN)最早由 Ulyanov et al.(2017) 提出,主要用于 风格迁移(Style Transfer) 任务。它的核心思想是 对每个样本的每个通道 (C)(C)(C) 单独计算均值和方差,然后进行归一化。
与 Batch Normalization(BN)不同,IN 不依赖 mini-batch 统计信息,所以更适用于小 batch size 甚至 batch size = 1 的情况。
数学公式
对于一个输入特征 xtilmx_{tilm}xtilm,其中:
- ttt 表示 batch 维度(样本索引)
- iii 表示通道索引(C)
- l,ml, ml,m 分别表示特征图的空间坐标 H×WH × WH×W
均值计算
μti=1HW∑l=1W∑m=1Hxtilm \mu_{ti} = \frac{1}{HW} \sum_{l=1}^{W} \sum_{m=1}^{H} x_{tilm} μti=HW1l=1∑Wm=1∑Hxtilm
方差计算
σti2=1HW∑l=1W∑m=1H(xtilm−μti)2 \sigma^2_{ti} = \frac{1}{HW} \sum_{l=1}^{W} \sum_{m=1}^{H} (x_{tilm} - \mu_{ti})^2 σti2=HW1l=1∑Wm=1∑H(xtilm−μti)2
归一化
ytilm=xtilm−μtiσti2+ϵ y_{tilm} = \frac{x_{tilm} - \mu_{ti}}{\sqrt{\sigma^2_{ti} + \epsilon}} ytilm=σti2+ϵxtilm−μti
💡 计算范围:
Instance Normalization 只在 单个样本的单个通道 (H×W 维度) 内计算均值和方差,而不会跨通道或跨样本计算。
2. Layer Normalization(LN)
概念
Layer Normalization(LN)由 Ba et al.(2016) 提出,最初用于 RNN 和 Transformer 结构,后来也在 CNN 中被广泛使用。它的核心思想是 对整个样本的所有通道 (C×H×W) 计算均值和方差,然后进行归一化。
不同于 Batch Normalization(BN),LN 不依赖 batch 维度,适用于 NLP 和 Transformer 任务,特别是在 batch size 变化较大的情况下,仍能保持稳定的效果。
数学公式
对于一个输入特征 xijklx_{ijkl}xijkl,其中:
- iii 表示 batch 维度(样本索引)
- jjj 表示通道索引(CCC)
- k,lk, lk,l 分别表示特征图的空间坐标(H×WH × WH×W)
均值计算
μl=1CHW∑j=1C∑k=1H∑l=1Wxijkl \mu^l = \frac{1}{CHW} \sum_{j=1}^{C} \sum_{k=1}^{H} \sum_{l=1}^{W} x_{ijkl} μl=CHW1j=1∑Ck=1∑Hl=1∑Wxijkl
方差计算
σl2=1CHW∑j=1C∑k=1H∑l=1W(xijkl−μl)2 \sigma^2_l = \frac{1}{CHW} \sum_{j=1}^{C} \sum_{k=1}^{H} \sum_{l=1}^{W} (x_{ijkl} - \mu^l)^2 σl2=CHW1j=1∑Ck=1∑Hl=1∑W(xijkl−μl)2
归一化
yijkl=xijkl−μlσl2+ϵ y_{ijkl} = \frac{x_{ijkl} - \mu^l}{\sqrt{\sigma^2_l + \epsilon}} yijkl=σl2+ϵxijkl−μl
💡 计算范围:
Layer Normalization 在整个样本的所有通道 (C×H×W) 维度上计算均值和方差,不同通道之间的归一化统计量是共享的。
3. 计算示例
假设我们有一个输入 特征图大小为 2×22 \times 22×2,batch size 为 1,通道数 C = 2,即:
X=[Channel 1:[1234],Channel 2:[5678]] X = \begin{bmatrix} \text{Channel 1}: & \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad \text{Channel 2}: & \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} \end{bmatrix} X=[Channel 1:[1324],Channel 2:[5768]]
Instance Normalization
IN 对 每个通道 (CCC) 独立归一化,计算均值和方差:
-
Channel 1 均值:
μ1=1+2+3+44=2.5 \mu_1 = \frac{1+2+3+4}{4} = 2.5 μ1=41+2+3+4=2.5
方差:
σ12=(1−2.5)2+(2−2.5)2+(3−2.5)2+(4−2.5)24=1.25 \sigma_1^2 = \frac{(1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 + (4-2.5)^2}{4} = 1.25 σ12=4(1−2.5)2+(2−2.5)2+(3−2.5)2+(4−2.5)2=1.25
归一化:
Y1=X1−2.51.25+ϵ Y_1 = \frac{X_1 - 2.5}{\sqrt{1.25 + \epsilon}} Y1=1.25+ϵX1−2.5 -
Channel 2 均值:
μ2=5+6+7+84=6.5 \mu_2 = \frac{5+6+7+8}{4} = 6.5 μ2=45+6+7+8=6.5
归一化后:
Y2=X2−6.51.25+ϵ Y_2 = \frac{X_2 - 6.5}{\sqrt{1.25 + \epsilon}} Y2=1.25+ϵX2−6.5
Layer Normalization
LN 对 整个样本的所有通道 (C×H×W) 归一化,计算:
- 总均值:
μ=1+2+3+4+5+6+7+88=4.5 \mu = \frac{1+2+3+4+5+6+7+8}{8} = 4.5 μ=81+2+3+4+5+6+7+8=4.5 - 总方差:
σ2=(1−4.5)2+⋯+(8−4.5)28=5.25 \sigma^2 = \frac{(1-4.5)^2 + \dots + (8-4.5)^2}{8} = 5.25 σ2=8(1−4.5)2+⋯+(8−4.5)2=5.25 - 归一化:
Y=X−4.55.25+ϵ Y = \frac{X - 4.5}{\sqrt{5.25 + \epsilon}} Y=5.25+ϵX−4.5
4. 主要区别
| 归一化方法 | 计算均值/方差的范围 | 归一化的单位 | 适用场景 |
|---|---|---|---|
| Instance Normalization (IN) | 每个通道 (H×W) 计算均值和方差 | 每个通道独立归一化 | 风格迁移、GAN、计算机视觉任务 |
| Layer Normalization (LN) | 整个样本 (C×H×W) 计算均值和方差 | 所有通道一起归一化 | NLP、Transformer、RNN/CNN 任务 |
5. 总结
- IN 适用于图像任务(如风格迁移),可以帮助去除特定风格信息。
- LN 适用于 NLP 和 CNN 任务,因为它不会受到 batch size 影响,在 Transformer 和 RNN 里表现更稳定。
希望这篇文章能帮助你理解 Instance Normalization 和 Layer Normalization 的核心概念及其不同应用!🎯
更多推荐

所有评论(0)