经典文章系列: (ResNet) Deep Residual Learning for Image Recognition 论文阅读

核心思想

将层表示为学习残差函数。实验表明,残差网络更容易优化。解决了增加网络深度带来的副作用(退化问题),这样能够通过单纯地增加网络深度,来提高网络性能。

问题来源

增加网络深度的重要性

CNN能够提取low/mid/high-level的特征,网络的层数越多,意味着能够提取到不同level的特征越丰富。并且,越深的网络提取的特征越抽象,越具有语义信息。

简单增加网络深度存在的问题

  1. 梯度弥散或梯度爆炸
    解决办法:正则化初始化和中间的正则化层(Batch Normalization),这样的话可以训练几十层的网络。
  2. 退化问题(degradation)
    按照一般经验,只要网络不训飞,而且不过拟合,那应该是越深越好。但是有时会发现,网络加深了,accuracy却下降了,称这种情况为degradation。如下图所示:
    经典文章系列: (ResNet) Deep Residual Learning for Image Recognition 论文阅读_第1张图片
    怎么解释呢?是因为深度网络不能简单地被很好地优化,当模型变复杂时,SGD的优化变得更加困难,导致了模型达不到好的学习效果。
    为了证实,作者做了一个实验,通过浅层网络+等同映射(y=x)构造深层模型,结果深层模型并没有比浅层网络有等同或更低的错误率。说明退化问题可能是因为深层的网络并不是那么好训练,也就是求解器很难拟合多层网络中的等同函数(y=x)。
    既然学习等同映射比较麻烦,那干脆直接给它加上一个shortcut,直接给这个模块输出叠加上输入,即残差结构。

残差结构

经典文章系列: (ResNet) Deep Residual Learning for Image Recognition 论文阅读_第2张图片
残差结构通过前向神经网络+shortcut连接实现,输出由多个卷积层级联的输出和输入元素相加(保证卷积层的输出和输入的元素维度相同),再经过ReLU激活后得到如结构图所示。shortcut连接相当于简单执行了同等映射,不会产生额外的参数,也不会增加计算复杂度。 整个网络可以依旧通过端到端的反向传播训练。
残差结构可以解决退化问题的分析:
1. 如果最优函数接近identity mappings,那么拟合残差将会变得更容易;
2. 引入残差后的映射对输出的变化更敏感,比如输出从5.1变到5.2,正常网络映射的输出增加了1/51=2%,而对于残差结构输出从5.1到5.2,映射F是从0.1到0.2,增加了100%。明显后者输出变化对权重的调整作用更大,所以效果更好。残差的思想是去掉相同的主体部分,从而突出微小的变化,类似于差分放大器;
3. 至于为何shortcut的输入时X,而不是X/2或是其他形式。Kaiming另一篇文章中对以下6种结构的残差结构进行实验比较,shortcut是X/2的就是第二种,结果发现还是第一种效果好(理论推导可见本文的补充部分)。
经典文章系列: (ResNet) Deep Residual Learning for Image Recognition 论文阅读_第3张图片

相关工作

本文想法和Highway networks(Jurgen Schmidhuber的文章)非常相似, 就连要解决的问题(degradation)都一样。两者之间的区别在于:
1. Highway networks使用了带有门函数的shortcut。但是这些门函数需要参数,而ResNet的shortcut不需要参数,一直是x没有参数,学习比较简单;
2. 当Highway networks的门函数的shortcut关闭时,相当于没有了残差函数,但是ResNet的shortcut一直保证学习残差函数;
3. 当Highway networks的层数急剧增加时,没有表现出准确率的上升了,而ResNet做到了。
简单的说,ResNet可以看成是Highway networks的特例,但是从效果上来看,要比Highway networks好。

实现细节

残差结构定义:
这里写图片描述
如果公式中第一部分和第二部分的维度不一致的话(要逐元素相加),处理方法有三种:
1. 使用恒等映射,如果residual block的输入输出维度不一致,对增加的维度用0来填充;
2. 在block输入输出维度一致时使用恒等映射,不一致时使用线性投影以保证维度一致;
3. 对于所有的block均使用线性投影。
作者对这三个选项都进行了实验,发现虽然效果C>B>A,但是差距很小,因此线性投影并不是必需的,而使用0填充时,可以保证模型的复杂度最低,这对于更深的网络是更加有利的。

残差网络

网络结构

作者首先构建了一个18层和一个34层的plain网络,然后构建了一个18层和一个34层的residual网络,并且和之前有很好效果的VGG-19进行比较。
经典文章系列: (ResNet) Deep Residual Learning for Image Recognition 论文阅读_第4张图片
Plain Network 受 VGG 网络启发,主要采用3*3滤波器,遵循两个设计原则:
1. 对于输出feature map大小相同的层,有相同数量的filters,即channel数相同;
2. 当feature map大小减半时(池化),filters数量翻倍,以保持每个层的计算复杂度。通过步长为2的卷积来进行降采样。一共34个权重层。
这个网络与VGG相比,滤波器要少,复杂度要小。Residual Network主要是在上述的plain network上加入shortcut connections,维度匹配的shortcut连接为实线,反之为虚线。

实验结果

经典文章系列: (ResNet) Deep Residual Learning for Image Recognition 论文阅读_第5张图片
1. plain-18和plain-34,出现了退化问题,不能简单地增加迭代次数来使其收敛,增加迭代次数仍然会出现退化问题。
2. ResNet-18和ResNet-34不会出现退化问题,ResNet-34明显表现的比ResNet-18和plain-34好,证明了残差学习解决了随网络深度增加带来的退化问题。 而且同等深度的plain-18和ResNet-18,残差网络更容易优化,收敛更快。
3. 残差网络在浅层时并未表现出更多的优势,说明残差网络必须要配合较深的深度才能发挥其结构优势,与plain网络拉开性能差距。

网络响应

经典文章系列: (ResNet) Deep Residual Learning for Image Recognition 论文阅读_第6张图片
从图中可以看出,残差网络中大部分层的响应方差都处在较低水平(响应都是在BN层后面,ReLU函数前)。
响应方差的计算方法及确切定义:???(搜不到数学定义,有清楚的大神请留言,谢谢)
这一定程度上印证了:这些响应方差较低的层响应较为固定,很有可能权重近似于零,这也就是说其所对应的残差结构可能近似于单位映射,网络的实际有效层数是要比全部层数要少一些的,产生了跳过连接(Skip-connection)的作用。这样也就是网络为什么在较深的深度下仍可以保持并提升性能,且没有过多增加训练难度的原因。

更深的瓶颈结构

经典文章系列: (ResNet) Deep Residual Learning for Image Recognition 论文阅读_第7张图片
首端和末端的1x1卷积用来削减和恢复维度,相比于原本结构,只有中间3x3成为瓶颈部分。这两种结构的时间复杂度相似。此时全投影法映射带来的参数成为不可忽略的部分,所以要使用zero padding的同等映射。
替换原本ResNet的残差学习结构,同时也可以增加结构的数量,网络深度得以增加。生成了ResNet-50,ResNet-101,ResNet-152,随着深度增加,因为解决了退化问题,性能不断提升。

补充

经典文章系列: (ResNet) Deep Residual Learning for Image Recognition 论文阅读_第8张图片
原文见 ResNet解读

参考

  1. 残差网络ResNet笔记
  2. ResNet解读

你可能感兴趣的:(经典文章系列: (ResNet) Deep Residual Learning for Image Recognition 论文阅读)