深度学习论文翻译--Deep Residual Learning for Image Recognition

本文翻译论文为深度学习经典模型之一:ResNet

论文链接:https://arxiv.org/pdf/1512.03385.pdf

摘要:深度神经网络很难训练,为了解决这个问题,我们提出残差学习框架(residual learning framework),使得神经网络的训练变得容易,并且我们的网络比之前所有的网络都要深。我们将网络层(layers)明确的定义为需要学习的残差函数(residual function,关于输入的函数),而不是学习未指定的函数(unreferenced functions)。论文中给出了全面的理论和实验分析,表明残差网络是容易优化,并且随着深度的增加,能够获得精度的提高。我们设计了152层的残差网络结构,是VGG深度的8倍,并且复杂度更低。多个残差网络的集合获得3.57%的误差,并且获得2015分类冠军。我们使用100层和1000层的网络对Cifar10进行了实验分析。

深度表达(depth of representations)是很多视觉任务的核心部分。仅仅由于网络深度的加深,我们在COCO目标检测数据集上获得28%的提高,并且在多个基准测试数据集上获得了第一名。
1、Introduction

深度卷积神经网络在图像分类获得了一系列突破。深度网络很自然的以端到端、多层网络的方式融合低层、中层、高层次特征以及分类器,可以使用堆叠层的深度来提取不同层次的特征。最近的研究表明,网络深度对于分类效果有着巨大影响。

受网络深度的重要性驱动,我们有个问题:学习到更好的网络是不是像叠加更多的层一样容易?在训练深度网络方面,普遍认为梯度消失和梯度爆炸(从一开始就阻碍了网络的收敛)阻碍了网络的训练。当然这个问题可以通过初始归一化和中间层归一化解决,使得数十层的网络能够很好的收敛。

当网络开始收敛时,退化(degradation)的问题开始出现:随着网络深度增加,精度开始饱和(算是正常现象),然后精度开始迅速降低。与预期不符的是,这种退化不是由过拟合引起的,更深的网络反而具有更高的训练误差,图1给出了CIFAR-10数据集上的实验结果:

训练精度的降低表明,并不是所有的系统都容易优化。考虑一个浅层网络,以及在浅层网络上添加更多的层的深层网络。一种构建深层网络的方法:添加的层是恒等映射,其它的层从浅层网络拷贝而来。基于这种构建方法,深层网络的训练误差应该不比浅层网络低。但是实验表明,现有的优化器并不能得到比上述方法创建网络更好的结果或者相当的结果。

在本篇论文中,我们使用深度残差学习框架解决网络退化问题。不同于让每一个网络模块学习期望的潜在映射(underlying mapping),我们明确地让它学习残差映射(residual mapping)。形式上,令潜在的映射为,我们让堆叠的非线性层拟合令一个映射。我们假设:与优化原来的未指定的映射相比,优化残差映射更容易。考虑极端的情况下,如果恒等映射是最优的,让残差为0比用层叠的非线性层拟合恒等映射更容易。

我们在ImageNet网络上全面进行实验,阐述了退化问题,表明:(1)我们的深度残差网络很容易优化,随着深度提升,仅仅是叠加深度的网络(plain nets)训练误差更高;(2)增加深度,我们的网络更容易获得精度上的收益,结果也比之前的网络有着实质的提高。

相同的现象在CIFAR-10数据集上表明,优化难度以及残差方法的作用并不是局限于某个特殊的数据集。我们使用100层和1000层 的网络对CIFAR进行实验。
2、Related Work

Residual Representaitons. 在图像识别中,VLAD是一个表达(a representation),它是基于字典的残差向量,Fisher 是VLAD的概率版本。在图像识别和分类中,上述浅层特征表达非常有效。对于向量矢量化,对残差向量编码比对原始向量编码更有效。

在低层次视觉和计算机图形学中,解决PDE问题常用的方法是Multigrid方法,它将系统分解为不同尺度下的子问题,每一个子问题与粗糙和精细尺度间的残差问题相关。Multigrid一个选择是多层次基础预处理,它依赖于用于两个尺度之间残差向量的变量。研究表明,这些优化器(带有残差)比标准的优化器收敛更快。因此,一个好的表达形式或者预处理能够简化优化的难度。

Shortcut Connections. 快捷连接在实际和理论上被研究了很长的时间。早期训练MLP(多层感知机)的时,将输入和输出之间添加一层线性层。在【44,24】中间层会直接连接到辅助分类器,以此解决梯度消失或者爆炸的问题。【39, 38, 31,47】引入中间层来使得层表达,梯度,反向误差中心化。在44中,Inception层包含短分支和深分支。

与我们一致的研究,“Highway networks”使用门函数表达快捷连接(shortcut connections)。这些门依赖数据,并且有参数,而我们的快捷连接没有参数。当一个门连接关了(接近0),那么该层的高速连接(表达残差)将消失。相反的,我们的公式总是能学习到残差函数,并且快捷连接不会关闭,所有的信息总是会流通,那么也就能学习到额外的残差函数。此外,这种高速连接并没有被证明:层数增加,精度会随之提高。
3、Deep Residual Learning
3.1 Residual Learning

令为潜在的映射(underlying mapping),通常由层叠的卷积层逼近,令x为这些层的输入。如果假设:多层非线性层可以逐渐逼近复杂函数,那么等同于假设:可以逼近残差函数,例如(假设输入和输出是同样的维度)。所以与其期望叠加层逼近,我们更希望逼近残差函数:,那么最初的逼近函数变为。尽管两种形式都可以逐渐被逼近,但是逼近的难以程度是不一样的。

这种新的残差形式受违反常规的退化问题所激发(图1所示)。正如我们在引言中介绍的,如果额外增加的层可以表达为恒等映射,那么更深的模型的训练误差不应该高于浅层模型(shallower counter)。退化现象表明,优化器很难通过几层非线性层逼近恒等映射。在残差的形式下,如果恒等映射是最优的,那么优化器更容易使得非线性层逼近0.

在实际情况下,恒等映射一般不会是最优的,但是我们的残差形式可以帮助预处理这个问题。如果最优的函数更接近恒等映射,而不是零映射,那么优化器更容易发现恒等映射的波动情况(相比于学习新的函数)。图7可以看到,学习到的残差具有小的响应,表明恒等映射提供了合理的预处理。
3.2 Identity Mapping by Shortcuts

我们将残差学习应用到每一个卷积模块。图2给出了叠加的模块,一般形式下,本文考虑如下形式的卷积残差块:

这里,x和y分别是层的输入和输出。表示要学习的残差映射函数。比如图2中,具有两层卷积层,

delta表示激活函数ReLU,为了简化概念,去除偏置项。由快捷连接(shortcut)和卷积模块的加法得到。

方程1中引入没有引入合适的参数以及计算复杂度。这不仅有助于实际应用,而且在平原式网络和残差网络中的对比中非常重要。我们可以公正的对比(plain/residual)网络,它们具有相同的参数,深度,宽度以及计算代价(除了快捷连接的加法操作)。

方程1中,的维度必须一致。假如不是这种情况(假如输入维度或输出维度被改变),那么可以对快捷连接作一个线性映射,使得维度一致可以相加:

也可以使用平方矩阵。但是实验证明,恒等映射可以解决退化问题,并且没有增加太多的计算,那么仅仅被用于匹配维度。

残差函数的形式是灵活的。本文中的残差函数包含两层或者三层的形式,见图5,当然更多的层也是可以的。但是如果残差只有一层,那么方程1类似于线性层:,这种情况下就没有任何的优势。
3.3、Network Architectures

我们测试了不同的(plain/residual)网络,并且观察到了一致的现象。为了提供一些实例,我们在ImageNet上测试了两种模型。

Plain Network. Plain网络的基准(图3,middle)受启发于VGG网络(图3,left)。该卷积网络大部分是3x3卷积,并且有两条设计准则:(i)同样输出大小的特征图,有着相同数量的卷积核;(ii)如果特征图大小减半,为了保证相同的时间复杂度,滤波器个数加倍。我们使卷积滑动为2的方式进行降采样。网络的最后使用全局平均池化和1000个节点的全连接(softmax),总共的权重层为34.

值得注意的是,我们的模型比VGG拥有更少的卷积核个数和更低的复杂度。我们的34层的基准网络进行3.6亿次浮点计算(乘法-加法),仅仅是VGG的18%(19.6亿次浮点运算)。

Residual Network.基于上面的Plain网络,我们插入快捷连接(shortcut connections,图3,right)。当输入和输出是同一纬度的,方程1中的shortcut可以直接应用(图3中,实线连接)。当维度增加时(图3,虚线连接),我们考虑两种操作:(A)shortcut仍然进行恒等映射,但是进行零填充;(B)方程2中进行维度投影(通常使用1x1进行维度增加)。对于两种操作,如果跨越的特征图大小不一样,那么增加卷积滑动(stride2)。
3.4、Implementation

训练模型的操作与AlexNet和GoogLeNet保持一致,对图片的短边在[256, 480]之间进行随机采样(scale augmentation)。进行224x224的随机裁剪(原图或者翻转图),并且减去均值。使用[21]的颜色增强方法。BN应用在卷积和激活层之前,优化器为SGD,batch size 256.初始学习率为0.1,当误差不降时,除以10。weight decay 为0.0001,momentum 为0.9,不使用Dropout。
4、Experiments
4.1、ImageNet Classification

训练集:ImageNet,128万训练集,5万验证集,训练1000分类。

Plain Networks. 本文首先评价了18层和34层的Plain Nets。大致结构见图3,详细结构见表1:

表2的结果表明,34层的Plain Nets的验证误差高于18层的Plain Nets。为了揭示其中原因,图4给出了训练过程中的训练和验证误差。我们观察了网络退化的问题-整个训练过程,尽管18层的Plain Nets是34层网络的子网络,但是后者具有更高的训练误差。

我们认为这种优化难度并不是梯度消失造成的。 上述Plain Nets均有BN层,保证了前向传播的过程中不会出现零方差。我们同样验证了反向传播过程中,梯度的稳定性。所以前向和反向均不会出现信号消失的情况。事实上,34层Plain Nets仍然可以获得不错的精度(见表3),表明优化器是有一定作用的。我们猜想深度Plain Nets可能具有低的收敛速度,也就影响训练误差的降低。将来会研究这种优化难度的原因。

Residual Networks. 接下来,我们评测18层和34层的残差网络(ResNets)。基准的结构如上述网络(Plain Nets),不同的是为每一对卷积添加shortcut connections(图3,right)。实验结果,见图4,right和表2,right,我们使用0-padding进行维度统一(Option A)。相比与Plain Nets,没有额外的参数。

从表2和图4,我们有以下结论:

1、34层的残差网络优于18层的残差网络(2.8%).更加重要的是,前者训练误差和验证误差都低于后者。这足以表明,残差网络可以解决退化问题。

2、与其Plain Nets相比,34层网络降低了3.5%的top-1误差(表2),并且降低了训练误差(图4 right vs left)。表明,残差网络对于深度网络系统的有效性。

3、18层的Plain/Residual具有相当的精度,但是18层 ResNet收敛更快。如果网络没有过深,当前的SGD优化器可以找到Plain Nets收敛点。这种情况下,ResNet仅仅具有加速收敛的作用。

Identity vs. Projection Shortcuts. 我们之前表述过,没有参数的恒等连接(identity shortcuts)有助于训练。下面,我们研究了投影连接(projection shortcuts,见方程2)。在表3中,我们对比了两种操作:(A)零填充的快捷连接用于升维,所有的连接均没有参数(见Table2和图4,right);(B)部分投影连接,部分是恒等连接;(C)均为投影连接;

表3表明,上述三种操作均优于Plain Nets。B略优于A,我们认为是因为零填充几乎没有任何的残差学习。而C略优于B,原因是因为:额外的投影连接引入了额外的参数。A、B、C的微小差别表明,投影连接并不是解决退化问题必不可少的条件。为了节约内存和降低模型大小,后面不在使用C操作。没有带来额外的恒等连接被后面采用。

Deep Bottleneck Architectures. 下面我们将介绍训练ImageNet的深度网络。考虑到时间复杂度,残差模块采用瓶颈设计。对于每一个残差函数,我们使用三层的网络代替两层的网络叠加,见图5。1x1卷积用于先降维,在升维,使得3x3卷积具有较小的输入和输出维度。下图中,他们的时间复杂度一样。没有参数的恒等连接对于设计瓶颈特性网络(bottleneck architectures)具有重要的意义。如果图5,右图替换为投影连接,那么时间复杂度和模型大小会翻倍(因为快捷连接对应的是该模块的高维)。所以,对于瓶颈设计而言,恒等连接更加有效。

50-layer ResNet: 我们将34层的Plain Net中的两层模块替换为3层瓶颈模块(bottleneck block),得到50层的残差网络。我们使用B提升维度。

101-layer and 152-layer ResNets:我们添加更多的3层模块,得到ResNet-101和ResNet-152。很明显的,尽管深度增加,但是计算复杂度仍比VGG小。50/101/152的网络精度比34层的高(见表3和表4)。深度增加的同时,精度也有提升,并没有出现退化的现象。
4.2、CIFAR-10 and Analysis

CIFAR-10:训练集(4.5万),验证集(5k),测试集(1万),类别(10类); 我们主要测试深度网络的表现,并不是要得到start-of-art结果,所以网络设置如下:

Plain/Residual:结构如图3(middle,right);

图像:32x32,每一个像素减去均值;

结构:第一层为3x3卷积,后面在特征图大小为{32, 16, 8}上分别进行3x3卷积的堆叠,每一个卷积层特征图大小都有2n层,总共有6n层。卷积核个数分别为:16,32,64;卷积模块最后添加全局池化+10-way的全连接(softmax)。总共有6n+2堆叠的权重层,具体如下:

降采样:卷积滑动为2;

快捷连接:A(恒等连接);

weight decay:0.0001,momentum:0.9;

初始化:he_mormal,BN,没有dropout;

batch size:128;

学习率:0.1,迭代32k和48k,分别除以10,64K停止迭代;

数据增强:随机裁剪,每一边填充4个像素;左右翻转;

测试集:只用原图进行测试;

我们选择了n={3,5,7,9},得到20,32,44,56层的网络。图6(left)给出了Plain Nets的网络表现,仍会出现网络退化的现象(MNIST和ImageNet也会出现),表明这种优化难度是个基本问题;图6(middle)给出了ResNet的表现,与ImageNet情况类似,本文提出的ResNet网络克服了优化的难度以及网络退化问题。

我们进一步测试了n=18,ResNet-101,我们发现学习率(0.1)有点大,难以收敛。所以我们先用学习率(0.01)进行预训练,400次迭代后,误差降至80%,然后将学习率再次调至0.1,继续训练。其它设置保持不变。110层的网络收敛正常(图6,middle)。与FitNet和Hightway相比(表6),参数更少。

Analysis of Layer Responses. 图7给出了每一层(3x3卷积+BN的输出)的激活响应的标准差。对于ResNet,这种分析揭示了残差函数的反应强度。图7表明,与Plain Net 相比,ResNet具有更小的响应。这些结果印证了我们的最基本的动机(Sec.3.1):残差函数比非残差函数更接近0;我们注意到,深层ResNet具有更小的响应,见图7(ResNet-20,ResNet-56,ResNet-110)。
5、论文核心点解析

什么是残差网络(ResNet)?

残差模块如图5所示,主要特点是添加快捷连接通道(shortcut connections,即 identity: x),具体形式见方程(1);

残差网络要解决什么问题?

    解决网络退化:作者在训练网络发现,简单的加深网络,会出现网络退化现象(degradation problem,见图1),即是:随着深度增加,训练误差增大,并且退化不是由于梯度消失或者梯度爆炸引起的;
    训练深层网络:通常网络越深,分类效果越好,但是深层网络难以优化。残差模块的设计解决了深层网络难以训练的问题,使得深层网络可以很容易训练(比如152层,1000层等);
    用公式表达上述残差模块的形式为:F(x)= H(x)- x,作者认为,学习残差函数比学习潜在的映射H(x)更容易。

 
————————————————
版权声明:本文为CSDN博主「X_Imagine」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kxh123456/article/details/102775867

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值