Group Normalization笔记
作者: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笔记的更多相关文章
- Group Normalization
Group Normalization 2018年03月26日 18:40:43 阅读数:1351 FAIR 团队,吴育昕和恺明大大的新作Group Normalization. 主要的优势在于,BN ...
- Batch Normalization、Layer Normalization、Instance Normalization、Group Normalization、Switchable Normalization比较
深度神经网络难训练一个重要的原因就是深度神经网络涉及很多层的叠加,每一层的参数变化都会导致下一层输入数据分布的变化,随着层数的增加,高层输入数据分布变化会非常剧烈,这就使得高层需要不断适应低层的参数更 ...
- 全面解读Group Normalization,对比BN,LN,IN
前言 Face book AI research(FAIR)吴育昕-何恺明联合推出重磅新作Group Normalization(GN),提出使用Group Normalization 替代深度学习里 ...
- MYSQL的group by笔记
对应的表数据如下 现在的需求是要找出dcid为9951,9957,9064共同拥有的good_code. 第一种方案是 SELECT a.good_code FROM ( SELECT good_co ...
- Batch Normalization 笔记
原理 BN的效果 Why BN works? 原理 输入层可以归一化,那么其他层也应该可以归一化.但是有个重要的问题,为什么要引入beta和gamma. 为什么要引入beta和gamma 不总是要标准 ...
- [PyTorch 学习笔记] 6.2 Normalization
本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson6/bn_and_initialize.py https: ...
- 『计算机视觉』各种Normalization层辨析
『教程』Batch Normalization 层介绍 知乎:详解深度学习中的Normalization,BN/LN/WN 一.两个概念 独立同分布(independent and identical ...
- SQL 笔记 By 华仔
-------------------------------------读书笔记------------------------------- 笔记1-徐 最常用的几种备份方法 笔记2-徐 收缩数据 ...
- 深度学习中batch normalization
目录 1 Batch Normalization笔记 1.1 引包 1.2 构建模型: 1.3 构建训练函数 1.4 结论 Batch Normalization笔记 我们将会用MNIST数 ...
随机推荐
- Bypass AV meterpreter免杀技巧
0x01 meterpreter简介 MetasploitFramework是一个缓冲区溢出测试使用的辅助工具,也可以说是一个漏洞利用和测试平台,它集成了各种平台上常见的溢出漏洞和流行的shellco ...
- 1: @override
@Override是Java5的元数据,自动加上去的一个标志,告诉你说下面这个方法是从父类/接口 继承过来的,需要你重写一次,这样就可以方便你阅读,也不怕会忘记 @Override是伪代码,表示重写( ...
- [转载]hzwer的bzoj题单
counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...
- Java入门:基础算法之从字符串中找到重复的字符
本程序演示从一个字符串中找出重复的字符,并显示重复字符的个数. import java.util.HashMap; import java.util.Map; import java.util.Set ...
- P4310 绝世好题
P4310 绝世好题 题目描述 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len). 说明 对于100%的数据,1<=n ...
- P3155 [CQOI2009]叶子的染色
P3155 [CQOI2009]叶子的染色 题目描述 给一棵m个结点的无根树,你可以选择一个度数大于1的结点作为根,然后给一些结点(根.内部结点和叶子均可)着以黑色或白色.你的着色方案应该保证根结点到 ...
- 《剑指offer》面试题28:字符串的排列(牛客网版本) java
题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述: 输 ...
- day15 接口与异常
接口 是一种独立于类的新机制,它关注的是行为. 接口的意义就体现在——让没有继承关系的类共享这些行为,各有各的具体实现. 设计上:当我们发现一个或多个类的方法相同,又没有继承关系,则考虑接口. 命名: ...
- canvas 入门
<canvas>是HTML5新增的,是可以使用脚本(JavaScript)在其中绘制图像的HTML元素. canvas是由HTML代码配合高度和宽度属性而定义出的可绘制区域,JavaScr ...
- Vue 嵌套数组 数组更新视图不更新
关于Vue的响应式原理,可以看官方文档或其他资料, https://www.jianshu.com/p/34de360d6035 data里定义了一个数组arr,数组的元素可以是同样格式的数组arrC ...