经典论文系列 | 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技术总结系列。



相关文章
|
机器学习/深度学习 PyTorch Go
YOLOv5的Tricks | 【Trick4】参数重结构化(融合Conv+BatchNorm2d)
这篇文章是想要记录yolov5在模型搭建过程中的一个融合模块,就是把卷积与批归一化的参数进行融合,想卷积带有批归一化的性质,使得推理过程中可以加快模型推理速度,简化整个模型结构,实现训练与推理两个阶段的解耦。
940 0
YOLOv5的Tricks | 【Trick4】参数重结构化(融合Conv+BatchNorm2d)
|
7月前
|
机器学习/深度学习 网络架构 计算机视觉
YOLOv5改进有效涨点系列->适合多种检测场景的BiFormer注意力机制(Bi-level Routing Attention)
YOLOv5改进有效涨点系列->适合多种检测场景的BiFormer注意力机制(Bi-level Routing Attention)
338 0
|
5月前
|
机器学习/深度学习 数据采集 监控
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient
**神经网络与AI学习概览** - 探讨神经网络设计,包括MLP、RNN、CNN,激活函数如ReLU,以及隐藏层设计,强调网络结构与任务匹配。 - 参数初始化与优化涉及Xavier/He初始化,权重和偏置初始化,优化算法如SGD、Adam,针对不同场景选择。 - 学习率调整与正则化,如动态学习率、L1/L2正则化、早停法和Dropout,以改善训练和泛化。
49 0
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient
|
6月前
|
存储 机器学习/深度学习 计算机视觉
【YOLOv8改进-卷积Conv】 OREPA(Online Convolutional Re-parameterization):在线卷积重参数化
**OREPA**是在线卷积重参数化的缩写,它提出了一种两阶段流程来减少深度模型训练的开销。该方法通过线性缩放层优化复杂训练块,并在训练完成后将其压缩为单个卷积层,降低内存使用和提高训练速度。与现有技术相比,OREPA能减少约70%的训练内存开销,提升2倍训练速度,并在ImageNet上提高最多0.6%的准确性。此外,它还在目标检测和语义分割任务中表现出色。论文和代码可在提供的链接中找到。
|
6月前
|
机器学习/深度学习 算法 计算机视觉
【YOLOv8改进】CPCA(Channel prior convolutional attention)中的通道注意力,增强特征表征能力 (论文笔记+引入代码)
该专栏聚焦YOLO目标检测的创新改进与实战,介绍了一种针对医学图像分割的通道优先卷积注意力(CPCA)方法。CPCA结合通道和空间注意力,通过多尺度深度卷积提升性能。提出的CPCANet网络在有限计算资源下,于多个数据集上展现优越分割效果。代码已开源。了解更多详情,请访问提供的专栏链接。
|
6月前
|
机器学习/深度学习 计算机视觉 知识图谱
【YOLOv8改进】ACmix(Mixed Self-Attention and Convolution) (论文笔记+引入代码)
YOLO目标检测专栏探讨了YOLO的改进,包括卷积和自注意力机制的创新结合。研究发现两者在计算上存在关联,卷积可分解为1×1卷积,自注意力也可视为1×1卷积的变形。由此提出ACmix模型,它整合两种范式,降低计算开销,同时提升图像识别和下游任务的性能。ACmix优化了移位操作,采用模块化设计,实现两种技术优势的高效融合。代码和预训练模型可在相关GitHub和MindSpore模型库找到。 yolov8中引入了ACmix模块,详细配置参见指定链接。
|
6月前
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】EMA(Efficient Multi-Scale Attention):基于跨空间学习的高效多尺度注意力 (论文笔记+引入代码)
YOLO目标检测专栏介绍了创新的多尺度注意力模块EMA,它强化通道和空间信息处理,同时降低计算负担。EMA模块通过通道重塑和并行子网络优化特征表示,增强长距离依赖建模,在保持效率的同时提升模型性能。适用于图像分类和目标检测任务,尤其在YOLOv8中表现出色。代码实现和详细配置可在文中链接找到。
|
机器学习/深度学习 人工智能 算法
【Pytorch神经网络实战案例】21 基于Cora数据集实现Multi_Sample Dropout图卷积网络模型的论文分类
是在Dropout随机选取节点丢弃的部分上进行优化,即将Dropout随机选取的一组节点变成随机选取多组节点,并计算每组节点的结果和反向传播的损失值。最终,将计算多组的损失值进行平均,得到最终的损失值,并用其更新网络,如图9-19所示。
258 0
【Pytorch神经网络实战案例】21 基于Cora数据集实现Multi_Sample Dropout图卷积网络模型的论文分类
|
机器学习/深度学习 人工智能 资源调度
深度学习入门基础CNN系列——批归一化(Batch Normalization)和丢弃法(dropout)
批归一化方法(Batch Normalization,BatchNorm)是由Ioffe和Szegedy于2015年提出的,已被广泛应用在深度学习中,其目的是对神经网络中间层的输出进行标准化处理,使得中间层的输出更加稳定。丢弃法(Dropout)是深度学习中一种常用的抑制过拟合的方法,其做法是在神经网络学习过程中,随机删除一部分神经元。训练时,随机选出一部分神经元,将其输出设置为0,这些神经元将不对外传递信号。
586 1
深度学习入门基础CNN系列——批归一化(Batch Normalization)和丢弃法(dropout)
|
计算机视觉
Shunted Self-Attention | 源于 PvT又高于PvT,解决小目标问题的ViT方法(二)
Shunted Self-Attention | 源于 PvT又高于PvT,解决小目标问题的ViT方法(二)
93 0