这是微软方面的最新研究成果, 在第六届ImageNet年度图像识别测试中,微软研究院的计算机图像识别系统在几个类别的测试中获得第一名。
本文是解决超深度CNN网络训练问题,152层及尝试了1000层。
随着CNN网络的发展,尤其的VGG网络的提出,大家发现网络的层数是一个关键因素,貌似越深的网络效果越好。但是随着网络层数的增加,问题也随之而来。
首先一个问题是 vanishing/exploding gradients,即梯度的消失或发散。这就导致训练难以收敛。但是随着 normalized initialization [23, 9, 37, 13] and intermediate normalization layers[16]的提出,解决了这个问题。
当收敛问题解决后,又一个问题暴露出来:随着网络深度的增加,系统精度得到饱和之后,迅速的下滑。让人意外的是这个性能下降不是过拟合导致的。如文献 [11, 42]指出,对一个合适深度的模型加入额外的层数导致训练误差变大。如下图所示:
如果我们加入额外的 层只是一个 identity mapping,那么随着深度的增加,训练误差并没有随之增加。所以我们认为可能存在另一种构建方法,随着深度的增加,训练误差不会增加,只是我们没有找到该方法而已。
这里我们提出一个 deep residual learning 框架来解决这种因为深度增加而导致性能下降问题。 假设我们期望的网络层关系映射为 H(x), 我们让 the stacked nonlinear layers 拟合另一个映射, F(x):= H(x)-x , 那么原先的映射就是 F(x)+x。 这里我们假设优化残差映射F(x) 比优化原来的映射 H(x)容易。
F(x)+x 可以通过shortcut connections 来实现,如下图所示:
2 Related Work
Residual Representations
以前关于残差表示的文献表明,问题的重新表示或预处理会简化问题的优化。 These methods suggest that a good reformulation or preconditioning can simplify the optimization
Shortcut Connections
CNN网络以前对shortcut connections 也有所应用。
3 Deep Residual Learning
3.1. Residual Learning
这里我们首先求取残差映射 F(x):= H(x)-x,那么原先的映射就是 F(x)+x。尽管这两个映射应该都可以近似理论真值映射 the desired functions (as hypothesized),但是它俩的学习难度是不一样的。
这种改写启发于 图1中性能退化问题违反直觉的现象。正如前言所说,如果增加的层数可以构建为一个 identity mappings,那么增加层数后的网络训练误差应该不会增加,与没增加之前相比较。性能退化问题暗示多个非线性网络层用于近似identity mappings 可能有困难。使用残差学习改写问题之后,如果identity mappings 是最优的,那么优化问题变得很简单,直接将多层非线性网络参数趋0。
实际中,identity mappings 不太可能是最优的,但是上述改写问题可能对问题提供有效的预先处理 (provide reasonable preconditioning)。如果最优函数接近identity mappings,那么优化将会变得容易些。 实验证明该思路是对的。
3.2. Identity Mapping by Shortcuts
图2为一个模块。A building block
公式定义如下:
这里假定输入输出维数一致,如果不一样,可以通过 linear projection 转成一样的。
3.3. Network Architectures
Plain Network 主要是受 VGG 网络启发,主要采用3*3滤波器,遵循两个设计原则:1)对于相同输出特征图尺寸,卷积层有相同个数的滤波器,2)如果特征图尺寸缩小一半,滤波器个数加倍以保持每个层的计算复杂度。通过步长为2的卷积来进行降采样。一共34个权重层。
需要指出,我们这个网络与VGG相比,滤波器要少,复杂度要小。
Residual Network 主要是在 上述的 plain network上加入 shortcut connections
3.4. Implementation
针对 ImageNet网络的实现,我们遵循【21,41】的实践,图像以较小的边缩放至[256,480],这样便于 scale augmentation,然后从中随机裁出 224*224,采用【21,16】文献的方法。
4 Experiments
本文是微软团队对深度残差网络的改进
Code is available at: https://github.com/KaimingHe/resnet-1k-layers
原来深度残差网络的一个Residual Units如下图所示
本文分析深度残差网络主要关注于建立一个直接传播信息的通道,不仅在 residual unit 里面,对整个网络也是如此。我们发现如果是的 h(x)和f(x)都是 identity mappings,那么信息可以直接从一个单元传递到另一个单元,不论是前向还是后向传播。我们的实验结果显示,这么做使得训练更加的简单。
我们做了各种尝试,但是identity mappings 效果最好 ,大道至简吧
最后是在Large Scale Visual Recognition Challenge 2012 (ILSVRC2012) 的结果对比
介绍了新的residual unit,使训练更容易, 并且improves generalization。
1 Introduction
Residual Units:
上篇文章中, h(xl)=xl,是输入,f是Relu,x(l+1)是输出。如果h(xl)和f(yl)都是identity mappings, 信息就会直接从shortcut直接传输。
为了明白skip connections的作用,文章进行了分析与实验,发现identity mapping h(xl)=xl可以取得最快的error reduction和lowest training loss(参与实验的有 scaling,gating, 1x1convolutions)。
这里使用ReLU和BN放置于weightlayer前,作为新的residual unit,如下图:
新的结构更容易训练也更容易泛化,使用它建立了1001层网络。
另外在上篇文章中200层网络就开始过拟合,这里对其进行改进。
2 Analysis of Deep Residual networks
如果f也是一个identity mapping,那么其结构可以写成这样:
上式展现了ResNets两个特性:
1. 模型是以残差形式存在的
2. 这是以相加的形式存在而plain network是以矩阵相乘的形式存在的
上式的反向传播形式ε是loss function:
可见∂ε∂xl分为两部分其中∂ε∂xL保证了信息直接传递回任何浅层单元l。
并且可以看出其∂ε∂xl 一般不会为0,因为
一般不会一直为-1,这就意味着某一层的梯度可以非常小但是一般不会为0.
3 On the importance of identity skip connections
如果我们做一点小的调整,加入一个比例因子λ:h(xl)=λlxl那么:
反向传播变为:
那么对于深层网络,如果λ大于一就容易成指数爆炸,如果小于1就容易弥散,那么我们原本的shortcut就会被堵塞,反向传播更多的经过权重层,导致优化困难。
如果将h(xl)换做更复杂的变换,如1x1convolution,那么其中的第一项就会变为∏L−1i=lh′,h’代表h的导数,这也可能堵塞训练过程。
3.1 Experiments on Skip connections
4 on the usage of Activation Fuctions
4.1 Experiments on activation
Post-activation or pre-activation?
原始的residual unit的设计中,activation xl+1=f(yl)对于两个分支都有影响,我们设计了一个非对称的结构,只对F分支,也就是:
这就等于pre-activation形式了:
这里设置了fig4中的de两种方案,d的提高不明显,可以看出BN和ReLU更配,他俩适合在一起,table3更说明了这个问题。
4.2 Analysis
我们发现pre-activation主要影响有二:
1. 优化更加简单,f成了一个identity mapping(图1)
2. BN提高了regularization,防止过拟合。
但是我们也发现,当层数不是那么多,比如图6中的164时(==|),原本的ReLU的影响可能没有那么大,大部分的yl都是整数,其反向传播公式越接近:
但是如果到了1000层,非正数的情况越来越多,上式不再合适。
4.3 比较
这个是全明星阵容的paper,提出了深度模型另一个重要的需要考量的纬度:cardinality。(用简单的方式做不简单的事情)
众所周知,提高模型的performance,最直接的就是从模型的depth和width入手,即加深网络的深度,让网络变得更胖点(宽度,即layer的filter的数目)
但是这会有问题:1)网络越深,越难训练;2)网络越宽,模型复杂度越高,计算量越大,需要显存越多。
那有没有办法,在保持模型现有的复杂度的情况下,提高模型的学习能力?
该论文从这个角度出发,提出了考量模型的另一个纬度:cardinality(即模型split-transform-merge的集合的数目,笔者理解就是一个block里面,branches或者paths的个数)
先看图:
fig1的左图就是今年火爆的resnet的一个block的经典形式,而右图是该论文提出的ResNeXt (suggesting the next dimension) 的一个block。
很显然resnet的cardinality为2(ResNets [13] can be thought of as two-branch networks where one branch is the identity mapping.),而ResNeXt的cardinality设为C(这里不包括identity mapping)。
从图中看,ResNeXt还是很容易看懂的,前提是,ResNeXt做了两个假设:
i) if producing spatial maps of the same size, the blocks share the same hyper-parameters (width and filter sizes),
ii) each time when the spatial map is downsampled by a factor of 2, the width of the blocks is multiplied by a factor of 2. The second rule ensures that the computational complexity, in terms of FLOPs (floating-point operations, in #of multiply-adds), is roughly the same for all blocks.
基于这两个假设(rules),we only need to design a template module, and all modules in a network can be determined accordingly. So these two rules greatly narrow down the design space and allow us to focus on a few key factors. The networks constructed by these rules are in Table 1.
但是有一个问题,如果粗暴地按fig1的右图来设计模型(prototxt文件)时,会很繁琐,而且没有经过优化,使得模型的训练时间变长,
那么怎么优化呢?
骚年还记得12年的Alexnet么,里面的group convolution恰恰可以做这个优化问题,见下图:
fig3也很容易看懂,关键在于理解group convolution而已。见下面的解释:
In a group conv layer [23], input and output channels are divided intoC groups, and convolutions are separately performed within each group.
是不是顿时觉得在two rules的前提下,ResNeXt非常简单,既没有加深模型的深度,又保持模型相同(差不多)的复杂度。
理解了fig3,就可以理解整个ResNeXt了。
那么它的效果如何?
哈至于ResNeXt的perfomance以及和Resnet做对比的实验等等,笔者在这里就展开详细说了,建议各位看论文去哈,
(论文非常值得深读,比如ResNeXt的cardinality是怎么来的,通用的ResNeXt是怎样的(也就是去掉上面的two rules),和以往的模型有哪些异同,group-convolutioin的好处在哪里,如何在coco上做detection,split-transform-merge的本质是什么? 等等)
最后附上一个论文的截图,关于怎么设caridinality的参数C
相关博客:
http://blog.csdn.net/zimenglan_sysu/article/details/53239837
http://blog.csdn.net/cv_family_z/article/details/51919007
http://blog.csdn.net/bea_tree/article/details/51817142
http://blog.csdn.net/u012816943/article/details/51702520
http://blog.csdn.net/cv_family_z/article/details/50328175 |