Group Normalization

Group Normalization

批量归一化(BN)是深度学习发展中的里程碑技术,可以实现各种网络的训练。然而,沿着Batch维度进行归一化会带来一些问题–当批次规模变小时,BN的误差会迅速增加,这是Batch统计估计不准确造成的。这限制了BN在训练大型模型和将特征转移到计算机视觉任务(包括检测、分割和视频)中的使用,这些任务需要小批量的内存消耗限制。在本文中,我们提出了Group Normalization(GN)作为BN的简单替代方法。GN将通道分成若干组,并在每组内计算均值和方差进行归一化。GN的计算不受batch sizes的影响,在很大的batch sizes范围内,GN的精度都很稳定。在ImageNet中训练的ResNet-50上,当使用batch sizes大小为2时,GN的误差比BN低10.6%;当使用典型的batch sizes时,GN与BN相当,并优于其他归一化变种。此外,GN可以自然地从预训练转移到微调。在COCO中,GN在目标检测和分割方面的表现优于BN,1在Kinetics中,GN在视频分类方面的表现也优于BN,这表明GN可以在各种任务中有效地替代强大的BN。GN在现代库中只需几行代码就能轻松实现。

1. Introduction

批量归一化(Batch Norm或BN)[26]已被确立为深度学习中一个非常有效的组件,在很大程度上帮助推动了计算机视觉[59,20]及其他领域的前沿[54]。BN通过在一个(迷你)批次内计算的均值和方差对特征进行标准化。这已经被许多实践证明,可以简化优化,使很深的网络能够收敛。批量统计的随机不确定性也可以作为正则化器,有利于泛化。BN已经成为许多统计学计算机视觉算法的基础。

在这里插入图片描述

图1.ImageNet分类误差与batch sizes的关系。ImageNet分类误差与批次大小。这是在ImageNet训练集中使用8个worker(GPU)训练的ResNet-50模型,在验证集中进行评估。

尽管BN取得了巨大的成功,但它也有缺点,这些缺点也是由它沿batch维度进行归一化的独特行为引起的。特别是,BN需要在足够大的batch size下工作(例如,每个工人32个2[26,59,20])。小批量会导致批量统计的估计不准确,而减小BN的批量大小会使模型误差急剧增加(图1)。因此,最近的许多模型[59,20,57,24,63]都是用非平凡的批量大小来训练的,这些模型都很耗费内存。严重依赖BN的有效性来训练模型,又使人们无法探索更高容量的模型,而这些模型会受到内存的限制。

在计算机视觉任务中,包括检测[12,47,18]、分割[38,18]、视频识别[60,6]以及其他建立在其上的高级系统中,对批量大小的限制要求更高。例如,Fast/er和Mask R-CNN框架[12,47,18]由于分辨率较高,使用1或2张图像的批量大小,BN通过转化为线性层来 “冻结”[20];在3D卷积的视频分类[60,6]中,空间-时间特征的存在引入了时间长度和批量大小之间的权衡。BN的使用往往要求这些系统在模型设计和批量大小之间进行折衷。

在这里插入图片描述

图2。标准化方法。每个子图显示一个特征映射张量,N为batch轴,C为通道轴,(H,W)为空间轴。蓝色的像素用相同的平均值和方差进行标准化,计算方法是aggregating这些像素的值。

本文介绍了组归一化(GN)作为BN的一个简单替代方案.我们注意到,许多经典特征如SIFT[39]和HOG[9]都是group-wise特征,涉及group-wise归一化。例如,一个HOG向量是几个空间单元的结果,其中每个单元由一个归一化的方向直方图表示。类似地,我们提出GN作为一个层,将通道划分为组,并对每个组内的特征进行归一化(图2)。GN不利用batch维度,其计算与batch大小无关。

GN在广泛的batch sizes范围内表现得非常稳定(图1)。在批量大小为2个样本的情况下,GN的误差比ImageNet[50]中ResNet-50[20]的BN同类产品低10.6%。在常规批次大小的情况下,GN与BN相当好(差距为0.5%),并优于其他归一化变体[3,61,51]。此外,虽然批次大小可能会发生变化,但GN可以自然地从预训练转移到微调。GN在用于COCO目标检测和分割的Mask R-CNN上[37],以及在用于Kinetics视频分类的3D卷积网络上[30],都显示出比其BN同类产品更好的结果。GN在ImageNet、COCO和Kinetics中的有效性表明,GN是在这些任务中占主导地位的BN的一个有竞争力的替代方案。

已有的方法,如层归一化(LN)[3]和实例归一化(IN)[61(图2),也避免了沿批次维度的归一化。这些方法对于训练顺序模型(RNN/LSTM[49,22])或生成模型(GANs[15,27])是有效的。但正如我们将通过实验表明的那样,LN和IN在视觉识别中的成功率都很有限,对于视觉识别,GN呈现出更好的结果。相反,GN可以用来代替LN和IN,因此适用于顺序模型或生成模型。这超出了本文的重点范围,但对今后的研究有提示意义。

2. Related Work

Normalization. 众所周知,对输入数据进行归一化可以使训练速度更快[33]。为了对hidden features进行归一化,人们基于特征分布的强假设推导出了初始化方法[33,14,19],这些方法在训练演化时可能变得无效。

在BN发展之前,深度网络中的归一化层已经被广泛使用。Local Response Normalization (LRN)[40,28,32]是AlexNet[32]和后续模型[64,53,58]中的一个组成部分。与最近的方法[26,3,61]不同的是,LRN计算每个像素在一个小的邻域中的统计数据。

批量归一化[26]沿着batch维度执行更多的全局归一化(同样重要的是,它建议对所有层都这样做)。但是 "batch"的概念并不是一直存在的,或者说它可能会时常变化。例如,批维归一化在推理时是不合法的,所以均值和方差是从训练集中预先计算出来的[26],通常是通过运行平均来计算的;因此,测试时没有进行归一化。当目标数据分布发生变化时,预计算的统计数据也可能发生变化[45]。这些问题导致训练、转移和测试时的不一致性。此外,如前所述,减少批次大小会对估计的batch统计量产生巨大影响。

为了避免利用批次维度,已经提出了几种归一化方法[3,61,51,2,46]。层归一化(LN)[3]沿着通道维度操作,实例归一化(IN)[61]执行BN-likecomputation,但只针对每个样本(图2)。权重归一化(WN)[51]提出对滤波器权重进行归一化,而不是对特征进行操作。这些方法不会受到批维造成的问题的影响,但在许多视觉识别任务中,它们还无法接近BN的精度。我们将在其余章节中提供与这些方法的比较。

Addressing small batches. Ioffe[25]提出了Batch Renormalization(BR),缓解了BN涉及小批量的问题。BR引入了两个额外的参数,将BN的估计均值和方差约束在一定范围内,减少了小批量时的漂移。在小批量制度下,BR比BN有更好的精度。但BR也是依赖于批次的,当批次规模减小时,其精度仍然会降低[25]。

也有人尝试避免使用小批量。[43]中的目标检测器执行同步BN,其均值和方差是在多个GPU上计算的。然而,这种方法并不能解决小批量的问题,相反,它将算法问题迁移到工程和硬件需求上,使用的GPU数量与BN的要求成正比。此外,同步BN计算可以防止使用异步求解器(asynchronous solvers ASGD[10]),这是工业界广泛使用的大规模训练的实用解决方案。这些问题会限制同步BN的使用范围

我们的归一化方法没有解决批量统计计算(如[25,43]),而是从本质上避免了这种计算。

Group-wise computation. AlexNet[32]提出了用于将一个模型分配到两个GPU中的分组卷积。组作为模型设计的一个维度的概念最近得到了更广泛的研究。ResNeXt[63]的工作研究了深度、宽度和群组之间的权衡,它认为在计算成本相近的情况下,更大数量的群组可以提高精度。MobileNet[23]和Xception[7]利用了信道卷积(也称为 “深度卷积”),即组数等于信道数的组卷积。ShuffleNet[65]提出了一种通道洗牌操作,对分组特征的轴进行换算。这些方法都涉及到将通道维度划分为组。尽管与这些方法有关系,但GN不需要分组卷积。GN是一个通用层,正如我们在标准ResNets[20]中评估的那样。

3. Group Normalization

3.1. Formulation

我们首先描述了特征归一化的一般表述,然后介绍了这个表述中的GN。一系列的特征归一化方法,包括BN、LN、IN和GN,进行如下计算。

在这里插入图片描述

这里x是一层计算的特征,i是一个索引。在二维图像的情况下, i = ( i N , i C , i H , i W ) i=(i_N,i_C,i_H,i_W) i=(iN,iC,iH,iW)是一个4D向量,按照(N,C,H,W)的顺序对特征进行索引,其中N是batch轴,C是通道轴,H和W是空间高度和宽度轴。

μ \mu μ σ \sigma σ为均值和方差,计算公式为:

在这里插入图片描述

其中 ϵ \epsilon ϵ是一个小的常数。 S i \mathcal S_i Si是计算平均数和标准数的像素集,m是这个集合的大小。许多类型的特征归一化方法主要是在如何定义集 S i \mathcal S_i Sii方面有所不同(图2),讨论如下。

在Batch Norm[26]中,集合 S i \mathcal S_i Si定义为:

在这里插入图片描述

其中 i C i_C iC(和 k C k_C kC)表示i(和k)沿C轴的sub-index。这意味着共享相同通道索引的像素被归一化,即对于每个通道,BN沿(N,H,W)轴计算 μ \mu μ σ \sigma σ 。在层规范[3]中,集合是。

在这里插入图片描述

意味着LN为每个样本计算 μ \mu μ σ \sigma σ 沿(C,H,W)轴。在Instance Norm[61]中,集合为:

在这里插入图片描述

意味着IN为每个样本和每个通道计算和沿(H,W)轴。BN、LN、IN之间的关系如图2所示。

与[26]一样,BN、LN和IN的所有方法都会学习一个per-channel线性变换,以补偿可能丧失的表征能力。

在这里插入图片描述

其中 γ \gamma γ β \beta β为可训练参数和偏置(在所有情况下都以 i C i_C iC为索引,为了简化记号,我们省略了)

Group Norm. 形式上,Group Norm layer在集后 S i \mathcal S_i Si里计算 μ \mu μ σ \sigma σ

在这里插入图片描述

这里G是组的数量,是一个预定义的超参数(默认为G = 32)。 C / G C/G C/G为每个组的通道数。 ⌊ ⋅ ⌋ \lfloor\cdot\rfloor 为下取整操作, " ⌊ k C C / G ⌋ = ⌊ i C C / G ⌋ " "\lfloor\frac{k_C}{C/G}\rfloor=\lfloor\frac{i_C}{C/G}\rfloor" "C/GkC=C/GiC" 意味着索引i和k在同一组通道中,假设每组通道都是沿着C轴按顺序存储的。GN计算 μ \mu μ σ \sigma σ沿(H,W)轴和沿一组C/G通道。GN的计算如图2(最右边)所示,这是一个简单的案例,2组(G=2)每组有3个通道。

给定公式(7)中的 S i \mathcal S_i Si,由Eqn.(1)、(2)和(6)定义一个GN层。具体来说,同一组中的像素由相同的 μ \mu μ σ \sigma σ归一化,GN也学习每通道的 γ \gamma γ β \beta β

Relation to Prior Work. LN、IN和GN都是沿batch轴进行独立计算。GN的两种极端情况相当于LN和IN(图2)。

在这里插入图片描述

Relation to Layer Normalization [3]. 如果我们设置组数为G=1,GN就变成了LN。LN假设一个层中的所有通道都做出 “类似的贡献”[3]。与[3]中研究的完全连接层的情况不同,这个假设在存在卷积的情况下可能不那么有效,这在[3]中讨论过。GN比LN的限制更少,因为每组通道(而不是所有通道)都被假定为受共享的均值和方差的影响;模型仍然可以灵活地学习每组的不同分布。这导致GN的表示能力比LN有所提高,这从实验中较低的训练和验证误差可以看出(图4)。

Relation to Instance Normalization [61]. 如果我们将组数设置为G=C(即每组一个通道),GN就变成了IN。但IN只能依靠空间维度来计算均值和方差,它错过了利用通道依赖性的机会。

3.2. Implementation

在这里插入图片描述

GN在PyTorch[42]和TensorFlow[1]中只需几行代码就能轻松实现,其中支持自动分化。图3显示了基于TensorFlow的代码。事实上,我们只需要指定如何计算均值和方差(“矩”),沿着归一化方法定义的适当轴线计算。

4. Experiments

4.1. Image Classification in ImageNet

我们在ImageNet分类数据集[50]中进行实验,有1000个类,我们在1.28M训练图像上进行训练,在50000张验证图像上进行评估。我们在1.28M的训练图像上进行训练,并在50000张验证图像上进行评估,使用ResNet模型[20]。

Implementation details. 作为标准实践[20,17],我们使用8个GPU来训练所有模型,BN的批均值和方差在每个GPU内计算。我们使用[19]的方法来初始化所有模型的所有卷积。我们使用1来初始化所有的 γ \gamma γ参数,除了每个残差块的最后一个归一化层,我们按照[16]的方法将 γ \gamma γ初始化为0(这样一个残差块的初始状态就是identity)。我们对包括 γ \gamma γ β \beta β在内的所有weight layers使用0.0001的重量衰减(遵循[17],但与[20,16]不同)。我们对所有模型进行100个epochs的训练,并在30、60和90个epochs时降低10倍的学习率。在训练过程中,我们采用[17]实现的[58]的数据增强。我们评估了验证集中224x224个像素的center crops上的Top-1分类误差。为了减少随机变化,我们报告了最后5个epochs[16]的中值错误率。其他实施细节请参见[17]。

我们的基线是用BN训练的ResNet[20]。为了与LN、IN和GN进行比较,我们用特定的变体替换BN。我们对所有模型使用相同的超参数。我们默认为GN设置G=32。

在这里插入图片描述

Comparison of feature normalization methods. 我们首先用32张图像(每个GPU)的常规批量大小进行实验[26,20]。BN在这种体制下工作得很成功,所以这是一个很强的基线来进行比较。图4显示了误差曲线,表1显示了最终结果。图4显示,这些归一化方法都能够收敛。与BN相比,LN有1.7%的小退化。这是一个令人鼓舞的结果,因为它表明沿着卷积网络的所有通道进行归一化(如LN所做的)是相当不错的。IN也使模型收敛,但比BN差4.8%。

在这种BN工作良好的体制下,GN能够接近BN的精度,在验证集中,GN的精度下降了0.5%,这是一个不错的成绩。实际上,图4(左)显示,GN的训练误差比BN低,说明GN对于缓解优化是有效的。GN的验证误差略高,意味着GN失去了BN的一些正则化能力。这是可以理解的,因为BN的均值和方差计算引入了随机批量抽样造成的不确定性,有助于正则化[26]。这种不确定性在GN(和LN/IN)中是没有的。但GN结合合适的正则化器有可能改善结果。这可以作为未来的研究课题。

在这里插入图片描述

在这里插入图片描述

表2. 对批量大小的敏感性。我们显示了ResNet-50在ImageNet中的验证误差(%)。最后一行显示了BN和GN之间的差异。误差曲线见图5。该表在图1中可视化。

Small batch sizes. 虽然BN在某些情况下受益于随机性,但当批次规模变小,不确定性变大时,其误差会增加。我们在图1、图5和表2中对此进行了说明。

我们评估每个GPU的批量大小为32、16、8、4、2张图像。在所有情况下,BN的均值和方差是在每个GPU内计算的,而不是同步的。所有模型都在8个GPU中进行训练。在这组实验中,我们采用线性学习率缩放规则[31,4,16]来适应批次大小的变化–我们对32的批次大小使用0.1[20]的学习率,对N的batch size使用0.1N/32的学习率,如果总的批次大小发生变化(通过改变GPU数量),但每GPU的批次大小不发生变化,这种线性缩放规则对BN的效果很好[16]。我们在所有情况下保持相同的训练epoch数(图5,x轴)。所有其他超参数都没有变化

图5(左)显示,BN的误差随着小批量的大小而变得相当高。GN的行为比较稳定,对批量大小不敏感。实际上,图5(右)显示,GN在32到2的大批量范围内有非常相似的曲线(受随机变化的影响),在批量大小为2的情况下,GN的误差率比BN的误差率低10.6%(24.1%对34.7%)。

这些结果表明,批均值和方差估计可能是过度随机和不准确的,特别是当它们是在4或2张图像上计算的。然而,如果从1张图像中计算统计数据,这种随机性就会消失,在这种情况下,BN在训练时变得与IN相似。我们看到,在批次大小为2的情况下,IN的结果(28.4%)比BN更好(34.7%)

果表明,批均值和方差估计可能是过度随机和不准确的,特别是当它们是在4或2张图像上计算的。然而,如果从1张图像中计算统计数据,这种随机性就会消失,在这种情况下,BN在训练时变得与IN相似。我们看到,在批次大小为2的情况下,IN的结果(28.4%)比BN更好(34.7%)

表2中GN的稳健结果显示了GN的优势。它允许消除BN所施加的批量大小的约束,可以给出相当多的内存(如16个或更多)。这将使训练更大容量的模型成为可能,否则就会受到内存限制的瓶颈。我们希望这将为架构设计创造新的机会

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值