全面解读Group Normbalization-(吴育昕-何凯明 重磅之作)

作者:刘威威

编辑:李雪冬

前 言

Face book AI research(FAIR)

吴育昕-凯明联合推出重磅新作

Group Normbalization(GN),提出使用

Group Normalization

(https://arxiv.org/abs/1803.08494)

替代深度学习里程碑式的工作Batchnormalization,

笔者见猎心喜,希望和各位分享此工作,本文将从以下三个方面为读者详细解读此篇文章:

  • What's wrong with BN ?
  • How GN work ?
  • Why GN work ? 注:本文谨代表笔者观点,文中若有不足指出及疏忽之处,诚请批评指正

1

What is Group Normbalization

一句话概括,GroupNormbalization(GN)是一种新的深度学习归一化方式,可以替代BN。

众所周知,BN是深度学习中常使用的归一化方法,在提升训练以及收敛速度上发挥了重大的作用,是深度学习上里程碑式的工作,但是其仍然存在一些问题,而新提出的GN解决了BN式归一化对batch size依赖的影响。详细的BN介绍可以参考我的另一篇博客(https://blog.csdn.net/qq_25737169/article/details/79048516)。

So, BN到底出了什么问题, GN又厉害在哪里?

2

What's wrong with BN

BN全名是BatchNormalization,见名知意,其是一种归一化方式,而且是以batch的维度做归一化,那么问题就来了,此归一化方式对batch是--dependent的,过小的batch size会导致其性能下降,一般来说每GPU上batch设为32最合适,但是对于一些其他深度学习任务batch size往往只有1-2,比如目标检测,图像分割,视频分类上,输入的图像数据很大,较大的batchsize显存吃不消。那么,对于较小的batchsize,其performance是什么样的呢?如下图:

横轴表示每个GPU上的batch size大小,从左到右一次递减,纵轴是误差率,可见,在batch较小的时候,GN较BN有少于10%的误差率。

另外,BatchNormalization是在batch这个维度上Normalization,但是这个维度并不是固定不变的,比如训练和测试时一般不一样,一般都是训练的时候在训练集上通过滑动平均预先计算好平均-mean,和方差-variance参数,在测试的时候,不在计算这些值,而是直接调用这些预计算好的来用,但是,当训练数据和测试数据分布有差别是时,训练机上预计算好的数据并不能代表测试数据,这就导致在训练,验证,测试这三个阶段存在inconsistency。

既然明确了问题,解决起来就简单了,归一化的时候避开batch这个维度是不是可行呢,于是就出现了layer normalization和instance normalization等工作,但是仍比不上本篇介绍的工作GN。

3

How GN Work

GN本质上仍是归一化,但是它灵活的避开了BN的问题,同时又不同于Layer

从左到右一次是BN,LN,IN,GN

众所周知,深度网络中的数据维度一般是[N, C, H, W]或者[N, H, W,C]格式,N是batch size,H/W是feature的高/宽,C是feature的channel,压缩H/W至一个维度,其三维的表示如上图,假设单个方格的长度是1,

那么其表示的是[6, 6,*, * ]

上图形象的表示了四种norm的工作方式:

  • BN在batch的维度上norm,归一化维度为[N,H,W],对batch中对应的channel归一化;
  • LN避开了batch维度,归一化的维度为[C,H,W];
  • IN 归一化的维度为[H,W];
  • 而GN介于LN和IN之间,其首先将channel分为许多组(group),对每一组做归一化,及先将feature的维度由[N, C, H, W]reshape为[N, G,C//G , H, W],归一化的维度为[C//G , H, W]

事实上,GN的极端情况就是LN和I N,分别对应G等于C和G等于1,作者在论文中给出G设为32较好

由此可以看出,GN和BN是有很多相似之处的,代码相比较BN改动只有一两行而已,论文给出的代码实现如下:

defGroupNorm(x, gamma, beta, G, eps=1e-5):
     # x: input features with shape [N,C,H,W]
     # gamma, beta: scale and offset, with shape [1,C,1,1]
     # G: number of groups for GN
     N, C, H, W = x.shape
     x = tf.reshape(x,[N, G, C // G, H, W])
   mean,var= tf.nn.moments(x,[2,3,4], keep dims=True)
   x =(x - mean)/ tf.sqrt(var+ eps)
   x = tf.reshape(x,[N, C, H, W])
   return x * gamma + beta

其中beta 和gama参数是norm中可训练参数,表示平移和缩放因子.

从上述norm的对比来看,不得不佩服作者四两拨千斤的功力,仅仅是稍微的改动就能拥有举重若轻的效果。

4

Why GN work

上面三节分别介绍了BN的问题,以及GN的工作方式,本节将介绍GN work的原因。

传统角度来讲,在深度学习没有火起来之前,提取特征通常是使用SIFT,HOG和GIST特征,这些特征有一个共性,都具有按group表示的特性,每一个group由相同种类直方图的构建而成,这些特征通常是对在每个直方图(histogram)或每个方向(orientation)上进行组归一化(group-wise norm)而得到。而更高维的特征比如VLAD和Fisher Vectors(FV)也可以看作是group-wisefeature,此处的group可以被认为是每个聚类(cluster)下的子向量sub-vector。

从深度学习上来讲,完全可以认为卷积提取的特征是一种非结构化的特征或者向量,拿网络的第一层卷积为例,卷积层中的的卷积核filter1和此卷积核的其他经过transform过的版本filter2(transform可以是horizontal flipping等),在同一张图像上学习到的特征应该是具有相同的分布,那么,具有相同的特征可以被分到同一个group中,按照个人理解,每一层有很多的卷积核,这些核学习到的特征并不完全是独立的,某些特征具有相同的分布,因此可以被group。

导致分组(group)的因素有很多,比如频率、形状、亮度和纹理等,HOG特征根据orientation分组,而对神经网络来讲,其提取特征的机制更加复杂,也更加难以描述,变得不那么直观。另在神经科学领域,一种被广泛接受的计算模型是对cell的响应做归一化,此现象存在于浅层视觉皮层和整个视觉系统。

作者基于此,提出了组归一化(Group Normalization)的方式,且效果表明,显著优于BN、LN、IN等。

GN的归一化方式避开了batchsize对模型的影响,特征的group归一化同样可以解决的问题,并取得较好的效果。

5

Show Time

以resnet50为base model,batchsize设置为32在imagenet数据集上的训练误差(左)和测试误差(右) GN没有表现出很大的优势,在测试误差上稍大于使用BN的结果。

可以很容易的看出,GN对batch size的鲁棒性更强

同时,作者以VGG16为例,分析了某一层卷积后的特征分布学习情况,分别根据不使用Norm 和使用BN,GN做了实验,实验结果如下:

统一batch size设置的是32,最左图是不使用norm的conv5的特征学习情况,中间是使用了BN结果,最右是使用了GN的学习情况,相比较不使用norm,使用norm的学习效果显著,而后两者学习情况相似,不过更改小的batch size后,BN是比不上GN的。

作者同时做了实验展示了GN在object detector/segmentation 和video classification上的效果,详情可见原文,此外,作者在paper最后一节中大致探讨了discussion and future work, 实乃业界良心。

小结

本文从三个方面分析了BN的drawback,GN的工作机制,GN work的背后原理,希望对读者有所帮助。

原文发布于微信公众号 - 机器学习算法工程师(Jeemy110)

原文发表时间:2018-04-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

学界 | 谷歌云提出渐进式神经架构搜索:高效搜索高质量CNN结构

413120
来自专栏集智的专栏

使用腾讯云 GPU 学习深度学习系列之六:物体的识别与定位

本文以如何识别马路上的行人、车辆为主题,介绍了基于 Tensorflow 的 SSD 模型如何应用在物体识别定位项目中。

1.8K120
来自专栏大数据挖掘DT机器学习

朴素贝叶斯新闻分类器详解

机器学习的三要素是模型、策略(使用Cost Function计算这个模型是不是好的)和优化算法(不断的寻找最优参数,找到一个参数后用策略判断一下是不是可以,不行...

51370
来自专栏IT派

推荐!PlayGround:可视化神经网络

PlayGround是一个在线演示、实验的神经网络平台,是一个入门神经网络非常直观的网站。这个图形化平台非常强大,将神经网络的训练过程直接可视化。同时也能让我们...

15720
来自专栏数据派THU

计算机视觉怎么给图像分类?KNN、SVM、BP神经网络、CNN、迁移学习供你选(附开源代码)

原文:Medium 作者:Shiyu Mou 来源:机器人圈 本文长度为4600字,建议阅读6分钟 本文为你介绍图像分类的5种技术,总结并归纳算法、实现方式,并...

763100
来自专栏ATYUN订阅号

可能提高GAN性能的方法介绍

生成器试图找到最好的图像来欺骗鉴别器。当两个网络互相对抗时,“最佳”图像不断变化。但是,优化可能会变得过于贪心,使其陷入永无止境的猫捉老鼠游戏中。这是模型不收敛...

24740
来自专栏AI科技大本营的专栏

深度学习系列:卷积神经网络结构变化——可变形卷积网络deformable convolutional

作者 | 大饼博士X 上一篇我们介绍了:深度学习方法(十二):卷积神经网络结构变化——Spatial Transformer Networks,STN创造性地...

481100
来自专栏数据派THU

独家 | 一文带你上手卷积神经网络实战(附数据集、学习资料)

原文标题:Understanding deep Convolutional Neural Networks with a practical use-case ...

43080
来自专栏CDA数据分析师

随机之美——机器学习中的随机森林模型

摘要:随机森林和决策树相比,能更好的防止过拟合。虽然每个基分类器很弱,但最后组合的结果通常很强,这也类似于:“三个臭皮匠顶个诸葛亮”的思想。对比发现Random...

27990
来自专栏专知

【深度】Deep Visualization:可视化并理解CNN

【导读】本文利用非参数化方法来可视化CNN模型,希望帮助理解CNN。 专知公众号转载已获知乎作者余俊授权。 原文地址: https://zhuanlan.zhi...

80240

扫码关注云+社区

领取腾讯云代金券