论文阅读(二)ResNet(Deep Residual Learning for Image Recognition)笔记

1. 介绍

。。。。。。
第二段开始

目前面临的问题

学习一个更好的网络是否和堆叠更多的层一样简单呢?
  • 梯度消失/梯度爆炸从一开始就阻碍了模型的收敛;
  • 归一初始化中间归一化很大程度上解决了这个问题,使数十层的网络在反向传播的随机梯度下降(SGD)上能够收敛。
退化问题
  • 当深层网络能够收敛时,又出现了一个**退化问题:**随着网络深度的增加,准确率达到饱和然后迅速退化。
  • 这种退化并不是由过拟合造成的,并且在一个合理的深度模型中增加更多的层会导致更高的错误率。(本文实验证明了这一点)
  • 图1:越深的网络在训练和测试上都具有越高的错误率。
    在这里插入图片描述
通过构建解决退化问题
  • 退化问题(训练准确率)表明:并不是所有的系统都是很容易优化的。

考虑一个浅层框架和一个深层版本(由浅层框架增加更多的层得到),对于更深层的模型,可以通过构建来解决退化问题,即

  1. 增加的层由恒等映射得到;
  2. 其他的层直接从浅层模型复制。
  • 这个构建解决方案表明:一个更深层的模型不能产生比它相应的浅层模型更高的错误率
  • 实验表明:目前无法找到比这种构建的解决方案一样好或者更好的解决方案(或者说,无法在可行的时间内实现)。

本文工作内容

使用深度残差学习框架解决退化问题
  • 不是让每一个堆叠的层直接的拟合所需的底层映射;
  • 而是明确的让这些层拟合残差映射
  • 假设所需的底层映射是 H(x) ,让堆叠的非线性层拟合另一个映射:F(x)=H(x)-x,原来的映射就转化为了 F(x)+x
  • 本文推断优化残差映射比优化原始的未引用的映射更容易
  • 在极端的情况下,如果一个恒等映射是最优的,将残差变为0比使用非线性层的堆叠来拟合恒等映射更容易
使用shortcut连接实现 F(x)+x
  • 公式 F(x)+x 可以通过前馈神经网络的shortcut连接实现;
  • shortcut连接: 跳过一个或者多个层。
    在这里插入图片描述
  • 在本文例子中,shortcut连接简单的执行了恒等映射;
  • 再将它们的输出叠加到堆叠层的输出。
  • 恒等的shortcut连接不增加任何参数和计算复杂性
  • 整个网络仍然能够通过端到端的SGD反向传播来进行训练,并且能够简单的使用公共库来实现(例如,Caffe),而不需要修改任何求解器
在数据集上的实验

数据集:ImageNet

  • 本文的极深的残差网络很容易优化;
  • 但是当深度增加时,相应的plain网络(简单的堆叠层)出现了更高的错误率。
  • 本文的深度残差网络很容易通过增加深度来提高准确率;
  • 并且产生的结果大大的优于以前的网络。

数据集:CIFAR-10

  • 在此数据集上也出现了类似的现象;
  • 说明本文提出的方法的优化难度和效果并不仅仅是对一个特定的数据集而言的。
  • 在此数据集上,成功训练了超过100层的模型,并探索了超过1000层的模型。
实验结果

数据集:ImageNet

  • 本文的152层的残差网络是至今为止ImageNet数据集上最深的网络,然而仍然比VGG网络具有更低的复杂性
  • 在ImageNet测试集上,本文的组合模型的top-5错误率是3.57%
  • 并赢得了ILSVRC 2015分类竞赛的第一名。
  • 这个极深的模型在其他识别任务上也具有非常好的泛化能力,在其他比赛上也获得了第一名的成绩;
  • 这强有力的证明了:残差学习的准则是通用的,将把他应用在其他视觉和非视觉问题。

2. 相关工作

残差表达

在图像识别中,

  • VLAD是残差向量对应于字典进行编码的一种表达形式;
  • Fisher Vector可以看做是VLAD的概率版本;
  • VLAD和Fisher Vector都是图像检索和图像分类强有力的浅层表达
  • 对于向量量化残差向量编码比原始向量编码更有效

在低级视觉和计算机图形学中,为了求解偏微分方程(PDEs)

  • 通常使用Multigrid方法将系统重新表达成多尺度的子问题来解决;

  • 每一个子问题就是解决粗细尺度之间的残差问题

  • Multigrid的另一种方式是分层基预处理

  • 分层基预处理依赖于代表两个尺度之间残差向量的变量。

  • 实验证明,这些解释器标准解释器(没有意识到该方法的残差特性)收敛的更快

这些方法表明:一个好的重新表达或者预处理能够简化优化问题。

Shortcut连接

本文的工作,

  • highway networks将shortcut连接和门控函数结合起来;
  • 这些门是数据相关并且有参数的,而本文的恒等shortcuts没有参数的。
  • 当一个门shortcut是关闭的(接近于0)时,在highway网络中的层表示非残差函数;
  • 相反,本文的模型总是学习残差函数,本文的恒等shortcuts永远不关闭,在学习额外的残差函数时,所有的信息总是通过的。
  • 另外,highway网络不能由增加层的深度(例如,超过100层)来提高准确率

3. 深度残差学习

3.1 残差学习

  • H(x): 看作是一个由一些堆叠的层(不一定是全部的层)来拟合的底层映射;
  • x: 是这些层的第一层的输入。
  • 假设多个非线性层能够渐进逼近复杂函数,这就等价于假设这些非线性层能够渐进逼近残差函数,例如,H(x)-x (假设输入和输出同维)。
  • 明确的让堆叠层近似一个残差函数:F(x)=H(x)-x,而不是 H(x),因此原始函数变为 F(x)+x

尽管两种形式都能渐进逼近所需的函数(正如假设),但学习的难易程度不同的。

这个重新表达是由退化问题这个反常现象所激发的。

  • 退化问题表明:通过多个非线性层估计恒等映射,求解器可能有一些困难。
  • 伴随着残差学习的重新表达,如果恒等映射是最优的,那么求解器可能简单的趋使多个非线性层的权重趋向于0来逼近恒等映射。

在实际情况下,

  • 恒等映射不太可能是最优的,但是我们的重新表达对于预处理问题可能是有帮助的。
  • 如果最优函数更趋近于恒定映射而不是0映射,那么对于求解器来说找到关于恒等映射的参数扰动,比学习一个新的函数更容易

通过实验表明,

学习残差函数通常有很小的响应,说明恒等映射提供了合理的预处理

3.2 通过Shortcuts进行恒等映射

我们对==每几个堆叠的层(every few stacked layers)==采用残差学习,一个构建块如图2所示。本文构建块定义如下:(高亮部分表示翻译的不是很清楚)            在这里插入图片描述

  • x和y分别为考虑的层的输入和输出向量;
  • 函数 F(x,{Wi) 表示要学习的映射;

在图2的例子中有两层,F=W2σ(W1x) ,其中

  • σ表示ReLU;
  • 为了简化符号,省略了偏置顶;
  • 操作 F+x 由一个shortcut连接和元素级的加法表示;
  • 在加法之后再执行第二个非线性操作。

在等式(1)中介绍的shortcut连接没有额外的参数或者计算复杂度

  • 这不仅在实践中是有吸引力的,并且在比较plain网络残差网络时是重要的;
  • 能够在相同数目的参数,深度,宽度和计算代价(除了可以忽略不计的元素级加法)的情况下,公平的比较plain/残差网络。

在等式(1)中,xF 必须是同维的,否则(比如当改变了输入/输出的通道时),可以通过shortcut连接执行一个线性映射 Ws匹配两者的维度
***y = F(x,{Wi}) + Wsx***
在等式(1)中也可以使用方阵 Ws ,但是在本文的实验中表明,恒等映射足够解决退化问题,并且是经济的。

因此,Ws 仅仅用来解决维度不匹配的问题。

残差函数 F 的形式是灵活的,本文实验所涉及的函数 F2或3层,更多层也是有可能的,但是 F 如果只有一层,等式(1)就类似于一个线性层:y=W1x+x,对此没有发现任何优势。

也就是说,残差函数 F 至少有两层才是有用的。(我)

尽管为了简化,以上表达是关于全连接层的,但它们也适用于卷积层,

  • 函数 F(x,{Wi) 能够表示多卷积层;
  • 元素级的加法是在两个特征映射的相应通道上执行的。(不懂)

3.3 网络结构

ImageNet 的两个模型:

Plain网络

本文的plain网络基线主要受VGG网络(图3 左)的启发,

  • 卷积层主要有3×3的过滤器,并且遵循两个简单的设计准则
     1. 对于有相同尺寸输出特征映射的层,要有相同数量的滤波器;
     2. 如果特征映射的尺寸减半,滤波器的数量要加倍以保证每一层的时间复杂度。
  • 直接用步长为2的卷积层进行下采样
  • 网络的最后是一个全局平均池化层和一个带有softmax的1000维全连接层
  • 一共有34个加权的层(图3 中间)。

与VGG网络相比,plain网络优势

  • 具有更少的滤波器更低的复杂性
  • 34层基线有36亿 FLOP (乘-加),仅为VGG-19(196亿FLOP)的18%
    在这里插入图片描述
残差网络

基于以上的plain网络,插入shortcut连接将网络转化为相应的残差版本(图3 右)。

  • 当输入和输出维度相同时可以直接使用等式(1)中的恒等shortcut(图3实线shortcut);
  • 维度增加时(图3虚线shortcut),有两种选择:
      A. shortcut仍然使用恒等映射,对于增加的层使用额外的0进行填充,
       这种选择不会增加额外的参数
      B. 等式(2)的映射shortcut用来匹配维度(通过1*1的卷积)(什么意思啊?)。
      
    对于这两种选择,当shortcut跨越两种不同尺寸的特征映射时,都使用步长为2的卷积。

3.4 实现

  • 调整图像大小,使它的短边长度随机的从[256,480]中采样来进行尺寸扩展
  • 随机从图像或它的水平翻转中抽取一个224×224大小的裁剪,并减去每个像素的平均;
  • 使用了[21]中的标准颜色增强
  • 在每一个卷积之后,在激活之前,采用块归一化(BN);
  • 按照[13]初始化权重,并且从零开始训练所有的plain/残差网络;
  • 使用一个有256大小的mini-batch SGD
  • 学习率0.1开始,当误差稳定时除以10;
  • 模型进行高达60×104次迭代
  • 使用0.0001权重衰减0.9动量
  • 不使用dropout。

在测试中,

  • 为了比较,采用标准10-crop测试;

  • 为了最好的结果,采用[41,13]中的全连接形式,并且在多尺度上平均分数(调整图像大小,使最短的边在{224,256,384,480,640}中)。

4 实验

4.1 ImageNet分类

数据集:

  • 2012 ImageNet分类数据集(包含1000个类);
  • 在128万个训练图像,5万个验证图像上训练模型;
  • 在10万个测试图像上获得了最终的测试结果;
  • 评估top-1和top-5错误率。
Plain网络

首先评估18层(表1)和34层(图3)的plain网络(结果见表2),
在这里插入图片描述

结果显示:更深的34层 plain网络较浅层的18层plain网络有更高的错误率;

为了揭示原因,在图4(左)中,比较了在训练过程中它们的训练/验证错误率。
在这里插入图片描述

观察到了退化问题:在整个训练过程中,尽管18层plain网络的解空间是34层的一个子集,但是34层的plain网络扔具有更高的训练错误率。

本文认为这种优化困难不太可能是由梯度消失造成的,

  • 因为这些plain网络使用BN进行训练,而BN能够确保前向传播信号具有非零方差
  • 并且验证了使用BN的反向传播梯度具有健康的行为;

所以没有任何前向或者反向信号消失。

事实上,34层的plain网络仍然能够达到具有竞争力的精度,这说明在某种程度上求解器是工作的,我们推测深的plain网络可能有指数级别的低收敛速度,从而影响了训练错误率的减少,(我们已经试验了更多的训练迭代次数(3×),但是仍然观察到退化问题,说明这个问题不能够通过简单的使用更多的迭代次数来解决。)这种优化困难的原因会在将来进行研究

残差网络

未完待续。。。

猜你喜欢

转载自blog.csdn.net/weixin_45700507/article/details/102485716