SNAPSHOT ENSEMBLES快照集成论文翻译

关于论文:SNAPSHOT ENSEMBLES: TRAIN 1, GET M FOR FREE的翻译

论文地址
论文keras实现

事先声明,本人是小白,这篇翻译一开始只是为了自己看论文理解方便,错误的地方,欢迎指正。
个人理解:本篇论文在于引入了统一结构的M个模型的集成,以及循环学习速率。观点是局部极小值在一定程度上可以逼近全局最小值。把总的epoch分为M个周期,每个周期的开始,初始化一个大的学习速率,0.1或者0.2,用余弦退火,减小学习速率,加快收敛,得到第一个局部极小值,重复此步骤,得到M个局部极小值,对这M中的后m个取平均,得到最终的预测值。

摘要

集成神经网络比单独的网络更健壮,更精准。然而,对模型平均来说,训练多重深度网络的计算量很大。本论文中,我们提出了一种方法,可以在没有额外的训练成本的情况下,集成多个神经网络。我们通过训练一个神经网络来实现这个目标,沿着其优化路径收敛到几个局部极小值,并保存模型参数。为了获得重复的快速收敛,我们利用了最近关于循环学习速率计划的工作。由此产生的技术,我们称之为快照集成,非常简单,但却非常有效。我们在一系列实验中表明, 我们的方法与不同的网络架构和学习任务兼容。它的错误率一直低于现在最优秀的单一模型,无需额外的训练成本,并与传统的网络组合相比是有利的。在CIFAR-10和CIFAR-100上,我们的DenseNet快照集成错误率分别为3.4% 和17.4%。

1、介绍

随机梯度下降(SGD)及其加速变种 (kingma & Ba, 2014;duchi 等人, 2011年) 已成为优化深层神经网络的实际方法。SGD的流行可以归因于它能够避免甚至逃脱虚假鞍点和局部极小值(Dauphin et al., 2014)。尽管避免这些虚假的解决方案通常被认为是积极的,但在本文中,我们认为这些局部极小值包含有用的信息,实际上可能会提高模型的性能。尽管深度网络通常永远不会收敛到全局最小值, 但在泛化方面存在着 “好” 和 “坏” 局部最小值的概念。keskar 等人 (2016年) 认为,具有扁平盆地的局部极小值往往可以更好地进行泛化。SGD倾向于避免更尖锐的局部最小值,因为梯度是从小批量计算的,因此不精确。如果学习速率足够大,则梯度步骤之间的固有随机运动会阻止优化器沿着其优化路径到达任何一个尖锐的局部最小值。然而,如果学习率很小,模型往往会聚到最接近的局部最小值。我们通常在不同的优化阶段,运用这两种方式。最初,学习率保持在较高的水平,以进入一般附近的一个平坦的局部极小值。一旦这种搜索没有进一步使得梯度下降,学习率就会减小 (一两次),从而引发下降,并最终收敛到最终的局部最低限度。
众所周知,局部极小值的数量会随着参数的数量而增加–其中现代神经网络可以有数百万。因此,使用不同的初始化或小批量顺序优化的两个相同的体系结构将收敛到不同的结果也就不足为奇了。虽然不同的局部极小值往往有非常相似的错误率,但相应的神经网络往往会犯不同的错误。集成化可以利用这样的多样性(错误的多样性),其中多个神经网络选取多个不同的网络进行训练,然后采用多数投票或平均。集成往往会导致错误率的大幅降低。事实上,大多数备受瞩目的比赛,如 imagenet (deng 等人, 2009年) 或 kaggle1, 都是通过深度学习的集成赢得的。
尽管它有明显的优点,但对深度网络使用集成并不像其他算法那样广泛分布。缺乏适应性的一个可能原因是学习多个神经网络的成本。即使在具有 gpu 加速的高性能硬件上, 训练深度网络也可以持续数周。由于集成系统的训练成本线性增长,对大多数研究人员来说,如果无法获得工业规模的计算资源,集成系统很会变得不划算
本文重点研究了在不产生任何额外训练费用的情况下学习多个神经网络集成这一看似矛盾的目标。我们通过简单而直接的训练方法来实现这一目标。我们的方法是利用神经网络的非凸性和 sgd 在不同的情况下,有收敛再逃逸局部极小值的能力。我们没有从头开始独立训练M个神经网络,而是让SGD沿着其优化路径收敛M次到局部极小值。每次模型收敛时, 我们都会保存权重, 并将相应的网络添加到我们的集成中。然后,我们以较大的学习率重新启动优化,以避开当前的局部最小值。更具体地说,我们采用Loshchilov & Hutter(2016)提出的循环过程,学习速率先陡升后迅速下降,遵循余弦函数。因为我们的最终组合由优化路径的快照组成,所以我们将方法称为快照集成。图1提供了此方法的高级概述。
与传统组合不同的是, 整个集成的训练时间与训练单一传统模式所需的时间相同。在测试期间,可以对M个模型中的最后m个(是最准确的)进行评估和平均。我们的方法可以其他方法一起使用,以提高准确性,如数据增强、随机深度 (huang 等人, 2016b) 或批次归一化。事实上,快照集成甚至可以是集成的,例如在训练期间可以使用并行资源。在这种情况下,K个快照集成等同于K*M个模型训练K次的训练成本。
我们评估了快照集成在三种最先进的物体识别深度学习体系结构上的有效性: ResNet (He et al., 2016b), Wide-ResNet (Zagoruyko & Komodakis, )和DenseNet (Huang et al., 2016a). 我们通过四个不同的数据集表明,snapshot ensembles几乎是在不增加训练成本的情况下减少错误。比如:在 CIFAR-10 和CIFAR-100, Snapshot Ensembles 的错误率分别是3.44%和17.41%。

相关工作:

神经网络组合在机器学习中得到了广泛的研究和应用,然而,先前的研究大多集中于提高泛化性能,而很少有研究涉及到训练集成的成本。作为传统集成方法的替代方案,所谓的 “隐性” 集成在训练和测试方面都有很高的效率。drop (Srivastava et al., 2014)技术通过在每个小批处理期间“删除”(或归零)隐藏节点的随机集,从单个模型中创建一个集成。但是,在测试时,不删除任何节点,并根据训练期间存活的概率对每个节点进行缩放。srivastava 等人声称, dropout通过防止节点的共适应而减少了过拟合。另一种解释是,这种机制在训练期间创建了具有共享权值的指数数量的网络,然后在测试时隐式地对这些网络进行集成。DropConnect (Wan et al., 2013)使用类似的技巧,在测试时创建集成,方法是在训练期间删除连接(权重)而不是节点。最近提出的随机深度技术(Huang et al., 2016b)在训练过程中随机下降层,在测试时创建一个具有不同深度的隐式网络集成。最后, swapout (singh 等人, 2016) 提出了一种随机训练方法, 它概括了dropout和随机深度。从模型组合的角度来看, swapout 为模型平均创建了多样化的网络结构。我们提出的方法同样只训练一个模型;但是,由此产生的组合是 “显性的”, 因为模型不共享权重。此外, 我们的方法可以与这些隐式集成技术中的任何一种结合使用。
最近的几篇出版物重点讨论了降低集成测试时间成本的问题,通过把累赘的“知识”迁移到单个模型中去,hinton 等人 (2015年) 提出将多个网络组成的组合作为单一 (较小) 网络的目标。我们提出的方法是对这些工作的补充, 因为我们的目标是降低集成的训练成本,而不是测试时间成本。
也许与我们的工作最相似的是Swann & Allinson(1998)和Xie et al.(2013)的工作,他们探索了从学习轨迹的片段中创建集整体。谢介绍了水平和垂垂直的集成方法, 即将网络的输出组合在一个训练周期的范围内。最近,Jean et al.(2014)和Sennrich et al.(2016)在模型训练的中间阶段进行了集成改进。Laine & Aila(2016)提出了一种用于半监督学习的时间集成方法,该方法能够在不同正则化和增强条件下训练的模型之间达成一致,从而获得更好的泛化性能。最后,Moghimi et al.(2016)证明了卷积神经网络可以通过增强来创建强大的集成。我们的工作与之前的工作不同,我们强迫模型访问多个局部极小值,并且只在模型达到最小值时才进行快照。我们相信这个关键的步骤可以使得我们从我们的集成中利用更多的力量。
我们的工作受到了Loshchilov & Hutter(2016)和Smith(2016)最近的研究成果的启发,他们的研究表明循环学习速率对于训练卷积神经网络是有效的。作者指出,每一个周期产生的模型都(几乎)与那些使用传统学习速率计划学习的模型竞争,同时需要一小部分的训练迭代。虽然模型性能会在学习速率周期重新启动时暂时受到影响,但在对学习速率进行退火后,模型性能甚至会超过前一个周期。作者认为循环干扰了收敛模型的参数,使得模型能够找到更好的局部最小值。我们以这些最近的发现为基础,通过(1)每个周期中访问的局部最小值存在显著的多样性,以及(2)使用集成来利用这种多样性。我们不关心加快或改进单一模式的训练,相反,我们的目标是在遵循最终模型的优化路径的同时提取分类器的集成。

3、快照集成

快照集成从单个训练过程中生成精确和不同模型的集成。快照集成的核心是一个优化过程,该过程在收敛到最终极小值之前会访问多个局部最小值。我们在这些不同的最小值处拍摄模型快照,并在测试时取它们预测值的平均值。如果单个模型(1)具有较低的测试错误,并且(2)在它们错误分类的示例集中没有重叠,那么集成效果最好。在大多数优化路径中,神经网络的权值分配往往不符合低测试误差。事实上,通常可以观察到,只有在学习速率降低之后,验证错误才会显著下降,而这通常是在几百次迭代之后完成的。我们的方法的灵感来自于这样一种观察,即训练神经网络的次数越少,学习速度越早,对最终测试误差的影响越小(Loshchilov & Hutter, 2016)。这似乎表明,优化路径上的局部最小值在经过几个周期后就变得有用(就泛化误差而言)。
循环余弦退火:为了收敛到多重局部极小值,我们采用了Loshchilov & Hutter(2016)提出的循环退火算法。我们以非常快的速度降低学习速率,激励模型在50次迭代之后收敛到它的第一个局部最小值。然后在更大的学习速率下进行优化,使模型产生扰动,并从第一个极小值处逃离。然后重复这个步骤,得到几个收敛值。规范地,学习速率α的形式:

t是迭代数目,T为训练迭代总次数,f为单调递减函数。换句话说,我们把训练过程分成M个周期,每个周期都从一个大的学习率开始,然后退火成一个小的学习率。大的学习速率α= f(0)使得模型有足够的能量去逃避一个临界点,而小学习速率 使得模型可以到达一个好的局部极小值。在我们实验中,在实验中,我们设置f为Loshchilov & Hutter(2016)提出的移位余弦函数:

其中 是初始学习速率。直观地说,经过一个循环过程,这个退火函数使得 从 变成了 .根据(Loshchilov & Hutter, 2016)的论文,我们在每次迭代的时候更新学习速率,而不是在每个epoch更新速率。即使是使用较大了的初始学习率,也可以提高短周期的收敛速度。
快照集成:图2描述了使用循环和传统学习速率的训练过程。在每个训练周期结束时,模型明显地达到了相对于训练损失的局部最小值。因此,在提高学习率之前,我们对模型的权重(用垂直虚线表示)进行“快照”。M个训练周期之后,我们就有了M个模型快照, 每一个都会用作最终的集成。需要强调的是,M个快照的总训练时间与具有标准计划的模型(蓝色表示)的训练时间相同。在某些情况下,标准学习率计划比循环调度的训练损失更小;然而,正如我们将在下一节中展示的那样,集成的好处大于这种差异。
集成的测试时间:集成预测的测试时间是最后m个模型(m≤m)的归一化指数(softmax)输出。假定X是一个测试样本, 是快照i的归一化指数值。集成的输出是最后m个模型的样本均值: 我们通常集成最后m个模型,因为这些模型往往测试误差最低。

4、实验

我们演示了快照集成在几个基准数据集上的有效性,并与具有竞争力的基准进行了比较。我们用Torch 7进行了所有实验(Collobert et al., 2011)。

4.1 数据库

CIFAR:CIFAR。两个CIFAR数据集(Krizhevsky & Hinton, 2009)由彩色自然图像组成,大小为32×32像素。CIFAR-10 (C10)和CIFAR-100 (C100)分别有10和100类。对于每个数据集,有50,000个训练图像和10,000个待测试图像。我们使用标准的数据增强方案((Lin et al., 2013; Romero et al., 2014; Lee et al., 2015; Springenberg et al., 2014; Srivastava et al., 2015; Huang et al., 2016b; Larsson et al., 2016),其中图像为每边4像素零填充,随机裁剪产生32×32图像和水平镜像概率为0.5。
SVHN:街景的房子数量(SVHN)数据集(Netzer et al ., 2011)包含来自谷歌街景的32×32彩色数字图像,每一张数字图像就为一个类。在训练集中有73,257张图片,在测试集中有26,032张图片。根据普遍的实验方法(Sermanet,et al ., 2012;Goodfellow等,2013;Huang et al., 2016a),我们选取了了6000张训练图像进行验证,对剩余的图像进行训练,而不做数据增强。
Tiny ImageNet:Tiny ImageNet数据集由ImageNet图像集的子集组成(Deng et al.,2009)。它包含200个类,每个类大概有500张训练集,和50张验证集。我们把图像重新裁剪为64*64,并且用随机裁剪,水平镜像,RGB强度缩放去增强数据(Krizhevsky et al., 2012.)。
ImageNet:ILSVRC 2012分类数据集(Deng et al., 2009)由1000个图像类组成,其中训练图像120万张,验证图像5万张。我们采用了类似(He et al., 2016a; Huang et al., 2016a)中的数据增强方法,并在测试时应用了一个224×224中心。

4.2 训练设置:

架构:我们首先测试了几种最优的架构,包括残差网络(ResNet) (He et al.,2016a)、广域网络(Zagoruyko & Komodakis, 2016)和DenseNet (Huang et al.,2016a)。对于ResNet,我们使用He等人(2016a)介绍的原始的110层网络结构。Wide-ResNet是一个32层的残差网络(ResNet),每层的卷积特征数目是标准ResNet的4倍。对于DenseNet,我们的大模型采用与(Huang et al.,2016a)相同的设置,深度L = 100,增加率k = 24。此外,我们还在一个小DenseNet上对我们的方法进行了评估,深度L = 40, k = 12。为了使所有这些网络适应Tiny ImageNet,我们在模型的第一层中添加了一个大小为2的步长,对图像进行下采样至32*32.对于ImageNet数据集,我们测试了在(He et al., 2016a)中提出的50层ResNet残差网络。我们使用的是大小为64的小批量。
基准。快照集成产生单个模型的训练成本,因此,我们将其与需要相同训练数量的基准进行比较。首先,我们用使用标准学习率计划训练的单个模型进行比较,在训练进行到一半时,学习率从0.1下降到0.01,在训练达到75%时下降到0.001。此外,为了与隐式集成方法进行比较,我们对一个进行了drop的单一模型进行了测试。该基准使用与上面相同的学习速率,并且在训练过程中以0.2的概率删除节点。
然后对公式(2)中所述的循环余弦学习率训练的快照集成算法进行测试。我们将测试模型的最大学习速率 设置为0.1和0.2。在这两种情况下,我们都将训练过程划分为学习速率循环。模型快照是在每个学习速率周期之后拍摄的。此外,我们还使用了非循环学习速率计划来训练快照集成。把没有使用循环学习速率的快照集成,使用与单个模型和dropout基准相同的学习计划,目的是突出循环学习速率对我们方法的影响。为了准确地与循环快照集成进行比较,我们在整个训练过程中以相同的间隔获取相同数量的快照。最后,我们和SingleCycle Ensembles做比较,即是一种快照集成变体,其中网络在每个余弦学习速率周期开始时重新初始化,而不是使用前一个优化周期的参数。这个基准基本上创建了一个传统的集成,但是每个网络只有1/M的典型训练时间。此变体旨在强调模型多样性和模型收敛之间的权衡。虽然单周期系综在理论上应该得到更多的参数空间,但是模型并没有从之前周期的优化中获益。
训练预算:在CIFAR数据集中, DenseNet-40和DenseNet-100的训练预算为B = 300 epoch, ResNet和Wide ResNet模型的训练预算为B = 200 epoch。训练快照变量时,B/M = 50个迭代的densenet的M = 6个epoch,B/M = 40个epoch的ResNets/Wide ResNets的M = 5个周期。SVHN模型的训练预算为B = 40个epoch(5个周期,8个周期)。对于Tiny ImageNet,我们使用的训练预算为B = 150(6个周期,共25个周期)。最后,对ImageNet进行预算为B = 90个epoch的训练,我们训练了2个快照变体:一个是M = 2个周期,另一个是M = 3。

4.3 快照集成的结果

精度:主要结果见表1。在大多数情况下,快照集成的错误比任何基准方法都要小。最值得注意的是,使用大型densenet的CIFAR-100快照集的错误率为17:41%,远远超过了相同训练成本和架构19.25%的记录(Huang et al.2016a)。我们的方法在CIFAR-100和TinyImageNet上最成功,这可能是由于这些数据集的复杂性。由于这些数据库的类的数目很多,它们的softmax输出是高维的,使得任何两个模型都不可能做出相同的预测。快照集成还能够改进CIFAR-10和SVHN的竞争基准,同时,在使用wide ResNet体系结构时,可以分别减少1%和0.4%的错误率。
NoCycle Snapshot Ensemble通常对性能影响很小,在某些情况下甚至会增加测试错误。这突出了对于有用的集成,需要一个循环的学习率。SingleCycle集成具有类似的混合性能。在某些情况下,例如CIFAR-100上的DenseNet-40, SingleCycle集成与快照集成是竞争的。然而,随着模型大小增加到100层,它的性能就不那么好了。这是因为很难在几个迭代内从头开始训练大型模型。这些结果表明,快照集成很好地利用了前一个周期。快照集成有效地在模型多样性和优化之间取得了平衡。
表2显示了ImageNet上的快照集成结果。M = 2的快照集成实现了23.33%的验证错误,优于验证错误为24.01%的单一模型基准。对于ImageNet数据集,2次循环似乎是最佳选择。在有限的总训练预算B = 90个训练周期的情况下,我们假设每个训练循环分配如果少于B/2 = 45个训练周期,则就不足以使模型在如此大的数据集上收敛。
集成大小:在某些应用中,根据可用资源,在测试时动态地改变集成的大小可能是有益的。图3显示了当有效集成大小m变化时,DenseNet-40在CIFAR-100数据集上的性能。每个集成都由后期循环的快照组成,因为这些快照接受了最多的训练,因此可能收敛到更好的最小值。尽管集成更多的模型通常可以提供更好的性能,但是当将第二和第三个模型添加到集成中时,我们观察到错误的显著下降。在大多数情况下,两个模型的集成优于基准模型。
重启学习速率:重启学习率的影响如图3所示。左边的两个图显示了在每个循环的开始,重启学习速率为 时的性能,右边两幅图显示了 时的性能。在大多数情况下,集成用较大的重启学习速率往往性能更好,这可能是因为周期间的强扰动增加了局部极小值的多样性。
改变循环次数:考虑到一个固定的训练预算,需要权衡学习速率周期的数量和它们的长度之间。因此,我们研究在给定固定的训练预算下,周期的数量M如何影响集成性能。我们用初始学习率 在cifar - 100数据集上训练一个40层的DenseNet结构。我们固定训练预算总额为B=300个epoch,M∈{ 2、4、6、8、10 }。如表3所示,我们的方法在不同的M值的情况下,是相对健壮的。在极端情况下,M = 2和M = 10,发现性能略有下降,因为周期要么太少,要么太短。在实践中,我们发现设置M =4∼8工作得相当好。
改变训练预算:图四的左边和中间板展示了SE和singlecycle ensembles作为训练预算的函数(循环次数固定为M=6)。我们在CIFAR-10和CIFAR-100上训练一个40层的DenseNet网络,该网络的初始学习速率是 ,总的训练迭代次数从60到300不等。我们注意到Snapshot Ensemles 和SingleCycle Ensembles 随着训练预算增加,精度都增加了。然而,我们注意到,随着训练预算的减少,快照集成仍然会产生具有竞争力的结果,而单周期集成的性能会迅速下降。这些结果突出了在预算较低时快照集成所获得的改进。如果预算很高,那么SingleCycle 基准将接近真正的集成,并最终超过快照集成。
和真正的集成作比较:我们比较了Snapshot Ensembles 和传统集成方法。图4的右侧面板显示了CIFAR-100上DenseNet-40的测试错误率。真正的集成方法是用300个全迭代训练模型,然后在取均值,这300个全迭代每个的初始化的权重都不同。考虑到,在测试时模型的数量相同,真实集成的错误率可以看作是我们方法的一个下界。我们的方法的性能可以与两个独立模型的集成度相媲美,但是只需要一个模型的训练成本。

4.4模型集成的多样性

参数空间
我们假设循环学习速率计划创建的快照不仅准确,而且在模型预测方面也具有多样性。我们通过可视化模型收敛的局部极小值来定性地度量这种多样性。为此,如Goodfellow et al.(2014)所述,我们引入了线性插值快照模型。 是使用 的模型的测试误差。鉴于 和 -分别来自模型1和模型2的参数-我们可以计算模型参数的凸组合的损失: , 为混合系数。上诉模型参数中,设置参数 到1的结果,最后只剩 ,设置参数 到0的结果,最后只剩 。通过所有的 的值,我们可以得到一个参数空间的线性切盼。收敛到相似最小值的两个模型将有平滑的参数插值,而模型收敛于不同的最小值可能会有一个非凸插值,当 处于0和1之间时,会有一个飙升的错误。
图5显示了DenseNet-40最终模型(第六个快照)和所有中间快照之间的插值。左边的两个图显示的是经过循环学习速率训练的快照集成模型,右边的两个图显示的是NoCycle快照模型。 = 0表示完全快照模型参数,当 = 1表示一个模型完全最终模型的参数。从这幅图片中,我们可以得到,循环学习速率和非循环学习速率之间的区别,首先,所有的循环快照的错误率和最终的循环模型错误率大致相同。 =0和 =1时的错误率大致相同。此外,似乎大多数快照并不位于与最终模型相同的最小值中。因此,快照很可能会对不同的样本进行错误分类。相反,前三个快照的错误要比最终的模型大得多。可以看到,尖锐的最小值在 = 1附近,这表明混合在任何数量的快照将恶化性能参数。虽然最后两个快照的误差很低,但从图中可以看出,它们与最后的模型处于相同的最小值,因此可能会给集成增加有限的多样性。
激活空间
为了进一步探索模型的多样性,我们计算了每对快照的softmax输出的成对相关性。图6显示了循环快照和非循环快照的平均相关性。首先,最后3个非循环快照(右边)之间的相关性很大。这些快照在降低学习速率后,表明每个快照已收敛到同样的最小值点。尽管在之前的快照中有更多的多样性,但是这些快照错误率更高,因此不适合集成。相反,左边所有的循环快照的相关性更小。因为所有快照都具有相似的准确性(如图5所示),所以可以利用预测中的这些差异来创建有效的集成体。

讨论

我们引入了快照集成,这是一种不需要任何额外训练成本就能获得神经网络集的简单方法。我们的方法利用了SGD在学习速率降低时收敛并逃离局部极小值的能力,这使得模型能够访问多个权重分配,从而在训练过程中获得越来越准确的预测。我们将这种能力与Loshchilov &Hutter(2016)提出的循环学习速率调度相结合,在每个收敛点保存模型快照。我们在几个实验中表明,所有快照都是准确的,但是彼此之间产生不同的预测,因此非常适合于测试时集成。这些快照的集成极大地提高了CIFAR-10、CIFAR-100和SVHN的最佳性能。未来的工作将探索快照集成与传统集成的结合。特别是,我们将研究如何平衡使用新模型(使用随机初始化)的增长集成以及在固定的训练预算下,用进一步的训练周期改进现有的模型。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值