Group Normalization

这是雷锋网上对于论文的部分翻译:https://www.leiphone.com/news/201803/UMVcCCcin2yPxu7t.html

论文地址:https://arxiv.org/abs/1803.08494

参考知乎:https://www.zhihu.com/question/269576836/answer/348670955

BN参考:http://www.mamicode.com/info-detail-2195645.html

GN是FAIR 研究工程师吴育昕和研究科学家何恺明联名著作的一篇论文 Group Normalization 提到了一种新的训练神经网络的方法。通常我们普通使用的是批量归一化(Batch Normalization,以下简称 BN),该论文把GN和BN进行了比较。主要就是写了GN比较稳定,在小批次实验上效果比BN好,论文在图像等数据集上做了验证。


注:第一次写论文博客,写的乱,这也只是为了理一下自己的逻辑。此外若有哪里写的不对需要修改的,请联系我或者留言。

1、BN缺点:

    BN在batch小的时候准确率会下降,但是由于内存的原因,在做一些图像等任务时候,我们的batch不宜设置过大。

以下缺点来源知乎:

作者:吴育昕
链接:https://www.zhihu.com/question/269576836/answer/348670955
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

BN使用batch dimension大概还会带来这样一些问题:

  • training noise: 一个人的gradient啊,当然要靠他个人,但是也要考虑到和他在一个batch里还有哪些人. 这并不一定是坏事,但是这导致对batch的要求很高,否则noise会失控:
    • batch要大,这是一个工程问题. 毕竟去年的coco,Face++主要赢在大batch上,这是最重要的motivation.
    • batch分布要理想, 这主要取决于task, 复杂的task未必有i.i.d.的batch. 比如video里什么是batch很难说. 比如detection里的batch可能包含一张图里重复的框. 比如RL里的一个batch可能会是highly correlated experience.
  • train/test不一致: 因为training time的那个batch维度在test time不一定存在,所以只好用average statistics. 这也不一定是坏事,但是这种用法会带来其他问题:
    • 算average statistics其实计算量不小, 只不过supervised training的时候在training中能顺便算出来(EMA),到最后EMA一般都是收敛的, 所以感觉不到. 但是其他task未必有一个好的average statistics, 比如一些on-policy的RL就很危险,最近渊栋老师就在RL上遇到过BN的问题.
    • 实际中并不只有train/test两种mode, fine tuning到底怎么做仍然是不清晰的. BN pretrained model的fine tuning做normalization是不是真的比affine更好?.. 如果做affine,那么statistics要不要重算也不确定.


所以该论文提出的GN是非常有现实意义的。


2、Normalization(论文的第三章)

这里根据论文的第三章以及一些我查的资料介绍以下各种Normalization。

Normalization就是要先进行归一化,就是把数据都放在一个正态分布。仅此是不够的,下面来具体说明。

2.1、BN



起到的作用如下图a,把数据都放在一个正太分布:


注:图片来源http://www.mamicode.com/info-detail-2195645.html

但是正态分布不一定最好体现我们训练样本的特征分布,因为数据不对称等,所以需要上图b操作,也就是BN的核心,公式如下:


R,B都是通过学习的。

所以,我们可以得到BN最后使用的公式:


现在大家应该对Normalization有了认识,下面说以下论文的图:



这也就是说集合是沿着C轴也就是通道轴的(我的理解是一个通道就是一个集合,也就是一层有几个通道就有几个集合),然后BN的均值和方差是通过来计算。



2.2、LN



这也就是说LN的集合是沿着N的也就是batch轴,也就是说LN和论文提出的GN一样对于batch不依赖。它的均值和方差是通过((H,W),C)来计算。


2.3、IN




这也就是说IN的集合是沿着N还有C的。它的均值和方差是通过(H,W)来计算。


2.4、GN


其中:G表示组数

          C表示通道数

          C/G表示每组的通道数

它集合的方向也是沿着N轴,所以跟batch无关,当C=G时候,C/G=1,也就是IN;当G=1时候,GN也编程了LN

图中的G=2,所以C/G=3.

他的均值和方差是通过((H,W),C/G(每组通道数))来计算。



3、实验比较

论文后面大概就是比较提出的GN与各种Normalization主要是BN之间的比较,写了GN在小批次上比BN好,GN更稳定什么的。这里就不说明了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值