【深度学习】入门理解ResNet和他的小姨子们(三)---ResNeXt

时间:2024-03-31 15:25:55

文章名称《Aggregated Residual Transformations for Deep Neural Networks》
文章链接:https://arxiv.org/abs/1611.05431

其实ResNeXt这个网络结构严格说起来应该不算ResNet的小姨子,因为这是亲儿子啊,哈哈哈。自从KaiMing大神离开MSRA去了FaceBook之后,就跟RBG大神坐到了一起,这篇的文章作者是一水的大牛啊。
并且在2016的ImageNet上刷出了排名第二的好成绩

反正,当看完论文我是震惊的,满脑子就是“窝草,还有这种操作,社会社会,惹不起惹不起。”这篇文章其实总的insight不是特别亮眼(跟Inception-ResNet在结构上还是有点相似的),但是一套逻辑下来叫人无话可说,实际上就是将group convolution引进了ResNet中,以获得更少的参数。不过说起group convolution要回到2012的AlexNet了,那时候由于GPU并没有现在的强大,所以作者把网络拆成两部分,不过现在都慢慢淡出人们的视野了。KaiMing挖的一手好坟,却造就了又一个经典–ResNeXt。
101-layer的ResNeXt可以达到ResNet的精确度,却在complexity只有后者的一半。

在ResNet提出deeper可以带来网络性质提高的同时,WideResNet则认为Wider也可以带来深度网络性能的改善。为了打破或deeper,或wider的常规思路,ResNeXt则认为可以引入一个新维度,称之为cardinality。并且作者在实验上也证明了: increasing cardinality is more effective than going deeper or wider when we increase the capacity

先看一下ResNeXt的结构:
【深度学习】入门理解ResNet和他的小姨子们(三)---ResNeXt
左边是ResNet结构,可以看作是两个branch的网络,其中一个branch则是identity mapping。此时,对于ResNet来说,该网络的cardinality为2。
而右边则是ResNeXt结构,可以看作是C个branch组成的网络。

右边的ResNeXt结构则很容易让我们想起GooLeNet上的Inception,在Inception网络中,有个重要的策略则是split-transform-merge. 对输入进行split成a few lower-dimention embeding(1x1),然后在通过(3x3或5x5)的卷积核进行transformed,最后由concatenation来进行merge。
Inception网络的一个motivation就是通过稀疏连接进行近似成large and dense layers

尽管Inception的效果很好,但是Inception网络中的参数在新的数据集上generalize的并不是特别好,会带来一堆hyper-parameters需要设计。这是个重要的原因,以至于GoogLeNet没有同期的VGG出名。

而本文则提出了一个simple architecture将Inception和ResNet进行很好的结合。跟同期的Inception-ResNet不同的是,ResNeXt在每个path中都采取相同的设计(采用相同的卷积参数),从Figure1中也能看出来,这可以带来更好的泛化。

网络结构设计,与ResNet的比较
【深度学习】入门理解ResNet和他的小姨子们(三)---ResNeXt

可以看到在每个conv中,感觉总的通道数要比Resnet多的多,但是两者的参数量是一样的。这时,我就想问一句:“这么神奇吗?”

计算一下便可得:由Figure1得知,
resnet的参数量为:
256*64+3*3*64*64+64*256=70k
ResNeXt的参数量为:
C*(256*d+3*3*d*d+d*256) 当C取32,d=4时,上式也等于70k。
【深度学习】入门理解ResNet和他的小姨子们(三)---ResNeXt

我的天呐,就是这么神奇。

来看一幅等价图,简洁明了:
【深度学习】入门理解ResNet和他的小姨子们(三)---ResNeXt
上面三个设计是等价设计,主要看最后一个C的结构,是不是极其类似ResNet的bottleneck,但是通道数却比ResNet多的多。这就意味着,ResNeXt引入Inception结构,通过稀疏连接来approach之前的dense连接。

事实上ResNeXt的主要思想上述已经基本概况完了。

下面就再讲点本文提到的一些重点吧

1. Aggregated Transformation
【深度学习】入门理解ResNet和他的小姨子们(三)---ResNeXt
【深度学习】入门理解ResNet和他的小姨子们(三)---ResNeXt
数学表达如下:
【深度学习】入门理解ResNet和他的小姨子们(三)---ResNeXt
区别于NIN(network in network)可以增加dimension of depth,aggregatd transformations可以扩展一个新的dimension,也就是我们上文提到的cardinality。

作者指出,实际上式表述可能不是特别准确,如歌Ti取任意形式且异质(heterogeneous)的话,上面的式子就不能表述了。为了简单,本文选择同质表述(homogenous)

2. 关于ResNet

Cornel的大牛Veit指出ResNet可以看做是Ensemble.
《Residual Networks Behave Like Ensembles of Relatively Shallow Networks》

【深度学习】入门理解ResNet和他的小姨子们(三)---ResNeXt

然而kaiming大神在本篇文章傲娇的怼回去了,

Ensembling. Averaging a set of independently trained networks is an effective solution to improving accuracy [24], widely adopted in recognition competitions [33]. Veit et al. [40] interpret a single ResNet as an ensemble of shallower networks, which results from ResNet’s additive behaviors [15]. Our method harnesses additions to aggregate a set of transformations. But we argue that it is imprecise to view our method as ensembling, because the members to be aggregated are trained jointly, not independently.

实验部分就不放上来了,大家去看论文可能比较好一些。

系列文章:
【深度学习】入门理解ResNet和他的小姨子们(一)—ResNet
http://blog.csdn.net/shwan_ma/article/details/78165966
【深度学习】入门理解ResNet和他的小姨子们(二)—DenseNet
http://blog.csdn.net/shwan_ma/article/details/78165966
【深度学习】入门理解ResNet和他的小姨子们(三)—ResNeXt
http://blog.csdn.net/shwan_ma/article/details/78203020
【深度学习】入门理解ResNet和他的小姨子们(四)—WideResNet
http://blog.csdn.net/shwan_ma/article/details/78168629
【深度学习】入门理解ResNet和他的小姨子们(五)—ResNet增强版
http://blog.csdn.net/shwan_ma/article/details/78595937