Deep Residual Learning for Image Recognition

这个就是大家所说的ResNet——残差网络

Motivation

很多实验都证明网络的深度对网络的效果有着很重要的影响,理论上网络层数越多,得到的效果会越好,但是作者做了实验却发现网络的深度与网络在test dataset上的error rate是一个U形的曲线。也就是说当网络达到一定深度后,再增加深度,效果会变差,作者把这种现象称为Degradation Problem

Degradation Problem

所以从理论角度分析:因为使用了normalization,并不是梯度消失的问题,而是网络本身很难学习

得出结论:很难学习的原因information flowdeep network中受阻,最终导致网络的效果变差。

那如何才能让顺利的传到更深的层中去呢?作者就想到直接把信息传递到下层网络中,也就是采用skip connection

Architecture

Residual Learning

  • Residual Function

    动机是:直接拟合原来的目标函数不好弄,可以拟合它的残差函数,实际效果很好,虽然不是最好的。

  • Building Block

    building block基本单位构建残差网络。

    Building Block

    设为2层只是根据 intuition,如果只有一层,效果相对Conventional CNN没有提升。

Identity Mapping by Shortcuts

  • 主要目的是 dealing with dimension problem(当把x加到f(x)的时候,可能出现维度不一致的现象),这时有2种解决方式:

    1. Padding Zero

    2. Projection Shortcuts (done by 1×1 convolutions)

      • Projection shortcuts are used for increasing dimensions, and other shortcuts are identity(只有在碰到维度不一致的时候,进行projection shortcuts,否则就进行Identity Mapping)。

      • All shortcuts are projections(只要碰到维度问题就进行projection shortcuts)。

    实验证实以上两种做法相对于Conventional CNN都提高了效果,其中最后一种的效果最好,但是与前面的两种效果的差别不大。所以,作者认为projections不是提升网络效果的主要原因,所以为了节省计算资源和时间,作者在剩下的试验中采用padding 0的方式。

  • 使用stride=2conv代替了pooling(之前曾经看过一篇文章是讲conv降维至少不会比pooling效果差)。

Bottleneck

  • 这个概念在Inception的论文中就提出了,如下图右所示。

    Plan Skip VS Bottleneck

    之所以叫Bottleneck,是因为使用了1x1的卷积操作,作用是减少计算量。实验表明,这样不会对网络的性能造成坏的影响。

    关于Bottleneck,可以参阅参考文献 1 ,其中有一部分讲的就是这个。

Architecture used in experiments

  • No dropout,因为使用了batchnormalization

  • No hidden fc,转化为Global Average Pooling

    Example network architectures for ImageNet

    Left: the VGG-19 model (19.6 billion FLOPs) as a reference. Middle: a plain network with 34 parameter layers (3.6 billion FLOPs). Right: a residual network with 34 parameter layers (3.6 billion FLOPs). The dotted shortcuts increase dimensions.

Experiments

  1. 不同深度的Conventional CNN之间的对比:34层的网络效果没有18层的好,但是没有差别太大,说明网络正常工作,进一步的说明不是梯度消失的问题。

    34 layers VS 18 layers
  2. 相同深度的Conventional CNNResNet的对比。

    • 网络较浅的时候,ResNet的效果提升不明显,但是比Conventional CNN收敛更快

    • 网络较深的时候,ResNet的效果提升明显

  3. 不同深度的ResNet之间的对比:越深越好

  4. 作者特别的设计了一个1202层的网络,但是training error110层的网络差不多,但是test error却很差,作者解释是网络太深,数据集太小,产生了overfitting

  5. 实验的具体细节可以看 paper,细节写的挺详细的。

这个网络当时赢得了Object DetectionImage Localization的第一,paper 中以附录的形式对其进行了提及,不过由于时间和精力原因没有去看,这一点不好意思,大家如果有兴趣可以看一下。

Highway Networks

ResNetHighway Networks的一种特例。没有去看这个 paper,有兴趣的可以去参考。

Reference

  1. Neural Network Architectures
  2. One by One [ 1 x 1 ] Convolution
  3. 卷积神经网络中用1*1 卷积有什么作用或者好处呢? - 知乎