当前位置:   article > 正文

论文解读3——Deep Residual Learning for Image Recognition(Resnet上篇)_何凯明残差网络文献

何凯明残差网络文献

最近在看吴恩达老师深度学习课程中的残差网络结构,一开始没特别懂,于是找了课上提到的残差网络的这篇文献来看。这篇文献中提出的残差网络Resnet是2015年微软实验室的何凯明团队在ImageNet计算机视觉挑战赛中斩获第一名的网络,且在同年的多个图像分类、目标检测竞赛中均获得第一名。

在这里插入图片描述

1、文章贡献

这篇文章主要想解决的是这么一个问题:在神经网络层数越来越深的时候,它的准确率在达到饱和后会出现下降这样一种退化的情况。如下图所示,56层神经网络的训练误差和测试误差均高于20层的神经网络。
且这样一种退化现象并不是因为模型变复杂了导致的一个过拟合,因为他的训练误差也变高了,而过拟合是训练误差很低但是测试误差变得很高,两者有很大的区别。
在这里插入图片描述

于是作者提出了一个深度残差学习框架来使得深层网络不会比浅层网络表现得更差。

2、深度残差学习框架

  • X:前面L层浅层网络的一个输出,也是作为下面新加的两层网络的输入
  • F(x):X进入第一个权重层、进入Relu激活、再进入第二个权重层后的输出
  • H(x):F(x)+x ,希望得到的一个潜在映射,因此F(x)也成了希望得到的H(x)和输入x之间的残差
  • 最后将H(x)经过Relu激活得到一个新的输出
  • 关键是多了一步连接输入和输出间的恒等映射,且不会增加额外的参数也不会增加计算复杂度。
    在这里插入图片描述

其实这一跳跃连接思想早在很多年前就已经提出来了,文献中将Resnet与highway networks进行了比较,其中highway networks通过门控函数来shortcut连接,这些门依赖数据并且有参数,当门的shortcut连接关闭时,残差函数也相当于没有了。
而Resnet它的shortcut连接不需要额外的参数,并且不会关闭,总是会学习残差函数,所有信息是通过的。

3、残差网络分析

下面给出残差网络的综合表达式

在这里插入图片描述
在这里插入图片描述

其中F是残差映射,也是前面两层的输出,它是由第一个权重W1乘x激活后再乘第二个权重W2得到的,这里把偏差项省去了。

且F和x必须同纬度才能相加,如果两者不是同维度的情况,可以通过x乘以一个W矩阵来进行维度匹配再相加。

在这里插入图片描述
残差网络构造

  • 左图是经典的VGG-19,它的特点是结构比较简洁
  • 作者在VGG-19的基础上进行了改造,得到中间34层的一个普通网络
  • 通过在普通网络加入跳跃键,得到右图34层的一个残差网络(其中在每个不同的模块间这些实线表示的是恒等映射,虚线表示的是升维后的,以保证它上一层的输出和下一层的输入维度能匹配)
    在这里插入图片描述

文献中给出了升维的两个方法

  • 一是可以用额外的0去填充使形状能够对应起来
  • 二是通过1×1的卷积层进行投影映射(1×1卷积层的特点是在空间维度上不动、在通道维度上可以增加通道数,使输出通道是输入通道的两倍,这个时候输入的高和宽通常会被减半)

4、实验分析

首先在ImageNet 2012分类数据集上来评估18层和34层网络效果,其中细曲线是训练误差,粗曲线是测试误差

  • 右图有残差连接的误差要小于左图没有残差连接的误差
  • 残差连接在开始的迭代中收敛速度更快
    在这里插入图片描述

对1×1卷积的投影映射进行了对比实验

  • A:对于增加的维度使用零填充
  • B:对于增加的维度使用投影映射(即1×1卷积),其余维度用恒等映射
  • C:所有情况均用投影映射
    最后结果显示:C好于B好于A,但作者说不怎么使用C,因为在后面两个效果相近的情况下,C的成本较高,计算复杂度也更大。
    在这里插入图片描述

瓶颈结构

接下来在构建50层或更深网络的时候作者引入一个类似于瓶颈的结构,主要用来解决当网络变深的时候计算复杂度过大的问题。

  • 左图是普通网络,假设输入通道维数是64维,经过两层3×3的卷积,最后维度不变
  • 右图是加了瓶颈结构的网络,假设输入通道维数是256维,跟原先64维相比计算复杂度增大了16倍,于是作者先通过1×1的卷积把它映射投影回到64维,然后再通过3×3通道数不变的一个卷积(此处与左图第二个3×3操作相同),最后再投影回256,因为输入和输出的维度要匹配上。经过这样一番操作后左右两边的计算复杂度会差不多。
    在这里插入图片描述
    下表是Resnet部分层数结构表,其中34层和50层网络各模块复制的次数均一致,唯一不同之处是各模块内部的结构,最后从FLOPs每秒浮点运算次数可以看出,理论上加了瓶颈结构的深层残差网络可以一定程度上降低计算复杂度。
    在这里插入图片描述

后来作者又在CIFAR-10数据集上进行了多次实验,并且尝试建立了1202层网络结构,实验细节部分就不详细描述了。

  • 最后结果显示虽然在110层之前,随着网络层数的增加误差在不断减小,但是1202层的误差要大于110层,作者认为这可能是模型复杂度增加导致的过拟合。
    在这里插入图片描述

5、总结

  • 大多数梯度消失和梯度爆炸问题可以通过良好的初始化或中间层批量归一化来解决
  • 在神经网络中引入跳跃连接恒等映射的从残差网络可以解决在网络层数越深的时候产生的准确率下降这样的退化问题,甚至达到比普通的浅层网络更好的效果。

文章中留有两个遗留问题(in the future)

  • 关于深层网络导致的退化问题并未深入研究
  • 仅使用了简单的正则化方法,可考虑加入maxout或dropout等更强的正则化方法来提升性能

且文章中对与残差网络为什么会有这么好的效果并没有做太多的理论分析,基本上都是实验直接证明的。后来在该文章第二年,作者针对残差网络中最核心的恒等映射部分进行了理论分析,并提出了结构改进方法,具体内容移步下一篇。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/598153
推荐阅读
相关标签
  

闽ICP备14008679号