经典论文系列 | Group Normalization & BN的缺陷

简介: 本文是何凯明在18年发表的论文,论文提出了BN中存在的问题,即模型性能受到Batch Size的影响,当batch size比较小时,模型性能退化严重,且BN的存在使得在受到内存限制的应用很难使用预训练。本文基于这些问题提出了Group Normalization,GN很好地避免了这些问题,模型性能不会受到BatchSize的影响。此外,在论文中作者将两者与其它一些归一化方法(如Layer Normalization、Instance Normalization)进行了介绍与实验对比。

本文是何凯明在18年发表的论文,论文提出了BN中存在的问题,即模型性能受到Batch Size的影响,当batch size比较小时,模型性能退化严重,且BN的存在使得在受到内存限制的应用很难使用预训练。


本文基于这些问题提出了Group Normalization,GN很好地避免了这些问题,模型性能不会受到BatchSize的影响。


此外,在论文中作者将两者与其它一些归一化方法(如Layer Normalization、Instance Normalization)进行了介绍与实验对比。

 

论文:Group Normalization

 

主要思想


Batch Normalization(BN)是深度学习发展中的一个里程碑式技术,它使各种网络都可以进行训练。然而,沿batch维度进行归一化会带来问题:由于批次统计信息估算不准确,当batch size变小时,BN的误差会迅速增加。这限制了BN用于训练更大的模型以及将特征转移到计算机视觉任务(包括检测,分割和视频)的应用,这些任务需要小批量,并且受内存消耗的限制。


在本文中,我们提出了Group Normalization(GN)作为BN的一种简单替代方案。

GN将通道分为几组,并在每组内计算均值和方差以进行归一化。GN的计算不受批次大小的影响,并且其精度在各种批次大小中都是稳定的。在使用ImageNet训练的ResNet-50上,当使用2的批次大小时,GN的错误比其BN低10.6%;


当使用常用的batch size时,GN与BN性能接近,并且胜过其他归一化方法。 而且,GN可以自然地从预训练过渡到fine-tuning。 GN在COCO中的目标检测和分割以及Kinetics中的视频分类方面,可以胜过其基于BN的同类模型,这表明GN可以在各种任务中有效替代功能强大的BN。


只需几行代码即可轻松实现GN。

 

一些细节


为方便基础薄弱的读者理解,先简单回顾一下Batch Normalization。


在公众号模型解读系列里《Inception系列之Inception_v2》(点击进入)中有对Batch Normalization进行完整解读。


c639e91e8a46d5455f3498f3f088a348.png

BN算法如上图所示,BN算法计算同一个batch中数据的均值和方差,再进行归一化,最后进行尺度缩放和偏移。注:BN只计算一个batch中同一个通道上的数据,每个通道都会计算一次的均值和方差,这也就是为什么代码中(如nn.BatchNorm2d)中需要输入通道数。


可以看到上面这个算法是依赖于m(也就是batchsize)的,且ɣ和β都是在训练中学习的参数,这两个因素也是导致BN存在问题的关键所在。


 

回到本文,如下图所示,当batch size变小时,ImageNet 分类错误率急剧增加。这是因为小batch size下均值和方差代表的样本数量少,相比于大batch,随机性更大。尺度缩放和偏移的估计也没那么准确。在一些需要大分辨率的计算机视觉任务上(如目标检测,语义分割)由于内存限制而只能使用小batchsize,这也导致了预训练模型在ImageNet这种小分辨率图像上的预训练后得出的尺度缩放系数和偏移系数不够准确。

fc0917565e692ef88aa42b0d19e8f280.png作者将几种归一化方法用如下示意图进行了对比,这个图很好地体现了这几种方法的区别。这里为了表示方便,把HxW reshape成了H*W。


22abffcc4cbd67b643bf1b60b5777fdc.png

可以看到,Batch Norm是将一个batch下同一通道下进行归一化;Layer Norm是在同一个样本下所有通道进行归一化;Instance Norm是每个样本的每个通道进行归一化;Group Norm是将一个样本下的通道分成G组,对每组进行归一化。


Layer Norm和Instance Norm可以当成是Group Norm的两种特殊情况,即G取C通道大小时,Group Norm就变成了Instance Norm,G取1时,就变成了Layer Norm。

从图中可以看出,除了Batch Norm,后面三个都与Batch Size无关,因此这三种归一化都不会受到Batch Size的影响。


结合前面对Batch Norm算法的简要回顾,介绍到这里,Group Norm其实就已经很清楚了,因为它使用的归一化公式也是Batch Norm的公式,只是在计算均值和方差所用到的数据的范围不一样。其实这三种方法的区别也都是这个。

 

实现代码


如下所示是GroupNorm用tensorflow实现的代码:

45639c9663c2901c20e7a3d847aaca4c.png

实验结论

fd9e3d964cc658e98cdf2cec1626254d.png如上图所示,在训练阶段,GN的错误率略低于BN,而在验证阶段,BN的错误率略低于GN,但都明显优于LN和IN。


fa738aae8bf4d75b0f065a4c8c20a440.png

如上图和下表所示,当使用不同的batch Size,BN的性能明显退化,而GN的模型始终都一致。

e5384034de05481ce50f1a9b4d9db965.png

下一篇将对所有归一化方法做一个技术总结,将放在CV技术总结系列。



相关文章
|
6月前
|
机器学习/深度学习 算法 PyTorch
【PyTorch实战演练】Fast R-CNN中的RoI(Region of Interest)池化详解
【PyTorch实战演练】Fast R-CNN中的RoI(Region of Interest)池化详解
171 1
|
机器学习/深度学习 PyTorch Go
YOLOv5的Tricks | 【Trick4】参数重结构化(融合Conv+BatchNorm2d)
这篇文章是想要记录yolov5在模型搭建过程中的一个融合模块,就是把卷积与批归一化的参数进行融合,想卷积带有批归一化的性质,使得推理过程中可以加快模型推理速度,简化整个模型结构,实现训练与推理两个阶段的解耦。
907 0
YOLOv5的Tricks | 【Trick4】参数重结构化(融合Conv+BatchNorm2d)
|
5月前
|
存储 机器学习/深度学习 计算机视觉
【YOLOv8改进-卷积Conv】 OREPA(Online Convolutional Re-parameterization):在线卷积重参数化
**OREPA**是在线卷积重参数化的缩写,它提出了一种两阶段流程来减少深度模型训练的开销。该方法通过线性缩放层优化复杂训练块,并在训练完成后将其压缩为单个卷积层,降低内存使用和提高训练速度。与现有技术相比,OREPA能减少约70%的训练内存开销,提升2倍训练速度,并在ImageNet上提高最多0.6%的准确性。此外,它还在目标检测和语义分割任务中表现出色。论文和代码可在提供的链接中找到。
|
机器学习/深度学习 Python
深度学习基础(一):sigmoid/softmax/cross Entropy
深度学习基础(一):sigmoid/softmax/cross Entropy
177 0
|
计算机视觉
Shunted Self-Attention | 源于 PvT又高于PvT,解决小目标问题的ViT方法(二)
Shunted Self-Attention | 源于 PvT又高于PvT,解决小目标问题的ViT方法(二)
90 0
|
机器学习/深度学习 并行计算 计算机视觉
Shunted Self-Attention | 源于 PvT又高于PvT,解决小目标问题的ViT方法(一)
Shunted Self-Attention | 源于 PvT又高于PvT,解决小目标问题的ViT方法(一)
240 0
|
机器学习/深度学习 编解码 监控
NWD-Based Model | 小目标检测新范式,抛弃IoU-Based暴力涨点(登顶SOTA)(一)
NWD-Based Model | 小目标检测新范式,抛弃IoU-Based暴力涨点(登顶SOTA)(一)
890 0
|
数据可视化 计算机视觉
NWD-Based Model | 小目标检测新范式,抛弃IoU-Based暴力涨点(登顶SOTA)(二)
NWD-Based Model | 小目标检测新范式,抛弃IoU-Based暴力涨点(登顶SOTA)(二)
716 0
|
机器学习/深度学习 自然语言处理 JavaScript
R-Drop: Regularized Dropout for Neural Networks 论文笔记(介绍,模型结构介绍、代码、拓展KL散度等知识)
R-Drop: Regularized Dropout for Neural Networks 论文笔记(介绍,模型结构介绍、代码、拓展KL散度等知识)
|
机器学习/深度学习 人工智能 资源调度
深度学习入门基础CNN系列——批归一化(Batch Normalization)和丢弃法(dropout)
批归一化方法(Batch Normalization,BatchNorm)是由Ioffe和Szegedy于2015年提出的,已被广泛应用在深度学习中,其目的是对神经网络中间层的输出进行标准化处理,使得中间层的输出更加稳定。丢弃法(Dropout)是深度学习中一种常用的抑制过拟合的方法,其做法是在神经网络学习过程中,随机删除一部分神经元。训练时,随机选出一部分神经元,将其输出设置为0,这些神经元将不对外传递信号。
521 0
深度学习入门基础CNN系列——批归一化(Batch Normalization)和丢弃法(dropout)