另外,对于卷积层,希望标准化遵循卷积特性——为的是同一特征映射的不同元素,在不同的位置,以相同的方式进行标准化。为了实现这个,在所有位置联合标准化了小批量数据中的所有激活。在第一个算法中,让\(B\)是跨越小批量数据的所有元素和空间位置的特征图中所有值的集合——因此对于大小为m的小批量数据和大小为p×q的特征映射,使用有效的大小为m' = \(|B|\) = m ⋅ pq 的小批量数据。每个特征映射学习一对参数\(\gamma^{(k)}\)和\(\beta^{(k)}\),而不是每个激活。第二个算法进行类似的修改,以便推断期间BN变换对在给定的特征映射上的每一个激活应用同样的线性变换
批标准化可以提高学习率
通过标准化整个网络的激活值,在数据通过深度网络传播时,它可以防止层参数的微小变化被放大。批标准化也使训练对参数的缩放更有弹性。通常,大的学习率可能会增加层参数的缩放,这会在反向传播中放大梯度并导致模型爆炸。然而,通过批标准化,通过层的反向传播不受其参数缩放的影响。对于标量\(\alpha\)
\[
BN(Wu)=BN((aW)u)
\]
因此,\(\frac {∂BN((aW)u)}{∂u}= \frac {∂BN(Wu)}{∂u}\)。因此,标量不影响层的雅可比行列式,从而不影响梯度传播。此外,\(\frac {∂BN((aW)u)}{∂(aW)}=\frac {1}{a}⋅\frac {∂BN(Wu)}{∂W}\),因此更大的权重会导致更小的梯度,并且批标准化会稳定参数的增长。研究者进一步推测,批标准化可能会导致雅可比行列式的奇异值接近于1,这被认为对训练是有利的
实验
实验表明,批标准化有助于网络训练的更快,取得更高的准确率,原因是随着训练的进行,批标准化网络中的分布更加稳定,这有助于训练
加速BN网络
提高学习率。在批标准化模型中,能够从高学习率中实现训练加速,没有不良的副作用
删除丢弃。发现从BN-Inception中删除丢弃可以使网络实现更高的验证准确率
推测批标准化提供了类似丢弃的正则化收益,因为对于训练样本观察到的激活受到了同一小批量数据中样本随机选择的影响
更彻底地搅乱训练样本。这导致验证准确率提高了约1%
减少L2全中正则化。虽然在Inception中模型参数的L2损失会控制过拟合,但在修改的BN-Inception中,损失的权重减少了5倍。研究者发现这提高了在提供的验证数据上的准确性
通过仅使用批标准化(BN-Baseline),可以在不到Inception一半的训练步骤数量内将准确度与其相匹配,这显著提高了网络的训练速度
结论提出的方法(批标准化)大大加快了深度网络的训练。该方法从标准化激活以及将这种标准化结合到网络体系结构本身中汲取了它的力量。批处理规范化每次激活只添加两个额外的参数,并且这样做保留了网络的表示能力。本文提出了一种用批量标准化网络构建、训练和执行推理的算法。所得到的网络可以用饱和非线性进行训练,更容忍增加的训练速率,并且通常不需要dropout来进行正规化
总结为什么需要它
在BN出现之前,我们的归一化操作一般都在数据输入层,对输入的数据进行求均值以及求方差做归一化,但是BN的出现打破了这一个规定,我们可以在网络中任意一层进行归一化处理。因为我们现在所用的优化方法大多都是min-batch SGD,所以我们的归一化操作就成为Batch Normalization
神经网络层之前的神经网络层的参数变化,将会引起神经网络每一层输入数据的分布产生了变化,这使得训练一个深度神经网络会非常困难。作者称这个现象为:internal covariate shift
BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同的分布的方法,是用来解决“Internal Covariate Shift”问题的
Mini-Batch SGD相对于One Example SGD的两个优势:梯度更新方向更准确;并行计算速度快
它的思想
BN的基本思想是:因为深层神经网络在做非线性变换前的激活输入值(就是那个x=WU+B,U是输入)随着网络深度加深或者在训练过程中,其分布逐渐发生偏移或者变动,之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近,这导致反向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因,而BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布,这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化,即通过这种方法让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度