Res-Family: From ResNet to SE-ResNeXt

 

分类: 机器学习,

Mind Experiment

Q: SE module最终实现上其实是channel wise的scale,这个在数学操作上与BN是一样的。那SE module为什么不能被BN代替呢? 
A:BN只建模了spatial内的dependency,而SE module不仅建模了spatial dependency还建模了inter-channel的dependency。

 


下图是SE-ResNet, 可以看到SE module被apply到了residual branch上。

 


下图是网络配置,这里FC后边的方括号里面的数表示

 


最后是效果,可以看到SENet在收敛速度和accuracy上都有提高。

 

 

Implementation Notes

SENet的FC等效于1x1的convolution,可以用conv1x1来代替。 channel wise scale + eltsum可以fuse成channel-wise axpy。

 

 

Excitation: 如下图的绿框。通过一个bottleneck结构来捕捉channel的inter-dependency,从而学到channel的scale factor(或者说是attention factor) 。

SE-ResNet, SE-ResNeXt (2018 Apr)

Paper

Squeeze-And-Excitation Networks

Network Visualization

http://dgschwend.github.io/netscope/#/gist/4a41df70a3c7c41f97d775f991f036e3

Motivation

2017年开始,Google说“Attention is all you need”,天下豪杰竞相响应。2018的很多工作的都是基于Attention机制的进展。这篇文章也可看作其中之一,因为我们可以把SENet看成是channel-wise的attention。如下图,SENet在常规动作后增加了一条专门计算channel-wise scale的branch,然后把得到的值乘到相应的channel上。

 

 

How it works

SENet计算channel-wise attention,分为两个步骤:

Squeeze: 如下图的红框。把每个input feature map的spatial dimension 从H * W squeeze到1。这里是通过global average pooling完成的。

ResNeXt (2017 Apr)

Paper

Aggregated Residual Transformations for Deep Neural Networks

Network Visualization

https://chakkritte.github.io/netscope/#/preset/resnext-50

Motivation

随着deep learning的兴起,视觉识别中的研究已经从feature engineering转向了network engineering,即设计topology。而随着深度的增加,topology中超参数(如卷积核大小,stride,channel数等)越来越多,很难确定。VGG和ResNet的成功表明通过堆叠相同形状的block的方法不仅可以显著减少超参数的数量,而且能取得SOTA的结果,是非常有前途的方向(这个感觉跟分形的想法很类似)。这是方向一。 
而以GoogleNet/GoogleNet-v2/Inception为代表的实践也表明,通过split-transform-merge策略进行精细的网络设计也能达到非常好的结果。这是方向二。

 


ResNeXt的想法是把这两种好的想法揉到一起,看效果会不会更好。“In this paper, we present a simple architecture which adopts VGG/ResNets’ strategy of repeating layers, while exploiting the split-transform-merge strategy in an easy, extensible way.”

The Ways

美来自简单的重复

如果像GoogleNet系那样做split-transform-merge(如上图),因为每个branch都需要设计卷积核的超参,以及branch的深度,所以超参会迅速膨胀。所以,要想个办法,既做了split-transform-merge,有没有多少超参量的增加,这个时候其实还是利用“重复大法”来达成。我们先看一下ResNeXt的设计:

 


可以看到这个结构是一个单元重复32次然后再相加的结果。每个单元是一个bottleneck结构:先把输入feature map 通过1x1卷积embedding到4 channel的feature map,然后做3x3卷积,然后再expand回去。我们把这个结构叫做32x4d的结构。其中32是ResNeXt引入的新的自由度,称为cardinality。ResNeXt的名字也源于此,X指的就是 neXt dimension。最后,不要忘了residual shortcut。

C和d的确定

为了得到与对应的ResNet参数量相当的ResNeXt,我们可以按照如下公式确定ResNeXt block的C和d: 

 

 

 

One more thing

进一步地,通过等效变形,可以把ResNeXt看成是囊括了GoogleNet/grouped convolution/ResNet的一种范型。 这样,ResNeXt论文的层次就超脱了只是ResNet的优化了。

 


上图a是ResNeXt module的原始形式,b是googlenet形式的等价型,c是group convolution的等价型。从性能(速度)的角度看,c的最好。

效果

最后作者给出了top-1 error,可以看到确实有较明显的提升。

 

 

Mind Experiment

ResNeXt从最终实现上来看与ResNet基本相同,唯一区别是residual module中的 3x3 convolution被换成了group convolution。

Another Perspective

We can treat ResNet as a Stacked Boosting Ensemble.

ResNet-v2 (2016 Jul)

Paper

Identity Mappings in Deep Residual Networks

Network Visualization

http://dgschwend.github.io/netscope/#/gist/6a771cf2bf466c5343338820d5102e66

Motivation

When we express ResNet as a general formula: 

 

 

在ResNet中

,所以称为shortcut。 另一个叫法就是highway,因为

的信息在这条路径上可以无衰减地传输,就像一个高速公路一样。但在ResNet中因为

是一个ReLU会损失掉一部分

信息,所以

的无衰减传输只能限于本block, 并不能在整个网络中无衰减地传下去。现在的猜想是:如果我们把

也变成一个identity mapping,这个highway会更加顺畅,效果会不会更好?

 

The Ways

The Importance of Identity Shortcut

作者尝试了很多种方式与identity shortcut作了对比,发现效果都没有identity shortcut好。

 

 

 

 

Proposed Architecture

 


上述结构称为pre-activation Residual Module,因为与以前的Residual Block是CBR(Conv, BN, ReLU)结构,而这个是BRC(BN, ReLU, Conv)结构,activation在conv之前,所以称为pre-activation结构。 
因此,ResNet-v2可以表示为如下形式: 

 

 

即 

,把递归式展开,有: 

 

 

这是一个纯的additive model,比ResNet更像stacked boosting。效果如下图:

 

 

 

Mind Experiment

ResNet-v2 在inference优化上与ResNet有什么不同的地方? 

有同学会觉得上面的b图中的两个branch因为scaling都是0.5,与原始Residual Block相比只相当于把再乘个0.5, 在数学上是等价的,为啥效果会差很多呢?。这句话对了一半,就单个module而言,确实如此。 
但一旦把module串联起来形成网络,事情发生了质的变化。不失一般性,我们如下形式化constant scaling module(这里为了简化推导我把relu换成了identity,不会影响最终结论): 

 

 

把递归式展开后为: 

 

 

可以看到与原展开式相比,constant scaling对输入特征进行了指数式衰减,两者是完全不等价的。

Conclusion

Current plain network design impede us pursue bigger representation capability through make network deeper.

How to Solve it

可以通过构造性方法,构造出一个性能至少与对应的浅层模型相等的深度模型。当add-on block输出为0时,这个deeper net的性能与shallower net的性能一致。

 


从函数逼近的角度,假设我们需要逼近函数

, shallower net给出了一个

, 那add-on block可以看作在逼近

, 即残差(residual),这本质上是残差学习(residual learning)或者是boosting的想法。这也是ResNet的基本想法。

Breakdown

Residule Module

 


the right block is called bottleneck architecture.

 

 

Identity Shortcut and Projection Shortcut

上面的topology图中,实线即表示identity shortcut,虚线即表示projection shortcut. 出现projection shortcut的原因是该module内部的操作改变了feature map的dimension(height, width, channel),我们需要一个projection来match dimension。下图中的f指该模块的输出channel数。

 

 

Tricks

h/w和c的关系是:spatial每做一次1/2 down sample, c就乘以2, 所以 

 

Mind Experiment

对ResNet-50 inference有哪些适用的优化策略? 

    •  

 

 

Why

Overfit Gradient Vanish checked back propogated diff, also BN can secure this. Conjecture: deep plain nets may have exponentially low convergence rate, which impact the reducing of the training error.

ResNet(2015 Dec)

Paper

Deep Residual Learning for Image Recognition

Network Visualization

https://dgschwend.github.io/netscope/#/preset/resnet-50

Problem Statement

A paradox between neural network depth and its representation capability.

Intuition

  • deeper the network, stronger the representation capability

Observation 

  • network performance will degrade while network is deeper
  •  

 

  •  
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值