- 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上。
最后是效果,可以看到SENet在收敛速度和accuracy上都有提高。
Implementation Notes
SENet的FC等效于1x1的convolution,可以用conv1x1来代替。 channel wise scale + eltsum可以fuse成channel-wise axpy。
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,分为两个步骤:
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策略进行精细的网络设计也能达到非常好的结果。这是方向二。
The Ways
为了得到与对应的ResNet参数量相当的ResNeXt,我们可以按照如下公式确定ResNeXt block的C和d:
上图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:
,所以称为shortcut。 另一个叫法就是highway,因为
的信息在这条路径上可以无衰减地传输,就像一个高速公路一样。但在ResNet中因为
的无衰减传输只能限于本block, 并不能在整个网络中无衰减地传下去。现在的猜想是:如果我们把
也变成一个identity mapping,这个highway会更加顺畅,效果会不会更好?
The Ways
The Importance of Identity Shortcut
作者尝试了很多种方式与identity shortcut作了对比,发现效果都没有identity shortcut好。
这是一个纯的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
How to Solve it
可以通过构造性方法,构造出一个性能至少与对应的浅层模型相等的深度模型。当add-on block输出为0时,这个deeper net的性能与shallower net的性能一致。
, 即残差(residual),这本质上是残差学习(residual learning)或者是boosting的想法。这也是ResNet的基本想法。
Breakdown
the right block is called bottleneck architecture.
Identity Shortcut and Projection Shortcut
h/w和c的关系是:spatial每做一次1/2 down sample, c就乘以2, 所以
Mind Experiment
对ResNet-50 inference有哪些适用的优化策略?
Why
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