论文标题:High-Performance Large-Scale Image Recognition Without Normalization

论文作者:Andrew Brock Soham De  Samuel L.Smith  Karen Simonyan

论文地址:https://arxiv.org/abs/2102.06171

论文中模型的实现地址:https://github.com/deepmind/deepmind-research/tree/master/nfnets

声明:小编翻译论文仅为学习,如有侵权请联系小编删除博文,谢谢!

  小编是一个机器学习初学者,打算认真研究论文,但是英文水平有限,所以论文翻译中用到了Google,并自己逐句检查过,但还是会有显得晦涩的地方,如有语法/专业名词翻译错误,还请见谅,并欢迎及时指出。

如果需要小编其他论文翻译,请移步小编的GitHub地址

  传送门:请点击我

  如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote

  其实很久没有发翻译深度学习论文的博客了,一方面是工作中一些事情太忙,另一方面也是自己看英文文献的水平提高了,但是最近得空将自己之前的翻译的放出来,这就是我们常使用的一个backbone论文,我今天将自己博客里面的文章好好看了一遍,发现这个已经写好了,但是没有发布,它就是Normalizer-Free ResNets家族,简称NFNets(是不使用BatchNorm的大尺度图像分类网络)。也是得空将此整理好发出来。

  众所周知,Batch Norm 作为深度学习的常用优化方法之一,几乎被应用于所有的模型中,但是Batch Norm也存在一些问题:

  • 1,它带来昂贵的计算代价,增加内存开销,并显著增加了计算梯度所需要的时间(前向传播和反向传播都需要额外的计算,并且需要暂存中间值)
  • 2,它带来模型训练和推理时的差异,引入需要微调的超参数(训练时不同batch独立计算,推理时使用训练时的滑动平均)
  • 3,它打破了训练样本不同 minibatch 之间的独立性(使用多块GPU计算时,每块GPU处理不同的 minibatch,前向传播时独立计算 Batch Norm,但反向传播时需要交互)

  作者提出了一种自适应梯度裁剪(Adaptive Gradient Clipping, AGC)策略,通过应用该策略,模型即使不使用Batch Norm也取得最好的性能。  

  梯度裁剪是指限制梯度的范数值,通常的梯度裁剪表示如下:

  作者提出的自适应梯度裁剪,不是限制梯度的范数值,而是限制参数的梯度和参数值的范数值之比:

摘要

  BN层是大多数分类模型的关键成分,但是因为其依赖于batch的大小以及在样本间引入相关性,也存在许多不受欢迎的特点,虽然近期也有一些work 成功不使用BN训练了较深的ResNet,但是这些模型的测试准确率通常无法与最佳的BN网络的结果相比较,并且对于较大的学习率和较强的数据增强不稳定。在本文中作者提出了一种AGC技术来克服这些问题,并且设计了一类效果显著的网络 NFNets,在ImageNet上,较小的模型测试结果可以与 EfficientNet-B7相当,训练时间则加快了8.7倍,而最大的模型取得了 86.5%的SOTA指标。并且,在300 million 数据集上预训练后在 ImageNet 微调,NFNets 相比于BN网络取得了更加优异的表现,Top1 准确率达到了 89.2%。

  图1:ImageNet验证准确性与训练延迟。所有数字都是单一型号、单一裁剪。我们的NFNet-F1模型实现了与EffNet-B7相当的精度,同时训练速度快8.7倍。我们的NFNet-F5模型具有与EffNet-B7类似的训练延迟,但在ImageNet上实现了最先进的86.0%的top-I准确率。我们使用Sharpness Aware Minimization(Foret et al.,2021)对此进行了进一步改进,以实现86.5%的top-I准确率。

1,简介

  最近计算机视觉中的绝大多数模型都是深度残差网络的变体(He et al.,2016b;a),使用批量归一化进行训练(Ioffe&Szegedy,2015)。这两种架构创新的结合使从业者能够训练更深入的网络,从而在训练集和测试集上实现更高的准确性。批量归一化还平滑了损失的landscape(Santurkar等人,2018),这使得能够以更大的学习率和更大的批量进行稳定的训练(Bjorck等人,2018;De&Smith,2020),并且它可以具有正则化效果(Hoffer等人,2017;Luo等人,2018年)。

  简单说,就是computer vision中绝大多数模型是使用BN的深度残差网络,两个架构的结合可以使研究人员可以训练更深的网络,并且在训练集和测试集上取得更高的准确率。BN也平滑了损失函数,使模型在更大的学习率和batch size下可以稳定训练。此外也可以起到正则化的效果。

  但是Batch Normalization也有以下三个问题:1,额外的计算开销:额外占用内存,影响某些网络的梯度计算时间;2,在训练和推理时引入了一些偏差,引入一些隐藏的超参使得我们不得不微调;3,也是most important,打破了训练样本间的独立性(BN的期望和方差都基于每个batch内的数据计算,不可避免的引入样本间的相关性)。

  其中第三点有一系列的nagetive的后果,比如,BN网络在不同的硬件上难以精确复现,进一步的,分布式训练存在细微误差,不适用于某些网络和任务。因为训练的一些例子在BN中可能会使得网络欺骗损失函数。比如,在一些对比学习算法中BN层需要一些特殊的关心去阻止信息泄露,这主要的关心是指序列模型任务中,同时驱动一些大的模型去适应可选的正则化。BN网络的表现也可以使降级,如果批量数据在训练时有大量的变量的时候,最后,BN的表现是对于batch size是相当敏感的,并且当Batch size很小时,BN网络表现不充分,而batch size 也限制模型在有限的硬件上的最大size。

  为此,虽然BN已经使深度学习社区取得了实质性进展,但是我们如果从长远来看,它可能会impede进展。我们相信社区应该寻找一种简单的替代方案,它可以实现具有竞争力的测试精度,并且可以用于广泛的任务。尽管有一系列可替代的方案被提出,但这些替代品经常在测试集有交叉的精度,并且会引入他们本身的缺陷,比如额外的计算成本。幸运的是,近些年来出现了两个有希望的研究主题。第一项研究了训练期间批量归一化的好处,第二个试图在没有归一化层的情况下训练深度ResNet以达到具有竞争力的精度。

  这些工作的一个关键主题是,通过抑制残差分支上隐含激活层的规模,可以在没有归一化的情况下训练非常深的ResNet。实现这一点的最简单的方式是在每一个残差分支的最后引入一个科学系的归一化因子,但仅靠这一点难以取得令人满意的测试精度。此外有工作表明ReLU 激活函数引入了均值漂移,导致随着网络深度加深,不同训练样本的隐含激活层逐渐相关。最近也有工作提出了“Normalizer-Free" ResNets,在初始化时抑制残差分支并使用 Scaled Weight Standardization 去除均值漂移。辅以额外的正则化方法,这些非归一化网络在ImageNet上可以取得和BN ResNets 相媲美的表现,但是在大batch size下不稳定且效果不如EfficientNets。本文的贡献如下:

  1,提出了自适应梯度裁剪技术(AGC ),根据梯度范数与参数在单元尺度上的比例裁剪梯度,并论证AGC允许训练更大 batchsize和更强 数据增强的NFNets

  2,设计了一系列 Normalizer-Free ResNets,称之为 NFNets,在ImageNet上取得了SOTA的指标,NFNet-F1的准确率和EfficientNet-B7相近,训练时间快 8.7倍,且最大的NFNet在使用额外数据预训练的前提下获得了 86.5%的SOTA指标

  3,当使用3亿带标注数据预训练的前提下,NFNets比BN网络在ImageNet上取得了更高的验证集准确率。在微调后,最佳模型取得了 89.2%的Top1的准确率。

2,理解 Batch Normalization

  为了在没有Batch Normalization的情况下训练网络可以达到有竞争性的精度,我们必须理解Batch Bormalization在训练期间带来的好处,并且确定要恢复这些benefit的替代策略,在这里我们列出了先前工作确定的四个主要好处。

  1,BN减小了残差分支的规模,跳跃连接和BN是研究人员得以训练更深的网络。这主要得益于BN置于残差分支时减小了其隐含激活层的规模,使得信号偏向skip path 直接传输,有助于训练超深的网络。

  2,BN消除了 mean-shift:激活函数是非对称且均值非零的,使得训练初期激活后的特征值会变大且均为正数,batch normalization恰好可以消除这一问题。

  3,BN起到一定的正则化效应:由于batch normalization 训练时用的是 minibatch 统计信息,相当于为当前 batch 引入了噪声,起到正则化的作用,可以防止过拟合,提高准确率。

  4,BN允许高效的大Batch训练:batch normalization 能够平滑loss曲线,可以使用更大的学习率和 batch size 进行训练。

  这里再结合自己对Batch Normalization 的理解做一些笔记:

  众所周知,BN是由谷歌提出的一种训练优化方法。BatchNorm就是深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。因为在训练模型的过程中,如果深度学习包含很多隐层的网络结构,那么各层参数都在变,所以每个隐层都会面临covariate shift 问题(即隐层的输入分布老是变来变去,这就是所谓的”Internal Convariate Shift")

  Normalization 就是数据标准化(归一化,规范化),Batch就是批量,结合起来就是批量标准化,Batch在CNN中就是训练网络中所设定的图片数量 batch size。Normalization 的过程,引用其论文的解释就是:

  我们知道,在正向传播的时候,通过可学习的 gamma 和 bate 参数可以求出新的分布值,而在反向传播的时候,通过链式求导方式,可以求出 gamma 和 beta 以及相关权重。

  网络训练中以 batch size 为最小单元不断迭代,很显然,新的batch size进入网络,由于每一次的 batch 有差异,实际是通过变量,以及滑动平均来记录均值与方差。训练完成后,推断阶段时通过 gamma,beta以及记录的均值与方差计算BN层输出。结合论文中给出的使用过程进行解释:

  BN自从提出后,因为小改起来特别方便,很快就作为深度学习的标准工具应用在各种场合,BN虽然好,但是也存在一些局限和问题,比如当Batch size太小时效果不佳,对于RNN等动态网络无法有效应用BN等。

GELU的学习

  GELU 激活函数是使用在Google AI's BERT 和 OpenAI's GPT模型,这些模型的结果在各种各样的NLP任务中都达到了 SOTA的结果。

  GELU的使用技巧:当训练过程中使用gelu作为激活函数进行训练的时候,建议使用一个带有动量(momentum)的优化器

  GELU激活函数公式如下:

  x是输入值,而X是具有零均值和单位方差的高斯随机变量。 P(X<=x) 是X小于或等于给定值x的概率。

3,走向移除Batch Normalization

  许多作者试图在不进行归一化的情况下,通过恢复上述批量归一化的一个或多个好处,将深度ResNets训练到具有竞争力的精度。这些工作中的大多数通过引入小常数或可学习标量来抑制初始化时残差分支上的活动规模(Hanin&Rol-nick,2018;张等人,2019a;De Smith,2020;Shao等人,2020)。此外,张等人(2019a)和De Smith(2020)观察到,非正规化ResNets的性能可以通过额外的正规化来提高。然而,仅恢复批量归一化的这两个好处不足以在具有挑战性的基准上实现有竞争力的测试精度(De&Smith,2020)。

  在这项工作中,我们采用并建立在“无归一化ResNets”(NF ResNets)(Brock et al.,2021)的基础上,这是一类预激活ResNets(He et al.,2016a),可以在没有归一化层的情况下进行竞争性训练和测试准确性。NF ResNets使用以下形式的残差块hi+1=h+f(h;/B;),其中h表示的输入残差块,f表示由第i个残差分支计算的函数。函数f;被参数化为在初始化时保持方差,使得所有i的Var(f(z)=Var(z)。标量o指定在每个残差块(在初始化时)之后激活的方差增加的速率,并且通常被设置为一个小值,如a=0.2。标量3是通过预测it残差块3的输入的标准偏差来确定的,其中Var(h+1)=Var(h,)+2,除了转换块(发生空间下采样),其中跳跃路径对缩小的输入(h,/B,)进行操作,并且在转换块之后将预期方差重置为h+1=1+a2。挤压激发层的输出(Hu等人,2018)乘以2。根据经验,Brock等人(2021)发现,在结束时将可学习标量初始化为零也是有益的每个剩余分支('SkipInit'(De Smith,2020))。

  此外,Brock等人(2021)通过引入标度权重标准化(对权重标准化的一个小修改(Huang et al.,2017;Qiao et al.,2019)),防止了隐藏激活的平均偏移的出现。该技术将卷积层重新参数化为:

  其中u,=(1/N)∑,Wio=(1/N)∑(Wg-)和N表示扇入。激活函数还通过非线性特定标量增益y进行缩放,这确保了y缩放的激活函数和缩放权重标准化层的组合是保方差的。对于ReLU,y=/2/(1-(1/)(Arpit等人,2016)。我们请读者参考Brock等人(2021)了解如何计算其他非线性的y。

  通过额外的正则化(Dropout(Srivastava et al.,2014)和随机深度(Huang et al.,2016)),Normalizer Free ResNets与ImageNet上批量规格化预激活ResNets以1024的批量大小实现的测试精度相匹配。当批处理大小很小时,它们也显著优于批处理规范化的同类产品,但对于大批处理大小(4096或更高),它们的性能不如批处理规范的网络。至关重要的是,它们与EfficientNets等最先进网络的性能不匹配(Tan&Le,2019;Gong等人,2020)。

  这篇论文的研究基于作者之前的 Normalizer-Free ResNets(NF-ResNets)进行拓展,NF-ResNets在去掉 normalization层后依然可以有相当不错的训练和测试准确率。NF-ResNets的核心是采用 residual block。

  此外,NF-ResNet的另一个核心是 Scaled Weight Standardization,用于解决激活层带来的 mean-shift现象,对于卷积层做了如下权值重新初始化。

4,AGC(自适应梯度裁剪模块)

  梯度裁剪技术常用于语言模型来稳定训练,最近的研究表明,与梯度下降相比,它允许以更大的学习率进行训练从而加速收敛。这对于条件较差的损失或大批量训练尤为重要,因为在这些设置中,最佳学习率往往会受到最大学习率的限制。因此作者假定梯度裁剪有利于NFNet的大批尺度训练。梯度裁剪往往是对梯度的范数进行约束来实现的,对于梯度向量 G=∂ L / ∂ θ 而言,L表示损失值, θ 表示模型所有参数向量,标准的裁剪算法会在更新 θ 之前以如下的公式裁剪梯度:

  上式的 λ 是必须调整的超参数,根据经验,作者发现虽然这个裁剪算法能够以比以前更高的批尺度进行训练,但训练稳定性对裁剪阈值 λ的选择极为敏感,在改变模型深度,批尺度或学习率时都需要精调阈值。

  为了解决这个问题作者引入了自适应梯度裁剪算法 AGC,下面详细阐述这个算法,记 W€ R 为第 l 层的权重矩阵, G €  R为对应于 W 的梯度矩阵, ||*||F 表示F范数,即有:

  AGC算法的动机源于观察到梯度与权重的范数比,这其实是一个单次梯度下降对原始权重影响的简单度量。举个例子,如果使用无动量的梯度下降算法,有:

  那么第 l 层的参数更新公式为:

  其中 h 表示学习率。

  直观上我们认为如果 ||ΔW|| / || W|| 很大,那么训练就会变得不稳定,这就启发了一种基于 ||G|| F /  ||W||F 的梯度裁剪策略,然而实际上,逐单元的梯度范数和参数范围比会比逐层的效果好,因此定义第 l 层上第 i 个单元的梯度矩阵 Gi(表示G的第i行)的裁剪公式如下,其中 λ 是一个标量超参数,定义 ||Wi||F = max(||Wi||F),这避免 0 初始化参数总是裁剪为 0,对于卷积滤波器中的参数,我们在扇入范围(包括通道和空间维度)上评估逐单元范数。

  使用上述的 AGC 模块,NFNet 能够以高达 4096 的批尺寸训练同时使用 RandAugment 这样的数据增强策略,不适用 AGC 模块,NFNet 是无法这样训练的。注意,最优裁剪参数 λ 可能取决于优化器的选择,学习率和批大尺寸。经验上,batch size越大,λ 就应该越小。

  上图是论文针对AGC做的两个消融实验,左图a表示实验BN的 ResNet以及使用和不使用AGC的NFNet之间的对比,实验表面AGC使得NFNet有着媲美BN网络的效果,而且批尺寸越小,AGC收益越低。右图b则表示不同批尺寸不同 λ 选择的效果,结果表面,当批尺寸较大的时候,应该选择较小的 λ 以稳定训练。

4.1. 用于自适应梯度削波(AGC)的消融

  我们现在介绍了一系列旨在测试AGC效果的消融。我们在ImageNet上对预激活的NF-ResNet-50和NF-ResNet-200进行了实验,使用具有Nesterov动量的SGD在256到4096的批量范围内训练了90个epoch。如Goyal等人(2017)所述,我们对批量大小256使用0.1的基本学习率,其与批量大小线性缩放。我们考虑一系列入 值[0.01,0.02,0.04,0.08,0.16]。

  在图2(a)中,我们将批量归一化的ResNets与具有和不具有AGC的NF ResNets进行了比较。我们显示了每个批次大小在最佳剪切阈值A下的测试准确性。我们发现AGC有助于将NF ResNets扩展到大批量,同时在ResNet50和ResNet200上保持与批量归一化网络相当或更好的性能。正如预期的那样,当批量较小时,使用AGC的好处较小。在图2(b)中,我们展示了性能

  对于不同的剪裁阈值入 在ResNet50上的一系列批量大小中。我们看到,较小(更强)的剪裁阈值对于较高批量的稳定性是必要的。我们在附录D中提供了更多消融细节。

  接下来,我们研究AGC是否对所有层都有利。使用批量大小4096和剪裁阈值入=0.01,我们从第一卷积、最终线性层和任何给定残差级集合中的每个块的不同组合中去除AGC。例如,一个实验可以去除线性层中的剪切以及第二和第四阶段中的所有块。出现了两个关键趋势:首先,最好不要剪裁最后的线性层。其次,通常可以在不剪裁初始卷积的情况下进行稳定训练,但当以批量大小4096以1.6的默认学习率进行训练时,必须剪裁所有四个阶段的权重以实现稳定性。对于本文的其余部分(以及图2中的消融),我们将AGC应用于除最终线性层之外的每一层。

5.无归一化器架构,提高了准确性和训练速度

  在上一节中,我们介绍了AGC,这是一种梯度裁剪方法,使我们能够在大批量和强数据增强的情况下进行有效训练。有了这项技术,我们现在寻求设计具有最先进精度和训练速度的无归一化器架构。

  图像分类的当前技术状态通常由EfficientNet模型家族(Tan&Le,2019)持有,该模型基于反向瓶颈块的变体(Sandler et al.,2018),具有源自神经架构搜索的主干和模型缩放策略。这些模型经过优化,在最小化参数和FLOP计数的同时最大限度地提高了测试精度,但其较低的理论计算复杂性并不能转化为现代加速器上训练速度的提高。尽管与ResNet-50相比,EffNet BO的FLOPS减少了10倍,但在GPU或TPU上训练时,它具有相似的训练延迟和最终性能。

  选择哪种指标进行优化——理论FLOPS、目标设备上的推理延迟或加速器上的训练延迟是一个偏好问题,每个指标的性质将产生不同的设计要求。在这项工作中,我们选择专注于手动设计模型

  针对现有加速器上的训练延迟进行了优化,如Radosavovic等人(2020)所述。未来的加速器可能能够充分利用EfficientNets等模型在很大程度上无法实现的潜在训练速度,因此我们认为这一方向不应被忽视(Hooker,2020),但我们预计,在当前硬件上开发训练速度提高的模型将有利于加速研究。我们注意到,GPU和TPU等加速器倾向于支持密集计算,尽管这两个平台之间存在差异,但它们有足够的共同点,为一个设备设计的模型可能会在另一个设备上快速训练。

  因此,我们通过手动搜索设计趋势来探索模型设计的空间,这些设计趋势相对于设备上的实际训练延迟对ImageNet上的前1名的排列前沿产生了改进。本节描述了我们发现效果良好的更改(更多细节见附录C),而我们发现效果不佳的想法见附录E。这些更改的摘要如图3所示,它们对保持准确性的影响如表2所示。

  NFNets系列如上,类似于EfficientNets一样,深度,分辨率以及不同的Dropout。这一些网络基于SE-ResNeXt-D,使用GELU作为激活函数,并处于对硬件性能与特点的考虑将3*3卷积的group width设为 128,并修改深度模式为 [1, 2, 6, 3]的倍数,修改 ResNets 的通道模式 [ 256, 512, 1024, 2048] 至 [ 256, 512, 1536, 1536],使用了FixRes。

  NFNet的命名规则,如NFNet-F0 对应的 stage 使用的 block 数为 [1, 2, 6, 3],NFNet-F1 对应 [ 2, 4, 12, 6],NFNet-F6 对应 [7, 14, 42, 21]。

  我们从SE-ResNeXt-D模型开始(Xie等人,2017;Hu等人,2018;He等人,2019)和GELU激活(Hendrycks&Gimpel,2016),我们发现这是Normalizer Free Networks的一个惊人的强基线。我们做了以下更改。首先,我们将3×3卷积中的组宽度(每个输出单元连接的通道数)设置为128,而与块宽度无关。较小的组宽度降低了理论FLOPS,但计算密度的降低意味着在许多现代加速器上没有实现实际的加速。例如,在TPU3上,组宽度为8列的SE-ResNeXt-50与组宽度为128列的SE-ResNeXt-50以相同的速度运行,但每个设备的批量大小为128或更大(Google,2021),这通常由于内存限制而无法实现。

  接下来,我们对模型主干进行两次更改。首先,我们注意到ResNets的默认深度缩放模式(例如,增加深度以从ResNet50构建ResNet101或ResNet200的方法)涉及非均匀增加第二层中的层数。和第三阶段,同时在第一和第四阶段中保持3个块,其中“阶段”是指激活宽度相同且分辨率相同的残差块序列。我们发现这种策略是次优的。早期阶段的层以更高的分辨率运行,需要更多的内存和计算,并倾向于学习本地化的任务通用特征(Krizhevsky et al.,2012),而后期阶段的层则以较低的分辨率工作,包含模型的大部分参数,并学习更多的任务特定特征(Raghu et al.,2017a)。然而,对早期阶段过于吝啬(例如通过激进的下采样)可能会影响性能,因为模型需要足够的能力来提取良好的局部特征(Raghu等人,2017b)。还希望有一个简单的缩放规则来构建更深层次的变体(Tan&Le,2019)。考虑到这些原则,在确定简单模式[1,2,6,3](指示要分配给每个阶段的瓶颈块数量)之前,我们探索了最小模型变体FO的几种骨干选择。我们通过将每个阶段的深度乘以标量N来构建更深的变量,例如,变量F1具有深度模式[2,4,12,6],而变量F4具有深度模式[5,10,30,15]。

  此外,我们重新考虑中的默认宽度模式 ResNets,其中第一级具有256个通道,这些通道在每个后续级加倍,从而产生模式[256,512,1024,2048]。采用上述深度模式,我们考虑了一系列替代模式(灵感来自Radosavovic等人(2020),但发现只有一种选择比默认模式更好:[256,512,1531,6536]。这种宽度模式旨在提高第三阶段的能力,同时在第四阶段略微降低能力,大致保持训练速度。与我们选择的深度模式和ResNets的默认设计一致,我们发现第三阶段往往是增加容量的最佳位置,我们假设这是因为这个阶段足够深,可以有一个大的感受野和访问更深层次的特征,同时具有比最后阶段略高的分辨率。

  我们还考虑了瓶颈残差块本身的结构。我们考虑了各种预先存在的和新的修改(见附录E),但发现最好的改进来自于在第一个修改之后添加额外的3×3分组conv(伴随非线性)。这种额外的卷积对FLOPS的影响最小,对目标加速器的训练时间几乎没有影响。

  我们还发现,随着模型容量的增加,增加正则化强度是有帮助的。然而,修改权重衰减或随机深度率是无效的,相反,我们根据Tan Le(2019)对Dropout的下降率进行了缩放(Srivastava et al.,2014)。这一步骤尤其重要,因为我们的模型缺乏批规范化的隐式正则化,并且没有显式正则化往往会显著地过拟合。我们得到的模型具有很高的性能,尽管针对训练延迟进行了优化,但在FLOP与准确性方面(尽管不是在参数与准确性方面),仍与更大的EfficientNet变体保持竞争力,如附录A中的图4所示。

  作者发现:

  1,位于浅层的残差块通常分辨率较高,需要更多内存和计算资源,倾向学习一般的特征。位于深层的残差块分辨率较低,包含模型的大部分参数,倾向于学习特定特征。对早期阶段采用激进的下采样会损害性能,模型需要足够容量提取好的局部特征。

  2,对于ResNet  backbone 而言,采样固定的宽度,缩放深度和训练分辨率可以提高速度随着模型容量的增加,有助于增加正则化强度。

  3,与批量归一化模型相比,无归一化模型更适合在非常大规模的数据集上进行预训练后进行微调。

  所以论文以待GLEU激活函数的 SE-ResNeXt-D模型作为 Normalizer-Free网络的基础,除训练加入AGC外,主要做了以下改进:

  • 将3*3卷积变为分组卷积,每组的维度固定为 128, 组数由卷积的输入维度决定。更小的分组维度可以降低理论的计算量,但计算密度的降低导致不能很好的利用设备稠密计算的优势,实际不会带来更多加速。
  • ResNet的深度扩展(从ResNet50扩展至ResNet200) 主要集中在 stage2和stage3,而stage1和stage4保持3个block的形式。这样的做法不是最优的,因为不管低层特征或高层特征,都需要足够的空间去学习。因此,论文先制定最小的 F0 网络的各 stage的block数为 [1, 2, 6, 3],后续更大的网络都是在此基础上以倍数扩展。
  • ResNet的各stage 维度为 [256, 512, 1024, 2048],经过测试之后,改为 [256, 512, 1536, 1536], stage3采用更大的容量,因为其足够深,需要更大的容量去收集特征,而stage4不增加深度主要是为了保持训练速度。

5.1. 总结

  我们的训练配方可以总结如下:首先,将Brock等人的Normalizer Free设置应用于SE-ResNeXt-D,具有修改的宽度和深度模式,以及第二个空间卷积。其次,将AGC应用于除分类器层的线性权重之外的每个参数。对于批量大小1024到4096,请设置入= 0.01,并利用强正则化和数据扩充。有关每个型号变体的附加信息,请参见表1。

6 实验

6.1 在ImageNet上评估NFNets 

  现在,我们将注意力转向在ImageNet上评估我们的NFNet模型,首先是在批量大小为4096的360个时期进行训练时,对我们的架构修改进行消融。我们使用动量系数为0.9的Nesterov动量,如第4节所述,AGC 0.01的削波阈值,以及在通过余弦退火衰减到零之前在5个时期内从0线性增加到1.6的学习率(Loshchilov-Hutter,2017)。从表2的前三行中,我们可以看到,我们对模型所做的两个更改都会导致性能的轻微改进,而训练延迟只有微小的变化(延迟请参见附录中的表6)。

  接下来,我们评估了逐步添加更强增强的效果,将MixUp(Zhang et al.,2017)、RandAugment(RA,(Cubuk et al.,2020)和Cut-Mix(Yun et al.,2019)相结合。我们应用了4层RA,并根据Cubuk等人(2020)的说法,根据图像的分辨率缩放幅度。我们发现,这种缩放特别重要,因为如果幅度相对于图像大小设置得太高(例如,在分辨率为224的图像上使用20的幅度),那么大多数增强图像将完全空白。有关这些震级的完整说明以及如何选择这些震级,请参见附录A。我们在表2中显示,这些数据增强大大提高了性能。最后,在表2的最后一行中,我们还展示了使用默认ResNet阶段宽度烧蚀的完整模型的性能,表明我们在第三和第四阶段略微修改的模式在直接比较下确实有所改进。

  为了完整起见,在附录的表6中,我们还报告了当使用批处理规范化而不是NF策略进行训练时,我们的模型架构的性能。与NF模型相比,这些模型的测试精度略低,训练速度慢20%至40%,即使在使用高度优化的批处理规范化实现而不进行跨副本同步的情况下也是如此。此外,我们发现较大的模型变体F4和F5
在使用批量归一化、使用或不使用AGC进行训练时不稳定。我们将此归因于使用bfloat16训练来在内存中拟合这些较大模型的必要性,这可能会引入数值不精确性,与批量归一化统计的计算交互较差。

  我们在表3中提供了六种模型变体(NFNet FO到F5)的大小、训练延迟(在具有tensorcores的TPU3和V100上)和ImageNet验证准确性的详细总结,以及与具有类似训练延迟的其他模型的比较。我们的NFNet-F5模型达到了86.0%的前1级验证准确率,比之前的技术状态EfficientNet-B8 with MaxUp(Gong et al.,2020)提高了一小部分,我们的NFNet-F1模型与EfficientNet-B7 with RA(Cubuk et al.,2019)的84.7%相匹配,同时训练速度快8.7倍。有关如何测量训练延迟的详细信息,请参阅附录A。

  我们的模型还受益于最近提出的清晰度感知最小化(SAM)(Foret等人,2021)。SAM不是我们标准培训渠道的一部分,因为默认情况下它会使培训时间翻倍,通常只能用于分布式培训。然而,我们对SAM程序进行了一个小的修改,将这一成本降低到增加了20-40%的训练时间(在附录a中解释),并用它来训练我们的两个最大的模型变体,结果是NFNet-F5达到了86.3%的top 1,而NFNet-F6达到了86.5%的top 1。在没有额外数据的情况下,大大提高了ImageNet上现有的技术水平。

  最后,我们还评估了我们的数据挖掘策略在EfficientNets上的性能。我们发现,虽然RA大大提高了EfficientNets相对于基线增强的性能,但将层数增加到2层以上或添加MixUp和CutMix并不能进一步提高它们的性能,这表明我们的性能改进很难通过简单地使用更强的数据增强来获得。我们还发现,使用带余弦退火的SGD代替带阶跃衰减的RMSProp(Tieleman&Hinton,2012)会严重降低EfficientNet的性能,这表明我们的性能改进也不仅仅是因为选择了不同的优化器。

  我们在这个大型数据集上预训练了10个时期的一系列批处理归一化和NF ResNets,然后使用2048的批处理大小和0.1的小学习率同时微调ImageNet上的所有层,并进行15000步的余弦退火,以获得范围[2224320384]内的输入图像分辨率。如表4所示,Normalizer-Free网络在每一种情况下都优于其批量归一化网络,通常以大约1%的绝对前1的幅度。这表明,在迁移学习机制中,去除批量归一化可以直接提高最终性能。

  我们使用我们的NFNet模型进行了同样的实验,预训练了一个NFNet-F4和一个稍宽的变体,我们称之为NFNet-F4+(见附录C)。如附录表5所示,经过20个时期的预训练,我们的NFNet-F4+获得了89.2%的ImageNet前1级准确率。这是迄今为止使用额外训练数据实现的第二高验证精度,仅次于最近的半监督学习基线(Pham et al.,2020),也是使用迁移学习实现的最高精度。

 图3展示了六个不同的NFNets(F0-F5)与其他模型在模型大小,训练延迟和ImageNet验证准确率方面的对比情况。NFNets-F5达到了 86%的SOAT top-1准确率,相比于 EfficientNet-B8有了一定提升;NFNet-F1的测试准确率与 EfficientNet-B7相媲美,同时训练速度提升了 8.7倍。NFNet-F6+SAM 达到了 86.5% 的 top-1 准确率。

  NFNets和其他模型在 ImageNet 数据集上的准确率对比。延迟是指在TPU或者GPU(V100)上运行单个完整训练步骤所需要的毫秒时间。

  此外,研究者使用了一个3亿标注图像的数据集对 NFNet的变体进行了预训练,并针对 ImageNet进行微调。最终,NFNet-F4+在 ImageNet 上获得了 89.2%的top1 准确率。这是迄今为止通过额外训练数据达到的第二高的验证准确率,仅次于目前最强大的半监督学习基线和通过迁移学习达到的最高准确率。

总结

  我们首次展示了在没有归一化层的情况下训练的图像识别模型,不仅可以匹配大规模数据集上最佳BN模型的分类精度,而且大大超过他们,同时仍然可以更快的训练。为了实现这一点,我们引入了自适应梯度裁剪(AGC),这是一种简单的剪裁算法,可以稳定大批量训练,并使我们能够通过强大的数据增强来优化非归一化网络。利用这种技术和简单的架构设计原则,我们开发了一系列模型,无需额外数据即可在ImageNet上获得最先进的性能,同时比竞争方法的训练速度要快得多。我们还表面,与批量标准化模型相比,无标准化模型更适合在超大规模数据集上进行预训练后微调。

深度学习论文翻译解析(二十一):High-Performance Large-Scale Image Recognition Without Normalization的更多相关文章

  1. 深度学习论文翻译解析(十一):OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks

    论文标题:OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks 标题翻译: ...

  2. 深度学习论文翻译解析(二):An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition

    论文标题:An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application ...

  3. 深度学习论文翻译解析(十二):Fast R-CNN

    论文标题:Fast R-CNN 论文作者:Ross Girshick 论文地址:https://www.cv-foundation.org/openaccess/content_iccv_2015/p ...

  4. 深度学习论文翻译解析(四):Faster R-CNN: Down the rabbit hole of modern object detection

    论文标题:Faster R-CNN: Down the rabbit hole of modern object detection 论文作者:Zhi Tian , Weilin Huang, Ton ...

  5. 深度学习论文翻译解析(三):Detecting Text in Natural Image with Connectionist Text Proposal Network

    论文标题:Detecting Text in Natural Image with Connectionist Text Proposal Network 论文作者:Zhi Tian , Weilin ...

  6. 深度学习论文翻译解析(五):Siamese Neural Networks for One-shot Image Recognition

    论文标题:Siamese Neural Networks for One-shot Image Recognition 论文作者: Gregory Koch   Richard Zemel Rusla ...

  7. 深度学习论文翻译解析(六):MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Appliications

    论文标题:MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Appliications 论文作者:Andrew ...

  8. 深度学习论文翻译解析(八):Rich feature hierarchies for accurate object detection and semantic segmentation

    论文标题:Rich feature hierarchies for accurate object detection and semantic segmentation 标题翻译:丰富的特征层次结构 ...

  9. 深度学习论文翻译解析(九):Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    论文标题:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 标题翻译:用于视觉识别的深度卷积神 ...

  10. 深度学习论文翻译解析(十):Visualizing and Understanding Convolutional Networks

    论文标题:Visualizing and Understanding Convolutional Networks 标题翻译:可视化和理解卷积网络 论文作者:Matthew D. Zeiler  Ro ...

随机推荐

  1. 如何修改OSW图表中显示的主机名称

    本次测试的OSW版本:831 有人可能会说这种需求是吃饱了撑的吗,谁没事儿改这个名称干嘛啊? 其实并不是,因为有些生产案例非常典型,分享讲解时也需要配合OSW的趋势图来展示,但是出于保护客户隐私(哪怕 ...

  2. NC25005 [USACO 2008 Ope S]Clear And Present Danger

    题目链接 题目 题目描述 Farmer John is on a boat seeking fabled treasure on one of the N (1 <= N <= 100) ...

  3. NC19158 失衡天平

    题目链接 题目 题目描述 终于Alice走出了大魔王的陷阱,可是现在傻傻的她忘了带武器了,这可如何是好???这个时候,一个神秘老人走到她面前答应无偿给她武器,但老人有个条件,需要将所选武器分别放在天平 ...

  4. Linux IOS镜像中查看Kernel 版本号

    开ISO镜像,到rpm包的目录里面去找到kernel-********.RPM这个包,中间的星号那一段就是内核版本

  5. SpringBoot+Shiro+LayUI权限管理系统项目-8.实现日志管理

    1.说明 基于注解和AOP实现的日志管理.只讲解关键部分,详细看源码,文章下方捐赠或QQ联系捐赠获取. 2.功能展示 包括日志搜索.查看详情和批量删除. 3.业务模型 @Data @TableName ...

  6. centos7下修改mysql5.5字符集

    1.查看现有数据库编码 show variables like "%char%"; 2.修改mysql配置文件:/etc/my.cnf(以实际安装环境为准) 在[client]字段 ...

  7. vivo 短视频体验与成本优化实践

    作者:来自 vivo 互联网短视频研发团队 本文根据蔡创业.马运杰老师在"2023 vivo开发者大会"现场演讲内容整理而成. 在线点播场景,播放体验提升与成本优化是同等重要的两件 ...

  8. CSDN的Markdown编辑器使用说明

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一 ...

  9. Java 使用 itext 向PDF插入数据和图片

    Java 使用 itext 向PDF插入数据和图片 一.下载Adobe Acrobat DC 二.制作模板 1.准备一个word模板,并转换成PDF格式 2.使用Adobe Acrobat DC打开P ...

  10. 看看 ChatGPT 给的前端面试题

    以下是一些可能出现在中国互联网公司前端开发工程师面试中的题目: 解释一下 CSS 盒模型,并说明其中的各个部分. 请解释一下响应式设计是什么,以及你是如何实现响应式设计的. 什么是跨域资源共享(COR ...