Group Normalization论文笔记

论文作者 :Yuxin Wu Kaiming He from Facebook AI Research (FAIR)

Email :{yuxinwu,kaiminghe}@fb.com

论文链接 :https://arxiv.org/abs/1803.08494

代码链接 :https://github.com/shaohua0116/Group-Normalization-Tensorflow

1.简介:

Batch Normalization(BN)的提出对深度学习的发展具有里程碑式的意义。但是BN在small batch上存在严重的问题,随着训练的batch越小,error增长的越大。这一缺点限制了BN在一些计算机视觉任务上的应用,特别是一些由于内存不足导致的只能使用small batch的任务,例如:语意分割,视频分类。

作者在本篇论文中提出了Group Normalization(GN)的方法来作为BN的一个“改进”版本。BN计算整个batch的均值和方差,进行正则化(均值为0,方差为1);GN把channels分为一些groups,然后计算每个group的均值和方差,GN的计算和batch size的大小无关,而且无论batch size取大还是取小,GN的性能(提升的精确度)都保持稳定。

实验结果:在ImageNet数据集上使用ResNet-50网络进行训练,使用batch size = 2,GN的错误率比BN低了10.6%,使用常用的16,32,64等batch size时,GN的表现也是优于BN的。而且GN非常自然的用在使用预训练的模型进行fine-tuing。GN在COCO目标检测和语意分割数据集,以及Kinetics视频分类数据集上的表现都优于BN。实验结果显示在非常多的深度学习任务中,GN可以替换BN,而且GN非常容易使用代码实现。

输入图片说明 输入图片说明

Layer Normalization(LN) 和 Instance Normalization(IN)是继BN后提出的正则化方法,它们不用面对整个Batch,但是相对来说,LN和IN更适合RNN/LSTM或GANS,并不太适合计算机视觉方面。但是反过来,GN不仅适合计算机视觉任务,也适合RNN和GANS。

2.正则化相关研究工作:

对训练数据进行正则化可以让训练更快,但是由于进行正则化时,我们通常会假设已经知道数据的分布,当训练发生变化时,有可能导致训练的低效甚至无效。在BN应用之前,像AlexNet的一些深度学习网络通常会应用Local Rsponse Normalization(LRN)。和现行的方法不同,LRN通常只会利用每个像素的邻域范围进行正则化。BN通常非常依赖Batch Size,BN是对整个Bathch进行正则化,在预测阶段,batch通常是1,BN是无效的,因此BN受到很大的局限。针对BN过分依赖Batch size的缺点,有一些新的方法被提出,但是这些方法只是轻微改善(通常还伴随对计算资源和数据集的要求),并没有解决问题。

Group-wise是指在保持网络一定深度的情况下,通过增加每层的宽度,进而改善网络性能。远到AlexNet,近有MobileNet和Xception,Group convolutions的方法被提出来,Group convolutions是指通过对convolutions进行分组,并保持组数和channel数相等。ShuffleNet则进行了打乱操作。GN和这些方法有一定的相关性,但是又有很大的不同,GN是一个通用层,而不是一个卷积层。

3.GN详解:

一般来说,视觉表征的通道之间并不是完全独立的,传统的手工特征方法SIFT,HOG,GIST和高级的VLAD,FV方法都是利用了通道之间的关系,由基本通道组成高级特征的。通常来说,深度学习的特征并不是无组织的特征向量,以一个网络的第一个卷积层为例,这个卷积层的效果一般类似一个滤波器(比如可以进行图像的翻转等),相关通道的滤波器进行规范化在一起,达到比较高级的效果,例如检测水平线的滤波器和检测垂直线的滤波器合起来可以检测矩形。高级层的表现更加明显。受这些研究的启示,本文提出了一种新的通用的组级的正则化方法。

3.1.GN算法构思

输入图片说明 输入图片说明 输入图片说明

GN和LN,IN都和Batch size无关,它们之间可以互相变换,如果设置group channels=1,GN就变成了LN,但是这样不能把各个通道结合在一起,因此LN效果要差于GN。

3.2 GN代码实现

GN的代码实现是非常简单的,可以只用几行代码就可以完成,以Tensorflow为例:

输入图片说明

4.实验结果

输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明

5.工作总结

本文提出的GN已被证明在Batch size较小的情况下可以保持网络性能稳定,但是GN的最大性能还没有被挖掘出来,将来会有可能出现更适合GN的网络架构来获得更好的效果。而且,GN在RNN和GAN上的效果也非常好,在强化学习任务上也非常有前景。

6.个人总结

个人认为现阶段GN适合的应用场景:

1.适合由于计算资源(GPU memory不足)导致的小Batch size任务中。

2.适合浅层网络中(例如VGG),作者实验显示,利用VGG16网络ImageNET数据集上,GN的性能相对BN高0.4%。但是相对深层网络,如果能保持Batch size足够大时,更建议用BN。

7.可以研究的问题

1.GN与group convolutional(例如MobileNet,ShuffleNet)一起使用是否可以提示效果。

2.BN和GN结合起来一起使用是否会有更好的效果。CONV1 > BN > CONV2 > GN。

。。。。。。。

猜你喜欢

转载自my.oschina.net/clgo/blog/1789135