Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift论文翻译

Internal Covariate Shift:
1)定义:训练时,上一层的参数的更新改变后,下一层的输入的分布就会变化,使训练变得复杂。
2)缺点:
1.学习率不能太高(参数不能变化太剧烈),进而导致训练缓慢
2.层参数初始化必须细致
3.使用饱和非线性激活函数(如sigmoid,正负两边都会饱和)的训练很困难
3)解决方法:
归一化输入层
mini-batch:
1)优点:简单高效,训练集的质量随着批处理大小的增加而提高,比单个样本计算更有效。
2)缺点:需要对模型超参数进行仔细的调优,随着网络加深,对网络的微小变换也会被放大。
Batch Normalization:
我们就在非线性变换之前,即对 Wu

Abstract

训练深度神经网络时,随着前一层参数的变化,各层输入的分布也会发生变化。较低的学习速率和仔细的参数初始化的需求降低了训练速度,并使得用饱和非线性函数来训练模型变得非常困难。我们将这种现象称为内部协变量移位,并通过归一化层输入来解决这个问题。我们方法的优势是将归一化作为模型体系结构的一部分,并为每个mini-batch执行归一化化。批处理规范化允许我们使用更高的学习速率,并且在初始化时不用那么小心。它还作为一个正则化,在某些情况下消除了dropout的需要。应用于最先进的图像分类模型时,批处理归一化能以14分之一的训练步骤达到同样的精度,大大超越了原始模型。使用一组BN网络,我们改进了在ImageNet分类上发表的最佳结果:4.9%的top-5验证集误差(和4.8%测试集误差),超过了human raters的准确率。

1. Introduction

深度学习极大地提高了视觉、语言和许多其他领域的技术水平。随机梯度下降(SGD)已被证明是一种有效的训练深度网络的方法,SGD变体如momentum (Sutskever et al., 2013)和Adagrad (Duchi et al., 2011)已被用来实现最先进的性能状态。SGD优化网络参数Θ,以最小化损失:
在这里插入图片描述
其中,x1……N是训练数据集。SGD将训练分为多个步骤,每一步骤中我们考虑一个mini-batch:x1…xm,尺寸为m。通过计算
在这里插入图片描述
用mini-batch的方法来近似损失函数相对于参数的梯度。使用mini-batch的样本(而不是一次一个),在很多方面都是有好处的。首先,小批处理上的损失梯度是对训练集的梯度的估计,训练集的质量随着批处理大小的增加而提高。其次,由于现代计算平台提供的并行性,批处理的计算可能比单个样本的m次计算更有效。

虽然随机梯度法简单高效,但它需要对模型超参数进行仔细的调优,特别是用于优化的学习率,以及模型参数的初始值。由于每个层的输入都受到前面所有层的参数的影响,所以随着网络变得更深,对网络参数的微小变化也会被放大,这使得训练变得更加复杂。

层输入分布的变化带来了一个问题——层需要不断地适应新的分布。当一个学习系统的输入分布发生变化时,它被称为经历协变量移位(Shimodaira, 2000)。这通常是通过域适应来处理的(Jiang, 2008)。然而,协变量移位的概念可以扩展到整个学习系统之外,应用到它的各个部分,例如子网络或层。考虑一个网络计算:
在这里插入图片描述
其中,F1和F2是任意变换换,参数Θ1,Θ2是可学习参数用于最小化损失ℓ。Θ2的学习可以看做是输入为x = F1(u, Θ1)然后喂入子网络ℓ = F2(x, Θ2)的子任务。
例如,一个梯度下降步骤
在这里插入图片描述
(对于批量大小m和学习率α)与输入为x的独立网络F2完全等价。因此,使训练更有效的输入分布特性——例如训练和测试数据之间的分布相同——也适用于子网络的训练。因此,随着时间的推移,x的分布保持不变是有利的。然后,Θ2不必重新调整来补偿x分布的变化。

子网的输入的固定分布也会对子网外部的层产生积极的影响。考虑一个sigmoid激活函数z = g(wu + b)的层,其中u为层输入,权重矩阵W和偏置向量b为待学习的层参数,g(x) = 1/(1+exp(-x))。当|x|增加时,g’(x)趋向与0。这意味着对于x = Wu +b的所有维度(除了那些绝对值较小的维度),流向u的梯度将消失,模型将缓慢训练。然而,由于x受W、b及以后面各层参数的影响,在训练过程中,这些参数的变化可能会使x的多个维度进入非线性饱和状态,从而减慢收敛速度。这种效应随着网络深度的加深而增强。在实际应用中,饱和问题和由此产生的消失梯度通常用修正的线性单元(Nair和amp;Hinton, 2010) ReLU(x) = max(x, 0),仔细的初始化(Bengio &Glorot, 2010;(Saxe et al., 2013),和小的学习率来处理。然而,如果我们可以确保非线性输入的分布在网络训练时更稳定,那么优化器就不太可能陷入饱和状态,训练就会加速。

在训练过程中,我们将深层网络内部节点分布的变化称为内部协变量移位。消除它可以提供更快的训练。我们提出了一种新的机制,我们称之为批处理归一化,它可以减少一定的内部协变量移位,并在此过程中极大地加速了深度神经网络的训练。它通过固定层输入的均值和方差的标准化步骤来实现这一点。批处理归一化还对通过网络的梯度流有积极的影响,因为它减少了梯度对参数或其初始值的依赖。这使我们能够使用更高的学习率,而不存在出现发散的风险。此外,批处理归一化使模型正则化,减少了Dropout的需要(Srivastava et al.,2014)。最后,批处理归一化可以防止网络陷入饱和模式,这使得使用饱和非线性成为可能。
在第4.2节中,我们对性能最好的ImageNet分类网络应用了批处理归一化,结果表明,我们只需使用7%的训练步骤就可以达到它的性能,并且可以大大提高它的精度。通过使用批处理归一化训练的网络集合,我们实现了更低的top-5的错误率,提高了ImageNet分类的最佳结果。

2. Towards Reducing Internal Covariate Shift

我们将内部协变位移定义为训练过程中由于网络参数的变化而引起的网络激活分布的变化。为了提高训练质量,我们试图减少内部协变量移位。随着训练的进行,通过固定层输入x的分布,我们期望提高训练速度。早已为人所知的是(LeCun et al., 1998b; Wiesler & Ney,2011)如果将网络的输入白化,网络训练收敛速度更快。(白化——通过线性变换得到零均值和单位方差,并去相关)。由于每一层都观察到下面各层所产生的输入,因此对每一层的输入进行相同的白化处理将是有利的。通过对每一层的输入进行白化,我们将获得输入的固定分布,从而消除内部协变量移位的不良影响。
我们可以通过直接修改网络或者根据网络激活值改变优化算法的参数,来考虑在每个训练步骤或在某个区间的白化激活(Wiesler et al., 2014; Raiko et al., 2012;Povey et al., 2014; Desjardins & Kavukcuoglu)。但是,如果这些修改与优化步骤穿插在一起,那么梯度下降步骤可能会尝试以需要更新归一化的方式更新参数,从而降低梯度步骤的效果。例如,考虑一个层,其输入为u,学习到的偏置为b,通过减去在训练集上计算的激活值的均值来对结果进行归一化:
在这里插入图片描述
其中x=u+b,
在这里插入图片描述
是x训练集值的集合,
在这里插入图片描述
如果梯度下降忽略了E[x]对b的依赖关系,那它将更新b←b+Δb,其中Δb正比于−∂ℓ/∂xˆ,然后u+(b+Δb)−E[u+(b+Δb)]=u+b−E[u+b]。因此,对b的更新和随后的归一化更改的组合不会导致层的输出和损失的更改。随着训练的继续,b将会无限的成长,而损失将会固定。如果归一化不仅集中而且扩展激活,这个问题会变得更糟。在最初的实验中,我们已经观察到了这一点,当归一化参数在梯度下降步外计算时,模型会爆炸。

上述方法的问题是,梯度下降优化没有考虑到归一化的事实。为了解决这个问题,我们希望确保对于任何参数值,网络总是生成具有所需分布的激活。这样做将允许关于模型参数损失的梯度来解释归一化以及它对模型参数Θ的依赖。设x为层输入,将其看做向量,χ为训练集中输入的集合,归一化可被写为:
在这里插入图片描述
这不仅取决于给定的训练样本x,而且依赖于所有样本χ——它们中的每一个都依赖于Θ,如果x是由另一层生成的。对于反向传播,我们需要计算雅可比矩阵
在这里插入图片描述
忽略后一项会导致上面描述的爆炸。在这个框架中,白化层输入是昂贵的,因为它需要计算协方差矩阵
在这里插入图片描述
和它的逆平方根
在这里插入图片描述
从而产生白化的激活以及这些变换的导数,以便反向传播。这促使我们寻找一种替代方法,以一种可微的方式执行输入归一化化,并且不需要在每次更新参数后对整个训练集进行分析。

以前的一些方法(如:Simoncelli, 2008))使用在单个训练样本上计算的统计数据,或者,在图像网络的情况下,在给定位置的不同特征映射上计算的统计数据。但是,这将丢弃激活的绝对尺度,改变了网络的表示能力。我们希望通过对相对于整个训练数据统计信息的单个训练样本的激活值进行归一化,从而保护网络中的信息。

3. Normalization via Mini-Batch Statistics

由于每一层输入的完全白化是昂贵的并且不是处处可微的,我们做了两个必要的简化。首先,我们不需要对层输入和输出中的特征进行联合白化,而是通过使其均值为0,方差为1来独立地对每个标量特征进行归一化。对于有d维输入的层
在这里插入图片描述
我们归一化每个维度
在这里插入图片描述
其中期望和方差是在训练数据集上计算的。如(LeCun et al., 1998b)所示,即使特征不去相关,这种归一化也能加速收敛。

注意,简单地归一化一个层的每个输入可能会改变层所能表示的内容。例如,对一个sigmoid的输入进行归一化会将其约束到非线性的线性状态。为了解决这个问题,我们确保插入到网络中的转换可以表示恒等变换。要做到这一点,我们对每个x(k)引入一对参数:γ(k), β(k),用于缩放和移动归一化值。
在这里插入图片描述
这些参数与原模型参数一起学习,并恢复网络的表示能力。实际上,如果设置

在这里插入图片描述
在这里插入图片描述
我们可以重新获得原始的激活。(如果这是理想方法的话)

在批处理设置中,每个训练步骤都基于整个训练集,我们将使用整个训练集来归一化激活。然而,在使用随机优化时,这是不切实际的。因此,我们进行了第二个简化:由于我们在随机梯度训练中使用了小批量,每个小批量生成每个激活的平均值和方差的估计值。这样,用于归一化的统计量可以充分参与梯度反向传播。注意,使用mini-batch是通过计算每维方差而不是联合协方差来实现的;在联合的情况下,将需要正则化,因为mini-batch的大小可能小于正在白化的激活值数量,从而导致奇异协方差矩阵。

考虑一个大小为m的mini-batch B。由于归一化是独立地应用于每个激活的,因此我们将重点放在一个特定的激活x(k)上,为了清楚起见省略k。我们有m个mini-batch激活的值
在这里插入图片描述
归一化后的值为
在这里插入图片描述
它们的线性变换为
在这里插入图片描述
我们把
在这里插入图片描述
看做批处理归一化变换。我们在算法1中给出了BN变换。在算法中,ε是一个常数,用于保存mini-batch方差的数值稳定性。
在这里插入图片描述
BN转换可以被添加到网络中来操作任何激活。符号y = BNγ,β(x)表明,参数γ和β是需要学习,但应该注意到在每一个训练样本中BN变换不单独处理激活值。相反y=BNγ,β(x)取决于训练样本和mini-batch中的其它样本。缩放和移位后的值y被传递到其他网络层。归一化的激活x在我们转换的内部,但是它们的存在是至关重要的。只要每个mini-batch的元素从相同的分布中进行采样,那么任何x值的分布都具有期望为0,方差为1(如果我们忽略ϵ)。这可以通过观察
在这里插入图片描述
看到,并取得期望。每一个归一化的激活值x(k)可以看作由线性变换y(k)=γ(k)xˆ(k)+β(k)组成的子网络的输入,接下来是原始网络的其它处理。所有的这些子网络的输入都有固定的均值和方差,尽管这些归一化的x(k)的联合分布可能在训练过程中改变,但我们预计归一化输入的引入会加速子网络的训练,从而加速整个网络的训练。

在训练过程中我们需要通过这个变换反向传播损失 ℓ 的梯度,以及计算关于BN变换参数的梯度。我们使用的链式法则如下(简化之前):
在这里插入图片描述
因此,BN变换是将归一化激活引入到网络中的可微变换。这确保了在模型训练时,层可以继续学习输入分布,表现出更少的内部协变量转移,从而加快训练。此外,应用于这些归一化的激活上的学习到的仿射变换允许BN变换表示恒等变换并保留网络容量。

3.1 Training and Inference with BatchNormalized Networks

为了批归一化一个网络,根据算法1,我们指定一个激活的子集,然后在每一个激活中插入BN变换。任何以前接收x作为输入的层现在接收BN(x)作为输入。采用批归一化的模型可以使用批梯度下降,或者用小批量数据大小为m>1的随机梯度下降,或使用它的任何变种例如Adagrad Duchi(2011)进行训练。依赖小批量数据的激活值的归一化可以有效地训练,但在推断过程中是不必要的也是不需要的;我们希望输出只确定性地取决于输入。为此,一旦网络训练完成,我们使用总体统计来进行归一化而不是小批量数据统计。
在这里插入图片描述
跟训练过程中一样,如果忽略ϵ,这些归一化的激活具有相同的均值0和方差1。我们使用无偏方差估计
在这里插入图片描述
其中期望是在大小为m的小批量训练数据上得到的,σ2B是其样本方差。相反,使用移动均值,我们可以跟踪模型训练时的准确性。由于均值和方差在推断时是固定的,因此归一化只是应用到每一个激活上的简单线性变换。它可以进一步由缩放γ和转移β组成,以产生代替BN(x)的单线性变换。算法2总结了训练批归一化网络的过程。
在这里插入图片描述

3.2 Batch-Normalized Convolutional Networks

批归一化可以应用于网络的任何激活集合。这里我们专注于由一个仿射变换和一个元素非线性变换组成的变换:
在这里插入图片描述
其中W和b是模型的学习参数,g(⋅)是非线性特征,例如sigmoid或ReLU。这个公式涵盖了全连接层和卷积层。我们在非线性之前通过归一化x=Wu+b加入BN变换。我们也可以归一化层输入u,但由于u可能是另一个非线性的输出,它的分布形状可能在训练过程中改变,并且限制其一阶矩或二阶矩不能去除协变量位移。相比之下,Wu+b更可能具有对称性,非稀疏分布,即“更高斯”(Hyvärinen & Oja(2000));对其归一化可能产生具有稳定分布的激活。

注意,由于我们对Wu+b进行归一化,偏置b可以忽略,因为它的效应将会被后面的减去均值处理取消(偏置的作用会归入到算法1的β)。因此,z=g(Wu+b)被z=g(BN(Wu))替代,其中BN变换独立地应用到x=Wu的每一维,每一维具有单独的存在着一对的学习参数γ(k),β(k)。

另外,对于卷积层我们希望归一化遵循卷积特性——同一特征图的不同元素,在不同的位置,以相同的方式进行归一化。为了实现这个,我们在所有位置上,联合归一化了mini-batch数据中的所有激活。在算法1中,我们让B成为跨越mini-batch数据的所有元素和空间位置的特征映射中所有值的集合——因此对于大小为m的mini-batch数据和大小为p×q的特征映射,我们使用mini-batch数据有效的大小m′=∣B∣=m⋅pq。我们学习每个特征映射的一对参数γ(k)和β(k),而不是每个激活(数量变多了)。算法2进行类似的修改,以便在推断期间BN变换对在给定的特征映射上的每一个激活应用同样的线性变换。
mini-batch

3.3 Batch Normalization enables higher learning rates

在传统的深度网络中,学习率过高可能会导致梯度爆炸或梯度消失,以及陷入局部最小值。批归一化有助于解决这些问题。通过归一化整个网络的激活值,它可以防止在数据通过深度网络传播时,层参数的微小变化被放大为更大的、次优的激活变化。例如,它可以防止训练陷入非线性的饱和状态。

批归一化也使训练对参数的缩放更有弹性。通常,大的学习率可能会增加层参数的缩放,这会在反向传播中放大梯度并导致模型爆炸。然而,通过批归一化,通过层的反向传播不受其参数缩放的影响。实际上,对于标量a,BN(Wu)=BN((aW)u),我们可以证明:
在这里插入图片描述
因此缩放不影响层的雅可比行列式,所以不影响梯度传播。此外,更大的权重会导致更小的梯度,并且批归一化会稳定参数的增长。

我们进一步推测,批归一化可能会导致雅可比行列式的奇异值接近于1,这被认为对训练是有利的(Saxe et al.,2013)。考虑具有归一化输入的两个连续的层,以及位于这些归一化向量之间的变换:Zˆ=F(xˆ)。如果我们假设x和z是高斯分布且不相关的,那么F(xˆ)≈Jxˆ是对给定模型参数的一个线性变换,x和z都有单位方差,并且I=Cov[zˆ]=JCov[xˆ]JT=JJT,因此,JJT=I。所以J的所有奇异值都等于1,这就保留了反向传播时的梯度大小。在现实中,变换不是线性的,归一化的值不能保证是高斯的或不相关的,但我们仍然期望批处理归一化有助于更好地实现梯度传播。批归一化对梯度传播的精确影响仍有待研究。

3.4 Batch Normalization regularizes the model

当使用批归一化进行训练时,看到一个训练样本与小批量处理中的其他样本可以结合使用,训练网络不再为给定的训练样本生成确定值。在实验中,我们发现这种效应有利于网络的泛化。而Dropout通常用于减少过拟合,在一个批归一化的网络中,我们发现Dropout可以被移除或降低强度。

4. Experiments

4.1 Activations over time

为了验证内部协变量转移对训练的影响,以及批归一化对抗它的能力,我们考虑了在MNIST数据集上预测数字类别的问题(LeCun et al., 1998a)。我们使用非常简单的网络,28x28的二值图像作为输入,以及三个全连接隐藏层,每层100个激活。每一个隐藏层用sigmoid非线性激活函数计算y=g(Wu+b),权重W初始化为小的随机高斯值。最后的隐藏层之后是具有10个激活(每类1个)和交叉熵损失的全连接层。我们训练网络50000次迭代,每份mini-batch数据中有60个样本。如第3.1节所述,我们在网络的每一个隐藏层后添加批归一化。我们对基准线和批归一化网络之间的比较感兴趣,而不是实现在MNIST上的最佳性能(所描述的架构没有做到)。
图1(a)显示了随着训练的进展,两个网络对已知测试数据的正确预测的比例。批处理归一化网络具有较高的测试精度。为了探究原因,我们在训练过程中研究了原始网络N和批归一化网络Ntr-BN (Alg. 2)中sigmoid的输入。在图1(b,c)中,我们展示了每个网络最后一个隐含层的一个典型激活,它的分布是如何演变的。原始网络中分布的均值和方差随时间变化很大,这使后续层的训练变得复杂。相比之下,随训练的进行,批处理归一化网络中的分布更加稳定,这有助于训练的进行。
在这里插入图片描述
图1:(a)随着训练步骤的增加,经过批处理规范化和未经过批处理规范化训练的MNIST网络的测试准确性。训练步骤的数量。批处理规范化有助于提高网络训练的速度和准确性。(b, c)在训练过程中,sigmoid的输入分布,显示为{15、50、85}百分位。批量归一化使分布更加稳定,减少了内部协变量移位。

4.2 ImageNet classification

我们将批归一化应用于在ImageNet分类任务(Russakovsky et al., 2014)上训练的Inception网络(Szegedy et al., 2014)的新变体。网络具有大量的卷积和池化层,和一个softmax层用来在1000个可能之中预测图像的类别。卷积层使用ReLU作为非线性函数。与(Szegedy et al., 2014)中描述的网络的主要区别是5×5卷积层被两个连续的3x3卷积层替换,最多可以有128个滤波器。该网络包含13.6×10^6个参数,除了顶部的softmax层之外,没有全连接层。更多的细节会在Appendix中给出。在文本中我们将这个模型称为Inception。该模型使用动量随机梯度下降(Sutskever et al., 2013),mini-batch为32。训练在大规模分布式架构上进行(similar to (Dean et al., 2012))。通过计算验证集的精度来评估所有网络的训练进展情况,即,每张图像使用单个裁剪,在一组已给出的图像上,从1000种可能性中预测正确标签的概率。

在我们的实验中,我们评估了几个带有批归一化的Inception修改版本。在所有情况下,如第3.2节所述,批归一化以卷积方式应用于每个非线性的输入,同时保持架构的其余部分不变。

4.2.1 Accelerating BN Networks

将批归一化简单添加到网络中不能充分利用我们方法的优势。为此,我们进一步改变了网络及其训练参数如下:
提高学习率: 在一个批归一化模型中,我们已经能够从高学习率中实现训练加速,没有不良的副作用(3.3节)。
移除Dropout: 如3.4节所述,批归一化实现了与Dropout相同的一些目标。从改进的BN-Inception中移除Dropout可以加速训练过程,且不会提高过拟合。
减少L2权重的正则化: 在Inception的模型参数中用一个L2损失控制过拟合,而在改进的BN-Inception中,该损失的权重减少了5倍。我们发现,这提高了给出的验证集数据的准确性。
加速学习率衰减: 在训练Inception时,学习率呈指数衰减。因为我们的网络训练速度比Inception更快,所以我们将学习率衰减加快6倍。
删除局部响应归一化: 虽然Inception和其它网络(Srivastava et al., 2014)从中受益,但是我们发现对于使用批归一化的网络,它是不必要的。
更彻底地打乱训练样本: 我们在训练数据上启用了分布内部打乱,这样可以防止同样的样本总是同时出现在mini-batch中。这导致验证准确率提高了约1%,这与批归一化作为正则化项(3.4节)的观点是一致的:我们的方法中内在的随机化应该是最有益的,当它每次以不同的方式影响一个样本时。
减少光照扭曲: 由于批归一化网络训练速度更快,而且每个训练示例的观察次数更少,所以我们让训练者更专注于“真实”图像,减少他们的失真。

4.2.2 Single-Network Classification

我们评估了下面的网络,所有的网络都在LSVRC2012训练数据上训练,并在验证数据上测试:
Inception: 在4.2小节开头描述的网络,以0.0015的初始学习率进行训练。
BN-Baseline: 每个非线性之前加上批归一化,其它的与Inception一样。
BN-x5: 带有批归一化的Inception,修改在4.2.1小节中。初始学习率增加5倍到了0.0075。原始Inception增加同样的学习率会使模型参数达到机器无限大。
BN-x30: 类似于BN-x5,但初始学习率为0.045(Inception学习率的30倍)。
BN-x5-Sigmoid: 类似于BN-x5,但使用sigmoud非线性函数​来代替ReLU。我们也尝试训练带有sigmoid的原始Inception,但该模型仍保持着与概率相当的准确性(时而不准)。
在这里插入图片描述
图2:随着训练步骤的增加,Inception及其批处理规范化变体的单裁剪验证集准确性

在图2中,我们显示了网络的验证集准确率,作为训练步骤次数的函数。Inception网络在31×10^6次训练步骤后达到了72.2%的准确率。图3显示,对于每个网络,达到同样的72.2%准确率需要的训练步骤数量,以及网络能达到的最大验证集准确率(达到该准确率的训练步骤数量)。
在这里插入图片描述
图3:对于Inception和其它的变体,网络达到Inception最大准确率72.2%以及所需步骤数量

通过仅仅使用批归一化(BN-Baseline),我们在不到Inception一半的训练步骤数量内将准确度与其相匹配。通过应用4.2.1小节中的修改,我们显著提高了网络的训练速度。BN-x5只需要比Inception少14倍的步骤就达到了72.2%的准确率。有趣的是,进一步提高学习率(BN-x30)使得该模型最初训练有点慢,但可以使其达到更高的最终准确率。在6×10^6步骤之后,BN-x30达到74.8%的准确率,即比Inception达到72.2%的准确率所需的步骤减少了5倍。

我们也证实了尽管训练这样的网络是众所周知的困难,但是当使用sigmoid作为非线性函数时,内部协变量转移的减少允许具有批归一化的深层网络被训练。的确,BN-x5-Sigmoid取得了69.8%的准确率达。没有批归一化,使用sigmoid的Inception从未达到比1/1000准确率更好的结果。

4.2.3 Ensemble Classification

目前在ImageNet大型视觉识别竞赛中报道的最佳结果是传统模型(Wu et al.,2015)的深度图像组合和(He et al., 2015)的组合模型。后者报告了ILSVRC测试服务器评估的4.94%的top-5错误率。我们报告一个top-5验证集错误率4.9%,和top-5测试集错误率4.82%(根据ILSVRC测试服务器)。这提高了以前的最佳结果,并且根据(Russakovsky et al., 2014),这超过了人类评估者的评估准确率。

对于我们的组合,我们使用了6个网络。每个都是基于BN-x30的,进行了以下一些修改:增加卷积层中的初始权重;使用Dropout(dropout概率为5%或10%,而原始Inception为40%);模型最后的隐藏层使用非卷积,逐个激活的批归一化。每个网络在大约6×10^6个训练步骤之后达到了最大的准确率。组合预测是基于组成网络的预测类概率的算术平均。组合和多裁剪图像推断的细节与(Szegedy et al., 2014)类似。

我们在图4中证实了,批归一化使我们能够在ImageNet分类挑战基准上以较大的优势达到了最佳结果。

5. Conclusion

我们提出了一个新奇的机制,大大加快了深度网络的训练。它是基于协变量转移的前提,它会使机器学习系统的训练复杂化,也作用于子网络和层,并且从网络的内部激活中去除它可能有助于训练。我们提出的方法得益于归一化激活,并将这种归一化合并到网络架构本身。这确保了归一化可以被用来训练网络的任何优化方法进行恰当的处理。为了让深度网络训练中常用的随机优化方法可用,我们对每个小批量数据执行归一化,并通过归一化参数来反向传播梯度。批归一化每个激活只增加了两个额外的参数,这样做可以保持网络的表示能力。我们提出了一个算法,用于构建,训练和执行推断批归一化网络。所得到的网络可以用饱和非线性进行训练,对增加的训练率更鲁棒,并且通常不需要Dropout来进行正则化。

仅仅将批归一化添加到了当前最先进的图像分类模型中,便在训练中取得了实质的加速。通过进一步提高学习率,删除Dropout和应用批归一化所提供的其它修改,我们只用了少部分的训练步骤就达到了以前的技术水平——然后在单网络图像分类中击败了最先进的结果。此外,通过组合多个使用批归一化训练的模型,我们在ImageNet上的表现大大优于最好的已知系统。

有趣的是,我们的方法与(G¨ulc¸ehre & Bengio, 2013)的归一化层相似,尽管这两个方法解决的目标不同,执行的任务也不同。批归一化的目标是在整个训练过程中实现激活值的一个稳定的分布,在实验中,我们把它应用在非线性之前,因为匹配了一阶矩和二阶矩更可能实现一个稳定的分布。相反,(G¨ulc¸ehre & Bengio, 2013)应用归一化层到非线性的输出,这导致了更稀疏的激活。在我们的大规模图像分类实验中,我们没有观察到非线性输入是稀疏的,无论是有没有批归一化。批归一化的其它显著差异包括学习到的缩放和转移,允许BN变换表示恒等变化(标准层不需要这样做,因为它后面是学习到的线性变换,从概念上来说,它吸收了必要的缩放和转移),卷积层处理以及不依赖于小批量数据的确定性推断,以及对网络中的每一个卷积层进行批归一化处理。

在这项工作中,我们没有探索批归一化能够实现的全部可能性。我们的未来工作包括将我们的方法应用于循环神经网络(Pascanu et al., 2013),其中内部协变量转移和梯度消失或爆炸可能特别严重,这将使我们能够更彻底地检验这个假设——归一化提升梯度传播的表现(第3.3节)。我们计划调查批归一化是否有助于传统意义上的域自适应——即网络执行归一化是否能够更容易泛化到新的数据分布,也许仅仅是对总体均值和方差的重新计算(Alg.2)。最后,我们相信该算法的进一步研究理论分析将允许更多的改进和应用。

Appendix

Variant of the Inception Model Used

图5记录了与GoogleNet archictecture相关的体系结构相比我们所执行的更改。对于本表的解释,请查阅(Szegedy et al.,2014)。与GoogLeNet模型相比,显著的架构变化包括:

  • 5×5卷积层被两个连续的3×3卷积层代替。这将使网络的最大深度增加9个权重层。同时,该方法使参数数目增加了25%,计算量增加了约30%。
  • 28×28inception模块的数量从两个增加到三个
  • 在模块内部,有时使用平均池化,有时使用最大池化。这在表中与的池化层对应的条目中表示。
  • 在任何两个Inception模块之间都不存在全面的池化层,但是在模块3c、4e的滤波级联之前使用了stride-2卷积/池化层
    我们的模型在第一个卷积层上使用深度乘子8的可分离卷积。这减少了计算成本,同时增加了训练时的内存消耗。
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值