论文理解 Deep Residual Learning for Image Recognition

《Deep Residual Learning for Image Recognition》是微软研究院孙剑等大牛撰写的一篇论文,中文名叫做 《用于图像识别的深度残差学习》 。

 

Abstract:

摘要部分首先说明越深的神经网络训练起来越困难。然后提出本论文的一种残差学习框架,能够简化那些非常深的网络的训练。该框架使得层能根据其输入来学习残差函数而非原始函数(unreferenced functions)。这种残差网络的优化更简单,并且在ImageNet数据集上使用了一个152层深的网络来评估残差网络,具有很低的复杂度。这些残差网络的一个组合模型(ensemble)在ImageNet测试集上的错误率仅为 3.57%,而且在各种比赛上获得了优异成绩。

 

1.     Introduction:

深度网络可以将低//高不同层次的特征以及分类器整合起来,特征的等级可以通过所堆叠层的数量(深度)来丰富。但是这样存在一个问题:层次越深,训练越困难,优化越困难,并且会出现梯度消失/爆炸等问题阻碍网络收敛。归一初始化(normalized initialization)和中间归一化(intermediate normalization)在很大程度上解决了这一问题,它使得数十层的网络在反向传播的随机梯度下降(SGD)上能够收敛。

但是深层网络收敛后,一个退化问题又出现了——随层次增加,精度饱和后迅速变差。退化问题并不是过拟合导致的,并且增加更多的层匹配深度模型,会导致更多的训练误差。如图所示:


比较一个浅层的框架和它的深层版本。对于更深的模型,这有一种通过构建的解决方案:恒等映射(identity mapping)来构建增加的层,而其它层直接从浅层模型中复制而来。这个构建的解决方案也表明了,一个更深的模型不应当产生比它的浅层版本更高的训练错误率。实验表明,我们目前无法找到一个与这种构建的解决方案相当或者更好的方案(或者说无法在可行的时间内实现)。

本文提出一种深度残差学习网络ResNet框架来解决退化问题。做法是明确的让这些层来拟合残差映射(residual mapping),而不是让每一个堆叠的层直接来拟合所需的底层映射(desired underlying mapping)。假设所需的底层映射为H(x),让堆叠的非线性层来拟合另一个映射: F(x):=H(x)−x。 因此原来的映射转化为:F(x)+x。作者推断残差映射比原始未参考的映射(unreferenced mapping)更容易优化。在极端的情况下,如果某个恒等映射是最优的,那么将残差变为0 比用非线性层的堆叠来拟合恒等映射更简单。

如图2所示,公式 F(x)+x 可以通过前馈神经网络的 “shortcut连接” 来实现。Shortcut连接就是跳过一个或者多个层。在例子中,shortcut 连接只是简单的执行恒等映射,再将它们的输出和堆叠层的输出叠加在一起。恒等的shortcut连接并不增加额外的参数和计算复杂度。完整的网络仍然能通过端到端的SGD反向传播进行训练,并且能够简单的通过公共库(例如,Caffe)来实现而无需修改求解器(solvers)。


 

3. Deep Residual Learning:

还是如图2:

X:网络层中第一层的输入;

H(X) :一个有若干堆叠的网络层将进行拟合的映射(不一定要整个网络),表示最优解映射。

 

假设:

多层的非线性网络层可以逐渐逼近很复杂的函数H(X)。与其让这些层去逼近H(X),我们更期望让它们去逼近残差函数F(X) := H(X) - X 。让堆叠的非线性层去拟合残差映射 F(X) := H(X) - X, 此时原最优解映射 H(X) 就可以改写成H(X) := F(X) + X

如果优化的残差函数接近于自身映射的话,网络会更容易学习去确定自身映射的扰动参考,而不是将其作为一个全新的函数去学习。

我们假设残差映射跟原映射相比更容易被优化,极端情况下,如果一个映射是可优化的,那也会很容易将残差F(X)推至0,把残差推至0和把此映射逼近另一个非线性层相比要容易的多。

 

图解:

网络有两层; F(x) = W2σ (W1 x)σ 表示RELU,出于简化考虑省略了偏置项;操作F(x) + x 是由一个快捷连接进行逐元素的添加得;在做加法后得到的模型具有二阶非线性;自身快捷连接既不会添加额外的参数也不会增加计算复杂度;整个网络依然可以用SGD+反向传播来做端到端的训练,并且可以很容易用大众框架来实现,不用修改slover配置。

公式(1)和(2),其中(1)为XF维度相同,(2)为XF维度不相同。



x:残差块的输入向量;

y:残差块的输出向量;

Ws:线性投影,用来匹配维度。

F(x, {Wi }) F(x)= W2σ (W1 x),表示被将被训练的残差映射:residual function

公式可对应于卷积层与全连接层,逐元素的加法运算则是两个特征图谱的加法,按照通道对应。

 

网络架构:


设计原则:

 

Plain(普通)网络(中间):

1.卷积层的filter大多为3x3

2.遵循了两个设计原则:对于相同的尺寸的输出特征图谱,每层必须含有相同数量的过滤器;如果特征图谱的尺寸减半,则过滤器的数量必须翻倍,以保持每层的时间复杂度;

3.卷积层(stride=2)进行下采样;

4.末端以全局的均值池化层结束,有1000路的全连接层(Softmax激活函数);

5.含有权重的网络层的总计为34层。

 

ResNet(残差)网络(右边):

1.当输入输出是相同尺寸的时候,存在短连接(图中黑线的自身映射连接);

2.当输入输出尺寸发生增加时(图中虚线的短连接),短连接在两个不同大小的特征图谱上出现时,用stride=2来处理。

两个策略:

optionA: 短连接仍然使用自身映射,对于维度的增加用零来填补空缺。此策略不会引入额外的参数;

optionB: 使用公式2的映射短连接用来匹配尺寸(1×1的卷积完成)。

 

后面是实验部分,本文提出的残差网络可以很好地解决上述存在的退化问题。具体设计细节可以在论文中找到。

 

作者写的代码也可以在github中找到,采用的是Caffe框架,实验结果可以验证:

https://github.com/KaimingHe/deep-residual-networks

 

个人总结:   

1. 这篇论文提出的核心思想是深度残差网络residual networks,这里的residual的含义是: 如果能用几层网络去逼近一个复杂的非线性映射H(x),那么同样可以用这几层网络去逼近它的residual function:F(x)=H(x)−x,但优化residualmapping要比直接优化H(x) 简单。

2. 残差网络的好处:

l  残差网络解决退化问题。

l  残差网络可以减轻深层网络的训练负担。

l  残差网络更容易被优化,并且可以在深度增加的情况下让网络的精度也增加。

 

参考文献:

http://blog.csdn.net/wspba/article/details/57074389

http://www.jianshu.com/p/170d9f3d9197

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值