作者: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. 洛谷 P1357 花园 解题报告

    P1357 花园 题目描述 小\(L\)有一座环形花园,沿花园的顺时针方向,他把各个花圃编号为\(1~N(2<=N<=10^{15})\).他的环形花园每天都会换一个新花样,但他的花园都不 ...

  2. Java考试题之十

    QUESTION 230 Given: 10. class One { 11. public One foo() { return this; } 12. } 13. class Two extend ...

  3. ASP.NET MVC3 入门指南之数据验证[源码RAR下载]

    http://www.cnblogs.com/BingoLee/archive/2011/12/23/2298822.html 前言: 无论你编写什么样的网页程序,都需要对用户的数据进行验证,以确数据 ...

  4. redis 新开端口号

    2012 ps aux | grep redis 2013 cd /usr/local/redis/ 2014 ls 2015 cd etc/ 2016 ls 2017 cp redis.conf r ...

  5. Tomcat权威指南-读书摘要系列4

    4. Tomcat的性能调校 测量Web服务器的性能 测试负载的工具 Apache Benchmark Siege JMeter

  6. IOS取消performSelector警告

    #pragma clang diagnostic push #pragma clang diagnostic ignored "-Warc-performSelector-leaks&quo ...

  7. python---基础知识回顾(六)网络编程2(处理粘包)

    前戏: 之前在python---基础知识回顾(六)网络编程异步模块中提到过粘包现象,而且在使用twisted中提到过一种处理办法,按行接收lineReceived,当收到\r\n换行符时,才去缓冲区中 ...

  8. Ubuntu硬盘空间不足时,添加硬盘的方法

    Ubuntu下重新挂载一个硬盘:方法如下: 1 .在Vmware中关闭Ubuntu虚拟机,在设置中,添加新的硬件设备,选择Hard Disk.(这里如果不关闭Ubuntu系统就不能增加新的硬件设备) ...

  9. [LeetCode] 329. Longest Increasing Path in a Matrix ☆☆☆

    Given an integer matrix, find the length of the longest increasing path. From each cell, you can eit ...

  10. 奇葩字符 "a๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎" 的简单分析

    这个其实之前火过一阵子,当时也没怎么注意,今天看到空间里又有人在刷这个字符了,所以决定分析下他是什么东西.复制这个字符在控制台查看 "a๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎".l ...