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



相关文章
|
Linux 异构计算 Docker
实战 Google Colab,一起用 GPU
实战 Google Colab,一起用 GPU
842 0
|
机器学习/深度学习 编解码 自然语言处理
Vision Transformer 必读系列之图像分类综述(二): Attention-based(上)
Transformer 结构是 Google 在 2017 年为解决机器翻译任务(例如英文翻译为中文)而提出,从题目中可以看出主要是靠 Attention 注意力机制,其最大特点是抛弃了传统的 CNN 和 RNN,整个网络结构完全是由 Attention 机制组成。为此需要先解释何为注意力机制,然后再分析模型结构。
1457 0
Vision Transformer 必读系列之图像分类综述(二): Attention-based(上)
|
6月前
|
存储 人工智能 算法
AI测试平台实战:深入解析自动化评分和多模型对比评测
在AI技术迅猛发展的今天,测试工程师面临着如何高效评估大模型性能的全新挑战。本文将深入探讨AI测试平台中自动化评分与多模型对比评测的关键技术与实践方法,为测试工程师提供可落地的解决方案。
|
机器学习/深度学习
神经网络与深度学习---验证集(测试集)准确率高于训练集准确率的原因
本文分析了神经网络中验证集(测试集)准确率高于训练集准确率的四个可能原因,包括数据集大小和分布不均、模型正则化过度、批处理后准确率计算时机不同,以及训练集预处理过度导致分布变化。
|
机器学习/深度学习 自然语言处理 算法
机器学习和深度学习之间的区别
机器学习和深度学习在实际应用中各有优势和局限性。机器学习适用于一些数据量较小、问题相对简单、对模型解释性要求较高的场景;而深度学习则在处理大规模、复杂的数据和任务时表现出色,但需要更多的计算资源和数据,并且模型的解释性较差。在实际应用中,需要根据具体的问题和需求,结合两者的优势,选择合适的方法来解决问题。
816 0
|
存储
阿里云盘企业版收费标准:不同人数、存储空间价格表
2024年最新阿里云盘企业版收费标准发布,企业网盘新规格上线,首月免费试用,最高可节省87%费用。提供5人至100人的多种存储方案,具体价格表和详细对比请见文章。
3635 10
|
存储 弹性计算 安全
阿里云服务器ECS详解:云服务器是什么,云服务器优势和应用场景及价格参考
云服务器ECS是阿里云众多云产品中,最受用户关注的产品,阿里云服务器提供多样化的计算能力,支持x86、Arm架构,涵盖CPU、GPU等多种服务器类型,满足各种用户需求。本文为大家详细介绍阿里云服务器是什么?云服务器的优势和应用场景,以及最新价格情况,以供大家参考。
|
人工智能 程序员
专业程序员进阶之路:从需求出发
在软件开发中,需求管理是关键,尤其对程序员的成长至关重要。文章以AI智能回收机项目为例,揭示了混乱、不清晰的需求如何阻碍项目进展。需求是设计的基础,没有正确需求意味着设计错误。程序员往往无形中承担了部分需求分析工作,需学会从用户角度理解和控制需求。需求过程包括问题定义和需求分析,前者清晰陈述问题,后者侧重业务而非技术。正确接收需求需深入业务、挖掘本源、全面考虑需求关系。通过学习和实践,程序员能提升需求管理能力,进而专业进阶。
463 1
|
机器学习/深度学习 人工智能 自然语言处理
AIGC生成表情包
7月更文挑战第3天
|
资源调度 JavaScript 前端开发
比 nvm 更好用的 node 版本管理工具
Volta 是一种管理 JavaScript 命令行工具的便捷方式。
750 1

热门文章

最新文章