论文阅读——Deep Residual Learning for Image Recognition
目录
前言
之前有一段时间看了挺多深度学习方面的论文,但是由于时间方面的问题一直没来得及进行总结。最近一段时间突发奇想把自己看论文时的学习笔记给记录一下,由于之前没写过博文,所以排版可能会有点emmm...一言难尽。专业方面的知识,如果有理解不到位的地方欢迎各位大佬指教。
Abstract
文章的主要工作:
- 文章提出了一个残差学习框架来减轻更深度网络的训练难度。
- 文章提出的残留网络更容易优化,其深度比VGG网络深,但复杂度却更低。
- 文章提出的残留网络可以通过不断增加网络深度来提高识别精度。
1. Introduction
这一部分作者主要提到了近些年来,随着卷积网络深度的增加,网络训练所遇到的一些问题以及解决方法,并抛出残差学习框架一概念。
1、卷积网络深度增加所遇到的主要问题及解决方式:
- 梯度消失——进行初始标准化和在网络中添加标准化层。
- 网络的深度增加但是训练精度却出现退化(大网络的精度反而不如小网络好)——引入本文中提出的残差网络。
2、引入深度残差学习框架来解决训练时的精度退化问题
- 假设网络期望得到的映射为
(即希望使用网络拟合得到的函数)。
- 但我们让堆叠的非线性层去拟合另一个映射
。
- 此时网络最终期望得到的映射
就可以改写成
。
- 上面公式中的
可以通过引入一个快捷连接来实现,具体如下图所示。
3、网络在引入深度残差学习框架后的效果
- 残差结构对解决精度退化问题有普适效果,在CIFAR-10、ImageNet等数据集上的实验结论都一致。
- 极深的残差网络易于优化,当深度增加时,对应的“简单”网络(没有设置残差结构其他配置完全一致的网络)表现出更高的训练误差。
- 深度残差网络可以通过深度的增加提高准确性。
2、Related Work
这一部分作者介绍了一些和论文中所研究项目有关的其他科研进展(虽然我也不知道具体有啥关系,文章中也没说,害)。
- 残差表示方法:1.VLAD:一种通过关于字典的残差向量进行编码的表示形式。2.Fisher矢量:VLAD的概率版本。
- 解偏微分方程的方法:1.Multigrid方法:将系统重构为在多个尺度上的子问题,其中每个子问题负责较粗尺度和较细尺度的残差解。2.层次化基础预处理:其依赖于表示两个尺度之间残差向量的变量。
- 快捷连接:1.普通快捷连接(就如上面所讲到的那样)。2.门控制快捷连接:可以看作快捷连接由一个门所控制,当门打开时就是普通快捷连接,当门关闭时就是没有残差结构的卷积网络。
3、Deep Residual Learning
3.1、残差学习
1、残差网络构建的原理(其实在introduction的时候我提到过):
- 假设
是我们期望得到的拟合函数,
为网络第一层的输入。
- 我们让多个非线性层近似残差函数
而不是
。
- 最后通过添加一条快捷连接
,来达到拟合函数
的目的,即
。
2、残差网络更加容易学习的原因:
- 恒等映射(即直接使用多个卷积层对
进行拟合)不太可能得到最优解。
- 如果恒等映射为最优解,求解器可以简单地将多个非线性层的权重置零使其得到恒等映射。
3.2、快捷恒等映射
- 文中将残差结构块的数学表达式定义为:
。
- 由于
和
的维度必须是相等的,当
修改了数据维度时数学表达式定义为
。
- 残差结构块中的快捷连接没有引入额外的参数,也不需要额外进行计算。
3.3、网络结构
在这一部分中,作者设置三个不同的网络以便后续实验中使用这三个网络进行对照。其中有两个为无残差结构网络,另一个为残差网络。
1、简单网络的设计思路:
- 对于输出相同尺寸特征图的卷积层,卷积核的数量应该保持一致。
- 如果特征图尺寸减半,则卷积核的数量应该翻倍(也就是随着网络的深入,特征图尺寸不断减小但通道数不断增加)。
2、残差网络的设计思路:
- 残差网络是基于上述的简单网络,在其中插入快捷连接构成的。
- 当输入和输出通道数相等时直接插入快捷连接。
- 当输入和输出通道数不等时有两种方法:A.快捷连接仍然使用恒等映射,额外填充零输入以增加维度。B.使用投影快捷连接
用于匹配维度。
3.4、实现
这个部分主要是将网络训练时一些参数的设置。
- 尺度增强:1.调整图像大小,其较短的边在[256,480]之间进行随机采样。2.使用224×224裁剪从图像或其水平翻转中随机采样,并逐像素减去均值。
- 在每个卷积层之后和**函数之前,采用批量归一化(BN)。
- 学习速度从0.1开始,当误差稳定时学习率除以10,总迭代数为
。
- 网络权重衰减为0.0001,动量为0.9。
4、Experiments
4.1、ImageNet分类
这一部分主要是在ImageNet 2012分类数据集对普通模型和残差模型进行性能评估,评估标准为top-1和top-5错误率。
1、普通网络
- 几个普通网络的具体结构参数如下表所示。
- 34层的普通网络比更浅的18层普通网的验证误差更高,如下表所示。
- 在34层的普通网络训练时出现了精度退化的问题,但是由于网络中使用了BN层,精度退化不太可能是由梯度消失引起的。
2、残差网络
- 很明显可以看出34层残差网络的错误率要比普通网络的低,如下表所示。
- 对于18层的普通网络,虽然添加残差结构后的错误率降低不明显,但是其收敛速度提升了。
3、恒等映射vs投影快捷连接
在这一部分中作者使用了3种不同的投影快捷连接进行性能验证:
- A:零填充快捷方式,用于在下采样时增加维数。
- B:投影快捷连接,用于在下采样时增加维数,其他都使用恒等映射。
- C:将所有快捷连接变为投影快捷连接。
结论:
- A、B、C三个选项都比普通的选项性能要好得多,但A、B、C之间性能差距不大。
- C选项会明显增大参数数目和计算量因此不采用。
4、更深的瓶颈结构
为了尽可能增加网络深度的同时降低运算量,文章提出了一种瓶颈结构的设计。在这种结构中,第一层为1×1的卷积负责减少输出通道数(图中输入为256通道,输出为64通道),第二层为3×3的卷积,第三层为1×1的卷积负责将输出通道数恢复到输入的水平(256维)。作者用这种瓶颈结构替换普通残差结构弄出了表1中的50、101和152层网络,其表现如表4所示。
5、与最先进模型的对比
4.2、CIFAR-10和分析
1、网络设置
- 残差网络和普通网络使用了图3中中间和右边的结构,网络根据输出特征图的大小设置卷积层结构,如下表所示总共有6n+2层。
- 残差网络的所有快捷连接都使用恒等映射。
2、训练设置
- 使用0.0001的权重衰减和动量为0.9。
- 模型在两个GPU上以128个小批量进行训练。
- 学习率从0.1开始,在迭代为32k和48k时分别除以10,并且迭代为64k时终止训练。
3、结果
- CIFAR-10测试集上的分类误差如下表所示。
- 普通网络和残差网络随着训练迭代数的增加,分类错误率的表现情况。
- 超过1000层的残差网络的表现:很明显超过1000层的残差网络收敛效果仍然是非常不错的,但是其错误率仍高于110层的残差网络,作者推测主要的原因是数据集太小了,出现了过拟合的情况。
4.3、PASCAL和MS COCO上的目标检测
- PASCAL数据集上的检测效果。
- MS COCO数据集上的检测效果。