每个训练步骤的批处理设置是基于整个训练集的,将使用整个训练集来标准化激活值。然而,当使用随机优化时,这是不切实际的。因此,做了第二个简化:由于在随机梯度训练中使用小批量,每个小批量产生每次激活平均值和方差的估计。这样,用于标准化的统计信息可以完全参与梯度反向传播。通过计算每一维的方差而不是联合协方差,可以实现小批量的使用;在联合情况下,将需要正则化,因为小批量大小可能小于白化的激活值的数量,从而导致单个协方差矩阵
批标准化步骤
BN变换可以添加到网络上来操纵任何激活。在公式\(y=BN_{\gamma,\beta}(x)\)中,参数\(\gamma\)和\(\beta\)需要进行学习,但应该注意到在每一个训练样本中BN变换不单独处理激活。相反,\(BN_{\gamma,\beta}(x)\)取决于训练样本和小批量数据中的其它样本。所有的这些子网络输入都有固定的均值和方差,尽管这些标准化的\(\hat {x} ^{(k)}\)的联合分布可能在训练过程中改变,但预计标准化输入的引入会加速子网络的训练,从而加速整个网络的训练
BN变换是将标准化激活引入到网络中的可微变换。这确保了在模型训练时,层可以继续学习输入分布,表现出更少的内部协变量转移,从而加快训练。此外,应用于这些标准化的激活上的学习到的仿射变换允许BN变换表示恒等变换并保留网络的能力
批量标准化网络的训练与推理
为了批标准化一个网络,根据上面的算法,指定一个激活的子集,然后在每一个激活中插入BN变换。任何以前接收x作为输入的层现在接收BN(x)作为输入。采用批标准化的模型可以使用批梯度下降,或者用小批量数据大小为m>1的随机梯度下降,或使用它的任何变种例如Adagrad进行训练。依赖小批量数据的激活值的标准化可以有效地训练,但在推断过程中是不必要的也是不需要的;希望输出只确定性地取决于输入。为此,一旦网络训练完成,将使用总体统计来进行标准化,而不是小批量数据统计
\[
\hat x = \frac {x - E[x]}{\sqrt {Var[x] + \epsilon}}
\]
此时,如果忽略\(\epsilon\),这些标准化的激活具有相同的均值0和方差1,使用无偏方差估计\(Var[x] = \frac{m}{m-1} E_{\beta} [\sigma^2_{\beta}]\),其中期望是在大小为m的小批量训练数据上得到的,\(\sigma^2_{\beta}\)是其样本方差。使用这些值移动平均,在训练过程中可以跟踪模型的准确性。由于均值和方差在推断时是固定的,因此标准化是应用到每一个激活上的简单线性变换。它可以进一步由缩放\(\gamma\)和转移\(\beta\)组成,以产生代替BN(x)的单线性变换
训练批标准化网络的过程
批标准化卷积网络
批标准化可以应用于网络的任何激活集合。这里专注于仿射变换和元素级非线性组成的变换
\[
z = g(Wu + b)
\]
其中W和b是模型学习的参数,g(⋅)是非线性例如sigmoid或ReLU。这个公式涵盖了全连接层和卷积层。在非线性之前通过标准化x=Wu+b加入BN变换。也可以标准化层输入u,但由于u可能是另一个非线性的输出,它的分布形状可能在训练过程中改变,并且限制其第一矩或第二矩不能去除协变量转移。相比之下,Wu+b更可能具有对称,非稀疏分布,即“更高斯”,对其标准化可能产生具有稳定分布的激活
由于对Wu+b进行标准化,偏置b可以忽略,因为它的效应将会被后面的中心化取消(偏置的作用会归入到算法1的β)。因此,z=g(Wu+b)被\(z=g(BN(Wu))\)替代,其中BN变换独立地应用到x=Wu的每一维,每一维具有单独的成对学习参数\(\gamma^{(k)},\beta^{(k)}\)