作者:Yuxin,Wu Kaiming He

机构:Facebook AI Research (FAIR)

摘要:BN是深度学习发展中的一个里程碑技术,它使得各种网络得以训练。然而,在batch维度上进行归一化引入如下问题——BN的错误会随着batch size的减小而急剧增加,这是由batch不正确的统计估计造成的。这就限制了BN用于训练由于显存消耗不足而导致batch size受限的大型网络和迁移特征到如检测、分割以及视频等计算机视觉任务。在此论文中,作者提出了Group Normalization(GN)作为BN的简单替代。GN将通道划分成组然后在每一个组中计算用于归一化的均值和方差。GN的计算不依赖于batch size,而且它的准确率在各种batch size下是稳定的。在ImageNet数据集上训练ResNet-50,当使用batch size 为2的时候,GN获得的错误比在相应位置上使用BN低10.6%;当使用典型的batch size,GN比BN相对好,同时相对于其它归一化变体好。此外,GN可以可以很自然地从预训练模型到微调。在COCO的检测、语义分割以及Kinetics数据集的视频分类任务中,在相应位置上使用GN可以比BN获得更出色的表现。这显示了GN可以在很多任务中有效地替换强大的BN。BN可以通过少量代码来实现。

简介:BN是深度学习中一个很有效的组件,极大的推动了计算机视觉的发展。BN是通过计算一个(mini-)batch内的均值和方差来归一化特征的。众多实践证明使用BN的网络易于优化以及使得很深的网络得以收敛。batch统计的随机不确定性也起到有利于泛化的正则化作用。BN已经成为含多先进算法的基石。

虽然BN非常成功,但是在batch维度上截然不同的归一化行为也展露它的不足。在实践中,BN需要足够大的batch size才能达到显著效果。小的batch size会引起batch统计上的错误估计,这会很大地增加模型错误。下图可以看出GN比BN优秀。

图中:是ResNet-50在ImageNet数据集上使用8个GPU进行训练,以及在验证集上验证。图中折线,蓝色BN,红色GN。可见随着batch size的减小,BN的错误率增加,而GN不依赖于BS,其错误率相对稳定。在batch size为2的同等条件下,GN获得比BN低10%的错误率

因此,许多如今的模型由于显存的限制都使用了精心设计的batch size。严重地依赖于BN的效果,变成了限制人们取探索那些大容量但消耗资源的模型。batch size上的限制,会更加要求诸如检测、分割、视频识别的计算机视觉任务以及其它高层系统基于它而建立。比如,Fast/er 和Mask R-CNN框架因为使用了大的分辨率而只能使用batch size为1或者2,其中BN通过转变成线性层进行“冻结”。在使用3D卷积的视频分类任务中,时空特征的存在引入了关于时间长度(temporal length)和batch size的一个权衡。由于BN的使用通常需要系统在模型设计和batch size之间的妥协。

在这篇论文中提出GN,作为BN的一个简单替代。我们注意到许多的特征,类似SIFT和HOG组间特征以及涉及到组间归一化。例如,一个HOG向量是一些空间单元的输出。其中每一个单元由一个已归一化的有向直方图。类似地,我们提出GN作为一个将通道划分成组以及归一化组内的这些特征的层。GN并没有采用batch维度,因此它独立于batch sizes。

除了GN,BN之外,还有LN(Layer Normalization) 和IN(Instance Normalization),这两个也一样防止在batch维度上进行归一化,这个方法在训练序列模型(RNN/LSTM)或者生成模型(GANs).但是正如实验中给出,LN和IN在视觉识别任务中均未能很好表现。而对于GN则表现出较好的结果。换言之,GN可以用于代替LN和IN在序列模型和生成模型中的表现。

相关工作:

归一化层在BN出现之前已经在深度网络中得到广泛应用,Local Response Normalization(LRN)是AlexNet中的组件,它通过计算每一个像素的一个小的邻域的统计量。(待续)

Group Normalization笔记的更多相关文章

  1. Group Normalization

    Group Normalization 2018年03月26日 18:40:43 阅读数:1351 FAIR 团队,吴育昕和恺明大大的新作Group Normalization. 主要的优势在于,BN ...

  2. Batch Normalization、Layer Normalization、Instance Normalization、Group Normalization、Switchable Normalization比较

    深度神经网络难训练一个重要的原因就是深度神经网络涉及很多层的叠加,每一层的参数变化都会导致下一层输入数据分布的变化,随着层数的增加,高层输入数据分布变化会非常剧烈,这就使得高层需要不断适应低层的参数更 ...

  3. 全面解读Group Normalization,对比BN,LN,IN

    前言 Face book AI research(FAIR)吴育昕-何恺明联合推出重磅新作Group Normalization(GN),提出使用Group Normalization 替代深度学习里 ...

  4. MYSQL的group by笔记

    对应的表数据如下 现在的需求是要找出dcid为9951,9957,9064共同拥有的good_code. 第一种方案是 SELECT a.good_code FROM ( SELECT good_co ...

  5. Batch Normalization 笔记

    原理 BN的效果 Why BN works? 原理 输入层可以归一化,那么其他层也应该可以归一化.但是有个重要的问题,为什么要引入beta和gamma. 为什么要引入beta和gamma 不总是要标准 ...

  6. [PyTorch 学习笔记] 6.2 Normalization

    本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson6/bn_and_initialize.py https: ...

  7. 『计算机视觉』各种Normalization层辨析

    『教程』Batch Normalization 层介绍 知乎:详解深度学习中的Normalization,BN/LN/WN 一.两个概念 独立同分布(independent and identical ...

  8. SQL 笔记 By 华仔

    -------------------------------------读书笔记------------------------------- 笔记1-徐 最常用的几种备份方法 笔记2-徐 收缩数据 ...

  9. 深度学习中batch normalization

    目录 1  Batch Normalization笔记 1.1  引包 1.2  构建模型: 1.3  构建训练函数 1.4  结论 Batch Normalization笔记 我们将会用MNIST数 ...

随机推荐

  1. VS开发环境美化

    1.字体,推荐Deja Vu Sans Mono 2.背景色为护眼绿色, 工具-->选项-->环境,字体和颜色,字体改为Deja Vu Sans Mono,项背景 改为

  2. 【省选水题集Day1】一起来AK水题吧! 题目(更新到B)

    题解:http://www.cnblogs.com/ljc20020730/p/6937954.html 水题A: [AHOI2001]质数和分解 题目网址: https://www.luogu.or ...

  3. java多线程 -- Condition 控制线程通信

    Api文档如此定义: Condition 将 Object 监视器方法(wait.notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对 ...

  4. java 批量文件后缀重命名

    import java.io.File; public class BatchFileSuffixRename { public static void main(String[] args) { / ...

  5. python函数:基础函数调用整理

    声明:以下链接和描述据来自于网络,很多都是来自菜鸟教程 一.字符串 str python字符串格式化符号: %c 格式化字符及其ASCII码  %s 格式化字符串 %d 格式化整数 函数 描述 需要掌 ...

  6. 使用uwsgi配置django

    1.uwsgi的安装 pip install uwsgi 2.uwsgi的基本测试: 创建一个test.py文件,内容如下: def application(env, start_response): ...

  7. python常用模块(3)

    ConfigParser模块学习 ConfigParser模块在python中是用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section),每个节可 ...

  8. 《剑指offer》面试题45 圆圈中最后剩下的数字(Java版本)

    引言 这道题网上的讲解都是直接抄书,没意思,所以想自己写一写,补充一下,便于自己理解.另外,大家都忽略了经典解法,虽然这种解法效率不及第二种,但是我觉得在项目当中阅读性其实很重要,牺牲一点点效率保证代 ...

  9. 解除单个文件的与svn服务器的关联

    有些文件和个人开发环境有关不需要和svn服务器做同步,可以取消其和svn服务的关联. 右键选中要取消关联的文件,右键菜单 Tortoise SVN  --->   unversion and a ...

  10. Plot Candlestick Charts in Research of quantopian

    ipython_notebook/Plot Candlestick Charts in Research-.ipynb at master · duanqingshan/ipython_noteboo ...