(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

计划完成深度学习入门的126篇论文第十一篇,Google的Ioffe和Szegedy使用一种新的regularization方法或者说是新的initialization的方法Batch Normalization。


ABSTRACT&INTRODUCTION

摘要

由于训练过程中各层输入的分布随前一层参数的变化而变化,使得深度神经网络的训练变得复杂。这需要较低的学习率和谨慎的参数初始化,从而降低了训练的速度,并且使得使用饱和非线性来训练模型变得非常困难。我们将这种现象称为内部协变位移 internal covariate
shift
,并通过规范化层输入来解决这个问题。我们的方法将标准化作为模型体系结构的一部分,并对每个训练小批执行标准化,从而获得了它的优势。批处理规范化允许我们使用更高的学习率,并且在初始化时不那么小心。它还起到了调节的作用,在某些情况下消除了dropout的需要。将批处理归一化应用于最先进的图像分类模型中,在训练步骤少14倍的情况下获得了相同的准确率,大大优于原始模型。使用batch norm networks的集合,我们在ImageNet分类的最佳发布结果基础上进行了改进:达到4.9%的top-5验证误差(和4.8%的测试误差),超过了人类评分者的准确度。

介绍

深度学习极大地提高了视觉、语言和许多其他领域的艺术水平。随机梯度下降法(SGD)被证明是一种训练深度网络的有效方法,动量(Sutskever et al., 2013)和Adagrad (Duchi et al., 2011)等SGD变量已经被用来实现艺术表演的状态。SGDΘ网络优化参数,以减少损失

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

x1……N为训练数据集,使用SGD,训练分步骤进行,每一步我们考虑一个小批x1…通过计算,用小批处理来近似损失函数相对于参数的梯度:

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

使用小批量的例子,而不是一次一个例子,在几个方面是有帮助的。首先,小批处理的损失梯度是对训练集的梯度的估计,训练集的质量随着批大小的增加而提高。其次,由于现代计算平台提供的并行性,批处理计算比单个示例的m次计算效率高得多。

随机梯度法简单有效,但需要对模型超参数进行仔细的调整,特别是优化中使用的学习率,以及模型参数的初值。由于每一层的输入都受到前面所有层的参数的影响,使得训练变得复杂,因此随着网络的加深,对网络参数的微小变化会增大。层输入分布的变化带来了一个问题,因为层需要不断地适应新的分布。

当学习系统的输入分布发生变化时,称为协变位移(Shimodaira, 2000)。这通常通过域适应domain adaptation来处理(Jiang, 2008)。然而,协变位移的概念可以扩展到整个学习系统之外,应用到它的各个部分,如子网络或层。考虑网络计算:

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

F1和F2任意转换,参数Θ1Θ2要学会把损失减小到最低限度。Θ2可以被视为如果输入x = F1(u,Θ1)被送入子网络:

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

对于梯度的每一步有:

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

(批量大小m和学习速率α)是完全等价的,对于一个独立的网络F2输入x。因此,输入分配属性,使培训更有效率等拥有相同的训练和测试数据适用于训练之间的分布子。因此,x的分布在一段时间内保持不变是有利的。然后,Θ2不需要调整,以弥补x的分布的变化

固定的子网络输入分布也会对子网络之外的层产生积极的影响。考虑一个具有sigmoid**函数z = g(W u + b)的层,其中u为层输入,权值矩阵W和偏置向量b为需要学习的层参数,g(x) = 1+exp(-x),随着|x|的增加,g(x)趋于零。这意味着对于x = W u+b的所有维度(绝对值较小的维度除外),流向u的梯度将消失,模型将缓慢运行。然而,由于x受到W、b以及下面各层参数的影响,在训练过程中这些参数的变化很可能会使x的多个维度进入非线性饱和状态,从而减慢收敛速度。随着网络深度的增加,这种效应会被放大。在实际应用中,饱和问题和由此产生的消失梯度通常是通过使用校正的线性单元(Nair ;(Hinton, 2010) ReLU(x) = max(x, 0),careful initialization (Bengio ;Glorot, 2010;Saxe et al., 2013),和低学习率。然而,如果我们能够确保非线性输入的分布在网络训练时保持更稳定,那么优化器就不太可能陷入饱和状态,并且训练将会加速。在训练过程中,我们将深度网络内部节点分布的变化称为内部协变移位。消除它可以保证更快的培训。

我们提出了一种新的机制,我们称之为批处理规范化,它向减少内部协变移位迈出了一步,并通过这种方式显著加快了深度神经网络的训练。它通过修正层输入的平均值和方差的规范化步骤来实现这一点。批处理规范化还可以减少梯度对参数或初始值的依赖,从而对通过网络的梯度流产生有益的影响。这使我们能够使用更高的学习率,而没有出现差异的风险。此外,批处理规范化规范了模型,减少了drop的需要(Srivastava et al., 2014)。最后,批处理标准化通过防止网络陷入饱和模式,使饱和非线性成为可能。

在4.2节中,我们对表现最好的ImageNet分类网络应用批处理规范化,结果表明,我们仅使用7%的训练步骤就可以匹配其性能,并且可以大大超过其准确度。使用这些经过批处理规范化训练的网络的集合,我们获得了在ImageNet分类中最广为人知的结果的基础上改进的前5个错误率。


Towards Reducing Internal Covariate Shift

我们将内协变位移定义为训练过程中网络参数的变化引起的网络**分布的变化。为了提高训练质量,我们寻求减少内部协变位移。通过固定层输入x在训练过程中的分布,我们期望提高训练速度。(LeCun et al.,1998b;Wiesler,(Ney, 2011)认为如果网络的输入变白,网络训练收敛速度会更快,线性变换后均值和单位方差为零且相关。当每一层观察下面各层所产生的输入时,对每一层的输入进行相同的白化将是有利的。通过对每一层的输入进行白化,我们将朝着实现固定的输入分布迈出一步,从而消除内部协变位移的不良影响。

我们可以考虑在每一个训练步骤或某一段时间内,通过直接修改网络或改变优化算法的参数,使其依赖于网络**值(Wiesler et al., 2014;Raiko等,2012;Povey等,2014;Kavukcuoglu)。但是,如果这些修改中穿插了优化步骤,那么梯度下降步骤可能会尝试以需要更新归一化的方式更新参数,从而降低梯度步骤的效果。例如,考虑一个输入u的层,它添加了习得偏差b,并通过减去在训练数据上计算的**的平均值来规范化结果:(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift,其中(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift是x除以训练集的值的集合,(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift。如果梯度下降步骤忽略了E[x]对b的依赖关系,则更新(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift,其中(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift。那么(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift。因此,对b的更新和随后的标准化更改的组合不会导致层输出的更改,因此也不会导致损失。随着训练的继续,b将无限增长,而损失将保持不变。如果规范化不仅集中于**,而且扩展了**范围,那么这个问题会变得更糟。我们在初始实验中已经从经验上观察到这一点,当在梯度下降步骤之外计算归一化参数时,模型就会爆炸。

上述方法的问题是,梯度下降优化没有考虑到进行归一化的事实。为了解决这个问题,我们希望确保对于任何参数值,网络总是生成具有所需分布的**。这样做会让失去的梯度对模型参数占正常化,Θ和依赖的模型参数。再次将x作为层输入,作为a处理向量,X是这些输入在训练数据集上的集合,然后标准化可以写成一个变换

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

这不仅取决于给定的训练例子但在所有例子x -每个取决于Θ如果x是由另一个层。对于反向传播,我们需要计算雅可比矩阵

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

忽视后一项将导致上述爆炸。在这个框架中,对层输入进行增白是很昂贵的,因为它需要计算协方差矩阵(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift及其平方根的倒数,从而产生的**函数(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift,以及这些变换对反向传播的导数。这促使我们寻找一种替代方案,以可微分的方式执行输入标准化,并且不需要在每次参数更新之后对整个训练集进行分析。

以前的一些方法(如:(Simoncelli, 2008))使用在单个训练示例上计算的统计信息,或者在图像网络的情况下,在给定位置的不同feature map上计算统计信息。然而,这将通过丢弃绝对**规模来改变网络的表示能力。我们希望通过规范化与整个训练数据统计相关的训练示例中的**来保存网络中的信息。


Normalization via Mini-Batch Statistics

由于对每一层的输入进行完全whitening非常昂贵,并且不是处处可微分的,因此我们做了两个必要的简化。首先,我们不需要对层输入和层输出中的特征进行联合whitening,而是对每个标量特征分别进行归一化,使其均值为0,方差为1。对于输入为d维的层,(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift,我们将标准化每个维度:

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

如(LeCun et al., 1998b)所示,即使特征不相关,这种归一化也能加快收敛速度。请注意,简单地规范化一个层的每个输入可能会改变该层可以表示的内容。例如,标准化一个sigmoid的输入会将它们限制在非线性的线性范围内。为了解决这个问题,我们要确保插入到网络中的转换可以表示转换。为此,我们引入,对于每个**(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift,一对参数(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift,规模和转变归一化值:

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

这些参数与原始模型参数一起学习,恢复了网络的表示能力。事实上,通过设置(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift,我们可以恢复原来的**,如果这是最优的事情。

在批处理设置中,每个训练步骤都基于整个训练集,我们将使用整个集来规范化**。然而,当使用随机优化时,这是不切实际的。因此,我们做了第二个简化:由于我们在随机梯度训练中使用了小批,每个小批产生每个**的均值和方差的估计值each mini-batch produces estimates of the mean and variance。这样,用于归一化的统计量就可以完全参与梯度反向传播。注意,使用小批量是通过计算每个维度的方差而不是联合协方差实现;;在联合的情况下,将需要正则化,因为小批处理的大小可能小于被漂白的**的数量,从而产生奇异协方差矩阵。考虑一个大小为m的小批处理B。

由于规范化是独立应用于每个**的,因此让我们将重点放在一个特定的**x(k)上,为了清楚起见,我们省略了k。在小批处理中,我们有这个**的m个值

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

令标准化值为(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift,它们的线性变换是(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift。变换是:

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

Batch Normalizing Transform

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

BN转换可以添加到网络中来操作任何**。符号(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift我们表明,参数γ和β是需要学习,但应该注意的是,BN变换不独立过程**在每个培训的例子。(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift都取决于训练例子和mini-batch中的其他例子。缩放和移位的值y被传递到其他网络层。归一化**xb是我们的变换内部的,但是它们的存在是至关重要的。值的分布的xb的期望值0和1的方差,只要每个mini-batch抽样从相同的元素分布,如果我们忽视ǫ。这可以通过观察(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift,并取期望得到。每个**xb正常化(k)可以被视为一个输入子组成的线性变换(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift,其次是其他处理由原来的网络。这些子网络输入均具有固定的均值和方差,虽然这些归一化xb(k)的联合分布在训练过程中会发生变化,但我们希望引入归一化输入会加速子网络的训练,从而加速整个网络的训练。

在训练过程中,我们需要通过这个变换反向传播损失梯度,并计算关于BN变换参数的梯度。我们使用链式法则,如下(简化之前):

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

因此,BN变换是一种可微分变换,它将规范化的**引入到网络中。这确保了在模型是训练时,层可以在显示较少内部协变位移的输入分布上继续学习,从而加速训练。此外,应用于这些规范化**的学习仿射变换允许BN变换表示身份变换并保留网络容量。


1. Training and Inference with BatchNormalized Networks

根据Alg. 1,为了对网络进行批处理规范化,我们指定一个**的子集,并为每个**插入BN转换。任何层以前接收x作为输入,现在接收BN(x)。采用批处理归一化的模型可以使用批处理梯度下降法进行训练,或者使用小批处理大小为m > 1的随机梯度下降法,或者使用Adagrad等其变体进行训练(Duchi et al.,2011)。依赖于小批处理的**的规范化允许有效的培训,但在推断期间既不是必需的,也不是理想的;我们希望输出只依赖于输入,这是确定的。为此,一旦网络训练,我们使用正常化

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

而不是mini-batch。忽视(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift,这些规范化的**有相同的意思是0和方差1在训练。我们使用无偏方差估计(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift,期望是mini-batches的大小m和(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift的样本方差。使用移动平均,我们可以根据它的训练跟踪模型的准确性。由于平均值和方差在推理过程中是固定的,因此标准化只是应用于每个**的线性转换。可能进一步组成比例由γ和β转变,产生一个线性变换代替BN (x)。算法2总结了批量归一化网络的训练过程。

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

 

2. Batch-Normalized Convolutional Networks

批处理规范化可以应用于网络中的任何**函数。这里,我们关注转换由一个仿射变换和一个元素非线性组成:

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

其中W和b为模型的学习参数,g(·)例如像sigmoid或ReLU等非线性。这个公式涵盖了全连通层和卷积层。我们在立即添加BN变换非线性之前,通过规范化x = W u + b。我们也可以归一化层的输入u,但是因为你可能是另一个非线性的输出,其分布的形状可能会改变在训练,并限制其第一和第二时刻不会消除协变量的转变。相反,W u + b更可能具有对称的非稀疏分布,即更接近高斯分布(Hyv arinen;Oja, 2000);规范化它可能会产生分布稳定的**。注意,因为我们正常W u + b, b偏差可以忽略,因为其效果将取消后续的意思是减法(偏见的角色被归入β在Alg。1)。因此,z = g (W u + b)可以被下面式子取代:

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

BN的变换是独立应用于每个维度的x = W u,并且也是对每一个维度单独学习参数(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift)。

对于卷积层,我们还希望归一化符合卷积特性,这样相同feature map的不同元素,在不同的位置,就可以以相同的方式归一化。为了实现这一点,我们在一个小批处理中对所有位置的所有**进行了规范化。Alg1,我们让B中所有值的集合特征映射在mini-batch和空间位置的元素对于mini-batch大小m和特征的地图大小pxq,我们使用的有效mini-batch大小(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift。我们学习两个参数γ(k)和β(k)功能映射,而不是每个**。对Alg. 2进行了类似的修改,以便在推断期间,BN转换对给定feature map中的每个**应用相同的线性转换。

 

3. Batch Normalization enables higher learning rates

在传统的深度网络中,过高的学习率可能会导致梯度爆炸或消失,并陷入糟糕的局部极小值。批处理规范化有助于解决这些问题。通过对整个网络的**进行规范化,它可以防止参数的微小变化在梯度上放大为更大的、次优的**变化;例如,它可以防止训练陷入非线性的饱和状态。

批处理规范化也使得训练对参数尺度更有弹性。通常情况下,学习率越大,层参数的尺度越大,在反向传播过程中梯度越大,导致模型爆炸。然而,使用批处理规范化,通过层的反向传播不受其参数规模的影响。实际上,对于标量a,

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

我们可以证明

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

维度不影响层雅可比矩阵,因此梯度传播也不影响。权重越大梯度越小,批处理归一化可以稳定参数的增长。我们进一步推测批处理归一化可能导致层雅可比矩阵奇异值接近1,这对训练是有益的(Saxe et al., 2013)。考虑两个具有规范化输入的连续层,以及这些规范化向量之间的转换:(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift。如果我们假设x和z是高斯且不相关的,并且(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift是给定模型参数的线性变换,那么x和z都有单位协方差,(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift。因此,(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift,因此J的所有奇异值都等于1,这就保留了反向传播时梯度的大小。在现实中,变换不是线性的,归一化的值不能保证是高斯的,也不是独立的,但是我们希望批处理归一化能帮助梯度传播更好地表现。批处理归一化对梯度传播的精确影响仍是一个有待进一步研究的领域。

4. Batch Normalization regularizes the model

当使用批处理规范化进行训练时,可以将训练示例与小批处理中的其他示例结合使用,并且训练网络不再为给定的训练示例生成确定性值。在实验中,我们发现这种效应有利于网络的推广。dropout (Srivastava et al., 2014)通常用于减少过拟合,而在批归一化网络中,我们发现dropout可以被移除,也可以被减弱。


Experiments

1. Activations over time

为了验证内部协变移位对训练的影响,以及批处理规范化对抗训练的能力,我们考虑了在MNIST数据集上预测数字类的问题(LeCun et al., 1998a)。我们使用一个非常简单的网络,以一个28x28的二进制图像作为输入,和3个完全连接的隐藏层,每个层有100个**。每个隐层用sigmoid非线性计算y = g(W u+b),权值W初始化为小的随机高斯值。最后一个隐藏层之后是一个完全连接的层,有10个**(每个类一个)和交叉熵损失。我们对网络进行了50000步的训练,每个小批包含60个示例。我们向网络的每个隐藏层添加了批处理规范化,如第3.1节所示。我们感兴趣的是基线和批处理规范化网络之间的比较,而不是在MNIST上实现最先进的性能(所描述的体系结构没有做到这一点)。

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

图1(a)显示了随着训练的进行,两个网络对输出的测试数据的正确预测的比例。批归一化网络具有较高的测试精度。为了探究原因,我们在培训过程中研究了原始网络N和批标准化网络Ntr BN (Alg. 2)中对sigmoid的输入。在图1(b,c)中,我们展示了对于每一个网络的最后一个隐含层的一个典型**,它的分布是如何演变的。随着时间的推移,原始网络中的分布在均值和方差上都发生了显著的变化,这使得后续层的训练变得复杂。与此相反,随着训练的进行,批归一化网络中的分布更加稳定,这有助于训练的进行。

2. ImageNet classification

我们将批处理规范化应用于Inception网络的一个新变体(Szegedy et al., 2014),并对ImageNet分类任务进行了训练(Russakovsky et al., 2014)。网络中有大量的卷积层和池化层,使用softmax层来预测图像类,有1000种可能。卷积层使用ReLU作为非线性。(Szegedy et al., 2014)中描述的网络的主要区别在于,将5个5卷积层替换为2个连续的3个3卷积层,最多128个滤波器。网络包含13.6·106个参数,除了顶部softmax层,没有完全连接的层。更多细节在附录中给出。在本文的其余部分中,我们将此模型称为Inception。模型使用动量随机梯度下降的一个版本(Sutskever et al., 2013)进行训练,使用32的小批量大小。培训是使用大规模分布式架构进行的(类似于Dean et al., 2012)。在训练过程中,所有的网络都通过计算@1的验证精度进行评估,即在一个外置集合上,使用每张图像的单个裁剪,从1000种可能性中预测正确标签的概率。在我们的实验中,我们使用批处理规范化评估了初始化的几个修改。在所有情况下,批处理规范化都以卷积的方式应用于每个非线性输入,如3.2节所述,同时保持体系结构的其余部分不变。

2.1 Accelerating BN Networks

仅仅向网络中添加批处理规范化并不能充分利用我们的方法。为此,我们进一步改变了网络及其训练参数,如下:

  • Increase learning rate

提高学习率。在批量标准化模型中,我们能够从更高的学习率中实现训练加速,并且没有不良副作用(第3.3节)。

  • Remove Dropout

删除dropout。如第3.4节所述,批处理规范化实现了与drop相同的一些目标。在不增加过拟合的情况下,从改进的BN-Inception中去除dropout加速了训练。

  • Reduce the L2 weight regularization

减少L2的权重正则化。在初始化阶段,模型参数上的L2损失控制过拟合,而在修改后的bn -初始化阶段,这种损失的权重减少了5倍。我们发现,这提高了提交验证数据的准确性。

  • Accelerate the learning rate decay

加速学习速率衰减。在培训初期,学习率呈指数衰减。因为我们的网络训练比初始阶段快,所以我们的学习率降低了6倍。

  • Remove Local Response Normalization

移除局部响应标准化。当Inception和其他网络(Srivastava et al., 2014)从中受益时,我们发现使用批处理标准化是没有必要的。

  • Shuffle training examples more thoroughly

更彻底地Shuffle训练示例。我们启用了训练数据的分片内洗牌,这可以防止相同的示例总是出现在一个小批中。这导致验证精度提高了约1%,这与批处理规范化作为正则化器的观点一致(第3.4节):我们的方法中固有的随机性在每次看到不同的示例时应该是最有益的。

  • Reduce the photometric distortions

减少光度失真。由于batch norm networks训练速度更快,且每个训练示例的观察次数更少,因此我们通过减少对真实图像的扭曲,让训练者关注更多真实图像。

 

2.2 Single-Network Classification

我们对以下网络进行了评估,均以LSVRC2012训练数据为基础,并对验证数据进行了测试:Inception: Section 4.2开头描述的网络,初始学习率为0.0015。基线:与初始化相同,在每个非线性之前进行批处理标准化。

BN-x5:使用批处理规范化的初始化和第4.2.1节中的修改。初始学习率提高了5倍,达到0.0075。相同的初始学习率的增加导致模型参数达到机器无穷大。BN-x30:类似于BN-x5,但初始学习率为0.045(初始学习率的30倍)。

BN-x5- sigmoid:类似于BN-x5,但具有sigmoid非线性,g(t) = 1+exp(1 x)而不是ReLU。我们还尝试用sigmoid来训练最初的Inception,但是模型仍然保持了与chance相当的精度。

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

在图2中,我们展示了作为训练步骤数量函数的网络的验证准确性。经过31·106个训练步骤,Inception的准确率达到了72.2%。图3显示了对于每个网络,达到相同72.2%准确率所需要的训练步骤数,以及网络达到的最大验证准确率和达到该准确率所需要的步骤数。

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift

通过只使用批处理规范化(BN-Baseline),我们在不到一半的培训步骤中就可以匹配初始化的准确性。通过应用第4.2.1节中的修改,我们显著提高了网络的训练速度。BN-x5需要比Inception少14倍的步骤才能达到72.2%的精确度。有趣的是,进一步提高学习率(BN-x30)会导致模型最初的训练速度变慢,但最终会达到更高的精度。经过6·106个步骤,达到74.8%,比Inception要求的步骤少5倍,达到72.2%。

我们还验证了内部协变位移的减小使得在使用sigmoid作为非线性时,可以训练具有批处理归一化的深度网络,尽管这种网络的训练难度是众所周知的。BN-x5-Sigmoid的准确率达到69.8%。如果没有批处理规范化,使用sigmoid初始化的精度永远不会超过1/1000。

 

2.3 Ensemble Classification

目前报道的ImageNet大规模视觉识别竞赛的最佳结果是传统模型的深度图像集成(Wu et al., 2015)和集成模型(He et al., 2015)。后者报告由ILSVRC服务器计算的前5个错误为4.94%。这里我们报告了前5位的验证错误4.9%,测试错误4.82%(根据ILSVRC服务器)。根据Russakovsky et al., 2014,这在之前的最佳结果的基础上得到了改进,并且超过了人类评分者的估计精度。

在我们的集成中,我们使用了6个网络。每一个都基于BN-x30,并通过以下方式进行了修改:增加卷积层的初始权值;使用辍学率(辍学率为5%或10%,而初始阶段为40%);并使用非卷积的,每**批处理规范化与模型的最后隐藏层。经过6·106步左右的训练,每个网络都达到了最大的准确率。集成预测是基于组成网络预测的类概率的算术平均值。集成和多rop推理的细节类似于(Szegedy et al., 2014)。

我们在图4中演示了批处理规范化允许我们在ImageNet分类挑战基准上以健康的幅度设置新的state-of-the-art。
 

(11)[ICML15] Batch Norm: Accelerating Deep Network Training by Reducing Internal Covariate Shift


Conclusion

我们提出了一种新的机制,可以显著加快深度网络的训练。它的前提是协变位移covariate shift,这是已知的复杂的训练机器学习系统,也应用于子网络,将其从网络的内部**中移除,可能有助于培训。我们所提出的方法的威力来自于规范化**,以及将这种规范化合并到网络架构本身。这可以确保任何用于训练网络的优化方法都能适当地处理规范化。为了支持深度网络训练中常用的随机优化方法,我们对每个小批进行归一化,并通过归一化参数对梯度进行反向传播。批处理规范化每次**只添加两个额外的参数,这样做可以保留网络的表示能力。提出了一种利用批归一化网络构造、训练和执行推理的算法。所得到的网络可以用饱和非线性进行训练,对增加的训练率具有更强的容忍度,并且通常不需要中途退出进行正则化。

只需将批处理规范化添加到最新的图像分类模型中,就可以大大加快训练速度。通过进一步提高学习率,去除dropout,以及运用批处理归一化所提供的其他修改,我们只用一小部分的训练步骤就达到了之前的技术状态,然后在单网络图像分类中打败了目前的技术状态。此外,通过将多个经过训练的模型与批处理规范化相结合,我们的性能比ImageNet上最知名的系统要好得多。

有趣的是,我们的方法与标准层相似(Bengio, 2013),尽管这两种方法的出发点和执行的任务非常不同。批处理归一化的目标是在整个训练过程中实现**值的稳定分布,在我们的实验中,我们将其应用于非线性之前,因为在非线性之前,匹配第一和第二矩更有可能得到稳定的分布。相反地,(Bengio, 2013)将标准化层应用于非线性输出,导致稀疏**。在我们的大规模图像分类实验中,我们没有观察到非线性输入是稀疏的,无论是有或没有批处理标准化。批正常化的其他显著的差异化特征包括规模和学习转变,使BN变换代表身份(标准化层不需要这个,因为随之而来的线性变换,从概念上讲,吸收必要的规模和转移),卷积处理层,确定性推理并不取决于mini-batch和每个卷积batchnormalizing层网络中。

在这项工作中,我们没有探索批处理规范化可能支持的所有可能性。我们未来的工作包括将我们的方法应用于递归神经网络(Pascanu et al., 2013),其中内部协变移位和消失或爆炸的梯度可能特别严重,这将使我们能够更彻底地检验归一化改善梯度传播的假设(第3.3节)。我们计划调查是否批标准化有助于领域适应气候变化,在其传统意义上即标准化执行的网络是否会使它更容易推广到新的数据分布,也许只有一个人口的重新计算均值和方差(Alg2)。最后,我们相信的进一步理论分析算法将允许更多的改进和应用