深度学习-BN(Batch Normalization)

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 μBm1i=1mxi σ 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 σB2m1i=1m(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就是下图中蓝色的部分。
深度学习-BN(Batch Normalization)_第1张图片
均值的计算,就是在一个批次内,将每个通道中的数字单独加起来,再除以 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]m1mEB[σB2]
参考:
https://zhuanlan.zhihu.com/p/93643523

你可能感兴趣的:(深度学习,人工智能)