Batch Normalization阅读笔记
Batch normalization vs Instance normalization
目前归一化的主要方法:Batch Normalization(2015年)、Layer Normalization(2016年)、Instance Normalization(2017年)、Group Normalization(2018年)
归一化方法通用公式:
x
^
i
=
1
σ
i
(
x
i
−
μ
i
)
\hat{x}_{i}=\frac{1}{\sigma_{i}}\left(x_{i}-\mu_{i}\right)
x^i=σi1(xi−μi)
x
i
x_{i}
xi是某一层的特征,
i
i
i是索引,
i
=
(
i
N
,
i
C
,
i
H
,
i
W
)
i=\left(i_{N}, i_{C}, i_{H}, i_{W}\right)
i=(iN,iC,iH,iW)对应于特征图的
(
N
,
C
,
H
,
W
)
(N, C, H, W)
(N,C,H,W)。
μ
i
=
1
m
∑
k
∈
S
i
x
k
,
σ
i
=
1
m
∑
k
∈
S
i
(
x
k
−
μ
i
)
2
+
ϵ
\mu_{i}=\frac{1}{m} \sum_{k \in \mathcal{S}_{i}} x_{k}, \quad \sigma_{i}=\sqrt{\frac{1}{m} \sum_{k \in \mathcal{S}_{i}}\left(x_{k}-\mu_{i}\right)^{2}+\epsilon}
μi=m1k∈Si∑xk,σi=m1k∈Si∑(xk−μi)2+ϵ
y i = γ x ^ i + β y_{i}=\gamma \hat{x}_{i}+\beta yi=γx^i+β
Si is the set of pixels in which the mean and std are computed, and m
is the size of this set
应用场景
从左到右依次为BN、LN、IN、GN
1、BN(Batch Normalization)
:在batch上,对NHW做归一化
S i = { k ∣ k C = i C } \mathcal{S}_{i}=\left\{k | k_{C}=i_{C}\right\} Si={k∣kC=iC}
BN适用于图像分类识别任务
2、LN(Layer Normalization)
:在channel上,对CHW做归一化
S
i
=
{
k
∣
k
N
=
i
N
}
\mathcal{S}_{i}=\left\{k | k_{N}=i_{N}\right\}
Si={k∣kN=iN}
LN适用于序列模型(RNN、LSTM)
3、IN(Instance Normalization)
: 在像素上,对HW做归一化
S
i
=
{
k
∣
k
N
=
i
N
,
k
C
=
i
C
}
\mathcal{S}_{i}=\left\{k | k_{N}=i_{N}, k_{C}=i_{C}\right\}
Si={k∣kN=iN,kC=iC}
IN适用于生成模型(风格迁移、图像超分辨率等)
4、GN(Group Normalization)
: 先将chanel分组,然后再分组在chanel上做归一化
S
i
=
{
k
∣
k
N
=
i
N
,
⌊
k
C
C
/
G
⌋
=
⌊
i
C
C
/
G
⌋
}
\mathcal{S}_{i}=\left\{k | k_{N}=i_{N},\left\lfloor\frac{k_{C}}{C / G}\right\rfloor=\left\lfloor\frac{i_{C}}{C / G}\right\rfloor\right\}
Si={k∣kN=iN,⌊C/GkC⌋=⌊C/GiC⌋}
GN是极端情况下可等价于LN和IN
GN的tensorflow实现,其他类似,只需在计算 mean和variable更改指定维度即可
import tensorflow as tf
def GroupNorm(x, gamma, beta, G, eps=1e-5):
N, C, H, W = x.shape
x = tf.reshape(x, [N, G, C // G, H, W])
mean, variable = tf.nn.moments(x, [2, 3, 4], keep_dims=True)
x = (x - mean) / tf.sqrt(variable + eps)
x = tf.reshape(x, [N, C, H, W])
return x * gamma + beta
BN vs GN
GN优于BN的地方:
BN依赖于batch_size