全面解读Group Normalization-(吴育昕-何恺明 ) - 知乎前言 Face book AI research(FAIR)吴育昕-恺明联合推出重磅新作Group Normalization(GN),提出使用Group Normalization 替代深度学习里程碑式的工作Batch normalization,笔者见猎心喜,希望和各位分享此工作…https://zhuanlan.zhihu.com/p/35005794【基础算法】六问透彻理解BN(Batch Normalization) - 知乎一、什么是BN?Batch Normalization是2015年一篇论文中提出的数据归一化方法,往往用在深度神经网络中激活层之前。其作用可以加快模型训练时的收敛速度,使得模型训练过程更加稳定,避免梯度爆炸或者梯度消失。并…https://zhuanlan.zhihu.com/p/93643523batchNormalization与layerNormalization的区别 - 知乎Batch Normalization 的处理对象是对一批样本, Layer Normalization 的处理对象是单个样本。Batch Normalization 是对这批样本的同一维度特征做归一化, Layer Normalization 是对这单个样本的所有维度特征做归一…https://zhuanlan.zhihu.com/p/113233908Batch normalization和Instance normalization的对比? - 知乎看到最近有不少CNN模型用到了instance normalization,比如最近的DeblurGAN [拍照手抖有救了!DeblurGAN…https://www.zhihu.com/question/68730628如何看待FAIR 研究工程师吴育昕和何恺明提交的论文《Group Normalization》? - 知乎多说一点motivation吧. paper里主要围绕batch size这个最trivial的点来说,但是BN使用batch dimension大…https://www.zhihu.com/question/269576836/answer/348670955        本文重点在于关于几种normalization的区别。感觉本文也是针对BN存在的问题,作者也说了第一batch的影响,第二是train/test不一致的影响,对IN和LN做了个这种分组的选择,有了效果之后写的文章,主要是这个group的movitation其实不是那么强,我读完感觉没说清楚,为啥group有效果呢,理论上不一定有效果的,在通道上的解释有点feature map上pair of ghost图的那意思,不管怎么说,借助本文还是可以很好的梳理BN,LN,IN,GN等方式,理解这些normalization。

1.Introduction

BN的问题:it is required for BN to work with a sufficiently large batch size (32 per worker). A small batch leads to inaccurate estimation of the batch statistics, and reducing BN’s batch size increases the model error dramatically.BN需要一个大的batch,小的batch统计出来的数据是不准确的,减少BN的bs会显著的增加模型误差。而在faster/mask rcnn中通常因为输入高分辨率,一个batch只有1到2张图。

论文提的GN在小bs上误差几乎不变,但是BN在小bs上误差变得很高。

但我觉得这种对于BN问题的描述还是不够当然bs是最主要的一点,看一下作者在知乎上的说法:

1.training noise: 一个人的gradient啊,当然要靠他个人,但是也要考虑到和他在一个batch里还有哪些人. 这并不一定是坏事,但是这导致对batch的要求很高,否则noise会失控:

1.1 batch要大,这是一个工程问题. 毕竟去年的coco,Face++主要赢在大batch上,这是最重要的motivation.大bs有助于降低mini-sgd的方差,稳定训练有效。

1.2 batch分布要理想, 这主要取决于task, 复杂的task未必有独立同分布的batch. 比如video里什么是batch很难说. 比如detection里的batch可能包含一张图里重复的框. 比如RL里的一个batch可能会是highly correlated experience.

2 train/test不一致: 因为training time的那个batch维度在test time不一定存在,所以只好用average statistics. 这也不一定是坏事,但是这种用法会带来其他问题:

2.1 算average statistics其实计算量不小, 只不过supervised training的时候在training中能顺便算出来(EMA),到最后EMA一般都是收敛的, 所以感觉不到. 但是其他task未必有一个好的average statistics, 比如一些on-policy的RL就很危险,最近渊栋老师就在RL上遇到过BN的问题.

2.2 实际中并不只有train/test两种mode, fine tuning到底怎么做仍然是不清晰的. BN pretrained model的fine tuning做normalization是不是真的比affine更好?.. 如果做affine,那么statistics要不要重算也不确定.

整体而言,GN不需要考虑上面所有的情况带来的影响,最终的精度和BN还差不多就属于赚了。

2.group normalization

这篇文章可能最经典的就是这张图了,首先明确几点1.BN中的参数beta和gamma也是有维度的,维度和通道保持一致,bn中每一个feature map都有自己的BN,举个例子,假设一个batch上有10张图片,每个图片有RGB三个通道,图片宽高是H,W,那么均值计算就是先计算R通道的像素数值总和除以10*H*W,再计算G通道全部像素值综合除以10*H*W,最后计算B通道的像素值综合除以10*H*W,方差类似,可训练beta和gamma的维度等于张量的通道数,因此RGB三个通道分别需要一个beta和gamma,所以beta和gamma的维度等于3.2.normalization的本质还是让每一层的分布稳定下来,让其落在非线性函数的线性去,远离饱和区,这样保证梯度的回传更加有效,信息保留更完整,也就是所谓的信息流约束。

这张图从左往右看分别是BN,LN,IN,GN,首先明确的是BN是作用在一个batch的样本上的,后面三种normalization都是作用在一个样本上的,后面三种的区别在于,LN作用在一个样本的所有通道上,IN作用在一个样本的一个通道上,GN作用在一个样本的一组通道上,所以最终的输出三者的维度是不一致的。

通常输入的数据维度一般是[N,C,H,W]或者是[N,H,W,C],不同的框架不一样,N是batch size,H/W是feature map的高/宽,C是feature的通道,压缩H/W到一个维度就变成了上图中的三维图,主要分析的是N和C两维。上图从C方向看就是一个个通道(一个通道就是一张feature map,网络在CNN时产生的每一个特征图是上一层所有特征图滤波加权出来,cnn的深度和特征图通道数是一致的),从N方向看就是一张张图,每6个竖着排列的小正方体代表的就是一张图片的一个feature map,蓝色区域表示的一起进行normalization的部分。先看第一张图,BN就是6张图中每一张图的同一个通道一起进行normalization操作,其实是batch中对应的通道归一化,是在c上做的,归一化的维度为[N,H,W],其beta和gamma的维度为C.LN是一张图的6个通道一起normalization操作,避开了batch维度,不在受bs大小的影响,归一化维度为[C,H,W],是在batch上做的,所以它常用在rnn,transformer上,这种对时序操作的非常优化。下面有个图对应起来这种关系,非常好理解。其beta和gamma的维度为N.IN就是单张图的单个通道单独normalization操作,适用于生成模型中,比如图片风格迁移。因为图片生成的结果主要依赖于某个图像实例,所以对整个batch归一化不适合图像风格化中,在风格迁移中使用Instance Normalization不仅可以加速模型收敛,并且可以保持每个图像实例之间的独立。可以理解成每一个竖着的长方体都要维护一个自己的beta和gamma值,归一化维度为[H,W],其beta和gamma的维度为C*N. 最后一个就是论文要提到的GN,GN介于LN和IN之间,其首先将channel分为许多组(group),对每一组做归一化,及先将feature的维度由[N, C, H, W]reshape为[N, G,C//G , H, W],归一化的维度为[C//G , H, W],其beta和gamma的维度就是N*G.事实上,GN的极端情况就是LN和I N,分别对应G等于C和G等于1.

作者这里也给了自己的一些理论解释,我看了也没什么说服力。总的来说normalization本质还是对梯度对信息流的约束,至于在哪个方向上还是看具体的任务,一般来说norm的维度越多,期望虽然可能一样,但方差肯定会降低,同一个batch中的样本也不一定是独立同分布额,如果GN的通道特别大,是不是还可以考虑想mini-sgd那样,只挑几个维度来normalization?

3.experiemnts

整体来看,其实论文也没什么太大的点,就是对通道维度进行分组然后normalization的方法,这样做的话,就可以不受bs的影响,在train/test的场景,包括finetune的场景都取得统一,当然借助这篇文章理解整个normalization其实是更重要的任务。

group normalization相关推荐

  1. 深度学习(二十八)——SOM, Group Normalization, MobileNet, 花式卷积进阶

    RBM & DBN & Deep Autoencoder(续) DBN RBM不仅可以单独使用,也可以堆叠起来形成Deep Belief Nets(DBNs),其中每个RBM层都与其前 ...

  2. 论文阅读 - Group Normalization

    文章目录 1 概述 2 几种normalization的方法 2.1 Batch Norm 2.2 Layer Norm 2.3 Instance Norm 2.4 Group Norm 3 效果对比 ...

  3. PyTorch框架学习十八——Layer Normalization、Instance Normalization、Group Normalization

    PyTorch框架学习十八--Layer Normalization.Instance Normalization.Group Normalization 一.为什么要标准化? 二.BN.LN.IN. ...

  4. Group Normalization(BN、LN、IN、GN) Switchable Normalization Weight Standardization

    BN BN的作用 为了对隐含层进行归一化操作.对于每个隐层神经元,把逐渐向非线性函数映射后向取值区间极限饱和区靠拢的输入分布强制拉回到均值为0方差为1的比较标准的正态分布,使得非线性变换函数的输入值落 ...

  5. Batch Nomalization,Group Normalization,Cross-Iteration Batch Normalization分析

    BatchNomalization 发表于第32届机器学习国际会议 PMLR,2015年 前言 由于深度神经网络每层输入的分布在训练过程中随着前一层的参数变化而变化,因此训练深度神经网络很复杂.由于需 ...

  6. 【AI数学】Group Normalization(何恺明ECCV2018最佳论文提名)

    声明:原创文章,欢迎转载,但必须经过本人同意. 论文标题:<Group Normalization> 论文链接: https://arxiv.org/pdf/1803.08494.pdf ...

  7. 优化方法总结 Batch Normalization、Layer Normalization、Instance Normalization 及 Group Normalization

    目录 从 Mini-Batch SGD 说起 Normalization 到底是在做什么 Batch Normalization 如何做 3.1 前向神经网络中的 BN 3.2 CNN 网络中的 BN ...

  8. 几种Normalization算法.md

    神经网络有各种归一化算法,BN,LN,IN,GN. 1. Batch Normalization 实现流程:对Tensor为[N, C, H, W], 把第1个样本的第1个通道,加上第2个样本的第1个 ...

  9. Normalization 的发展历程

    作者丨没头脑@知乎 来源丨https://zhuanlan.zhihu.com/p/75539170 编辑丨极市平台 目录 Local Response Normalization Batch Nor ...

最新文章

  1. ABAP:下载服务器文件到本机
  2. Flask实战----做了一个简易版CSDN
  3. [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息
  4. 新建Silverlight文件的方法
  5. SpringBoot测试失败并报错: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration
  6. SQL Server 2019中SQL表变量延迟编译
  7. 关于Timestamp的valueOf()方法
  8. python适合自学编程吗-对没有编程基础的人来说,直接学Python入门IT合适吗?
  9. matlab邻域平均,数字图像处理邻域平均法滤波实验报告matlab实现
  10. SCF: 简单配置门面[转]
  11. C#之AutoCAD文本字体样式设置
  12. 怎么学单片机,怎么入门
  13. Separating Axis Theorem(SAT)
  14. 用excel、matlab、python绘制正态分布图
  15. 众筹系统源码 java_以太坊 众筹系统
  16. python不间断爬取微博热搜并存储
  17. 余秋雨大师描写我的家乡
  18. textarea统计字数
  19. 查看 android打包证书签名
  20. 凡亿教育发布电子工程师利器:IC封装网 V.1.0

热门文章

  1. 洛谷 P1194 买礼物 (题解+代码)
  2. 竟然在GitHub标星27k+阿里大牛肝出的443页TCP/IP协议趣谈笔记,有何神奇之处?
  3. 电商设计师(美工)必备|模板素材网站!
  4. fireBug网络面板数据说明(转)
  5. 用launch文件在rviz中加载机器人模型
  6. xmanager5链接linux配置,使用Xmanager连接CentOS 5.5
  7. dij与prim算法
  8. 加州欧文计算机工程专业,加州大学欧文分校计算机工程专业本科直录申请条件...
  9. input框前追加图片
  10. 单片机的串行通讯就是排成一队走,并行就是排成一列走