1. 介绍
Batch Normalization是2015年一篇论文中提出的
数
据
归
一
化
\color{blue}{数据归一化}
数据归一化方法,往往用在深度神经网络中激活层之前。其作用可以加快模型训练时的收敛速度,使得模型训练过程更加稳定,避免梯度爆炸或者梯度消失。并且起到一定的正则化作用,几乎代替了Dropout。
2. 公式
I
n
p
u
t
:
B
=
{
x
1...
m
}
;
λ
,
β
(
p
a
r
a
m
e
t
e
r
s
t
o
b
e
l
e
a
r
n
e
d
)
Input:B = \lbrace x_{1...m}\rbrace;\lambda,\beta(parameters\quad to\quad be\quad learned)
Input:B={x1...m};λ,β(parameterstobelearned)
O
u
t
p
u
t
:
{
y
i
=
B
N
λ
,
β
(
x
i
)
}
Output:\lbrace{y_i=BN_{\lambda,\beta}(x_i)}\rbrace
Output:{yi=BNλ,β(xi)}
μ
B
←
1
m
∑
i
=
1
m
x
i
\mu_B\leftarrow\cfrac{1}{m}\sum_{i=1}^mx_i
μB←m1i=1∑mxi
σ
B
2
←
1
m
∑
i
=
1
m
(
x
i
−
μ
B
)
2
\sigma_B^2\leftarrow\cfrac{1}{m}\sum_{i=1}^m(x_i-\mu_B)^2
σB2←m1i=1∑m(xi−μB)2
x
i
‾
←
x
i
−
μ
B
σ
B
2
+
ϵ
\overline{x_i}\leftarrow\cfrac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}
xi←σB2+ϵxi−μB
y
i
←
γ
x
i
‾
+
β
y_i\leftarrow\gamma \overline{x_i}+\beta
yi←γxi+β
BN的具体操作为:先计算
B
B
B的均值和方差,之后将
B
B
B集合的均值、方差变换为0、1,最后将
B
B
B中每个元素乘以
γ
\gamma
γ再加
β
\beta
β,输出。
γ
\gamma
γ和
β
\beta
β是可训练参数,参与整个网络的BP;
归一化的目的:将数据规整到统一区间,减少数据的发散程度,降低网络的学习难度。BN的精髓在于归一之后,使用
γ
\gamma
γ和
β
\beta
β作为还原参数,在一定程度上保留原数据的分布。
3.
B
B
B的组成
神经网络中传递的张量数据,其维度通常记为[N, H, W, C],其中N是batch_size,H、W是行、列,C是通道数。那么上式中BN的输入集合
B
B
B就是下图中蓝色的部分。
均值的计算,就是在一个批次内,将每个通道中的数字单独加起来,再除以
N
×
H
×
W
N \times H \times W
N×H×W。举个例子:该批次内有10张图片,每张图片有三个通道RBG,每张图片的高、宽是H、W,那么均值就是计算10张图片R通道的像素数值总和除以
10
×
H
×
W
10 \times H \times W
10×H×W ,再计算B通道全部像素值总和除以
10
×
H
×
W
10 \times H \times W
10×H×W,最后计算G通道的像素值总和除以
10
×
H
×
W
10 \times H \times W
10×H×W。方差的计算类似。
可训练参数
γ
\gamma
γ和
β
\beta
β的维度等于张量的通道数,在上述例子中,RBG三个通道分别需要一个
γ
\gamma
γ和一个
β
\beta
β,所以
γ
\gamma
γ和
β
\beta
β的维度等于3。
4. 训练与推理时BN中的均值、方差
训
练
时
,
均
值
、
方
差
分
别
是
该
批
次
内
数
据
相
应
维
度
的
均
值
与
方
差
;
\color{blue}{训练时,均值、方差分别是该批次内数据相应维度的均值与方差;}
训练时,均值、方差分别是该批次内数据相应维度的均值与方差;
推
理
时
,
均
值
、
方
差
是
基
于
所
有
批
次
的
期
望
和
方
法
的
期
望
计
算
所
得
,
公
式
如
下
:
\color{blue}{推理时,均值、方差是基于所有批次的期望和方法的期望计算所得,公式如下:}
推理时,均值、方差是基于所有批次的期望和方法的期望计算所得,公式如下:
E
[
x
]
←
E
B
[
μ
B
]
E[x]\leftarrow E_B[\mu_B]
E[x]←EB[μB]
V
a
r
[
x
]
←
m
m
−
1
E
B
[
σ
B
2
]
Var[x]\leftarrow \cfrac{m}{m-1}E_B[\sigma_B^2]
Var[x]←m−1mEB[σB2]
参考:
https://zhuanlan.zhihu.com/p/93643523