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