ResNet

论文题目《Deep Residual Learning for Image Recognition》

摘要

更深的网络往往更难以训练,作者提出了残差学习的框架减轻训练深度网络的难度。作者训练出了152层的神经网络,计算量小于VGG-Net,但网络层数是其8倍。在ILSVRC2015分类任务中,以3.75% top-5 error获得分类第一,同时在ImageNet检测、定位、COCO检测、COCO分割上都取得了第一的成绩。

简介

神经网络的深度很重要,但是不是说简单的堆积更多的网络层就一定可以取得更好的效果?这个问题的回答显而易见,NO,梯度弥散和梯度爆炸现象阻碍了网络的收敛,通过初始权重的初始化和使用BN层可以改善这些问题。
这里写图片描述
如上图所示,作者观察到了一种称之为“退化”的问题,网络深度增加之后,反倒训练误差和测试误差更大了。发生这种现象的原因并不是因为发生了过拟合,而是因为网络层数更多了之后最优化的难度加大了。
浅层网络学习能力有限,需要增加网络深度,但是增加网络深度之后最优化难度也大,取得的效果也不好。作者针对上述“退化”的问题,提出了深度残差学习的解决方案,如下图所示。
这里写图片描述
在网络中使用“shortcut connections”,可以跨越一个或多个网络层,好处是:

  1. 相比于未添加“shortcut connections”的“plain”网络,网络层数增加之后可以取得更小的训练误差,网络也比较容易最优化;
  2. 因为网络层数增加了,最优化的也很好,因此可以取得更好的准确率。

深度残差网络

残差学习

假设潜在的要学习的映射函数为 H ( x ) H(x) H(x),添加了右侧的直连函数之后,要学习的映射函数就变成了 F ( x ) : = H ( x ) − x F(x):=H(x)-x F(x):=H(x)x.
如果在浅层网络上添加的层可以近似为恒等变换,那么添加之后得到的深层网络的训练误差不应该大于浅层网络,但是从Figure 1的实验结果说明实际上不是这样的,也就说明了用多个非线性层很难近似恒等变换。
假设对一个Figure 2所示的残差学习的block而言,最佳的映射是近似恒等变换的,那么在添加了"shortcut connection"之后,通过几个非线性变换要学习的映射关系即很小的扰动函数,接近于0,这样学习的难度就大大减小了。
上面两段话的意思是说,既然Figure 1中所示的使用普通的plain网络,56层的网络比20层的网络有了退化,那就说明了多出来的这36层不是简单的恒等变换。因此,作者就想用残差块实现近似恒等变换。那么由于残差块的结构中本身已经包含了“skip connection”,那么如果想使得残差块近似于恒等变换,那么就需要残差块中除“skip connection”之外的其他层只学习到很接近于0的函数。
下图Figure 7表示学习到的残差函数一般响应值都很小,证明学习到的残差函数都很接近于0,说明一个building block学习到的是一个近似恒等变换的假设是成立的。
这里写图片描述

shortcuts恒等变换

一个building block可以表示成:
y = F ( x , W i ) + x y = F(x,{W_i})+x y=F(x,Wi)+x 公式1
F ( x , W i ) F(x,{W_i}) F(x,Wi)表示要学习的残差,在figure 2所示的building block中, F = W 2 R e l u ( W 1 x ) F=W_2Relu(W_1x) F=W2Relu(W1x),然后进行逐元素的加法 F + x F+x F+x,最后再使用一个Relu操作得到输出 y y y
加一个“shortcut connection”,没有增加任何的参数和计算复杂度(除了element-wise的加操作之外)。
上面的公式1有一个要求就是需要 F 和 x F和x Fx必须是同等大小的,如果不满足这个条件,那么就添加一个线性映射 W s W_s Ws实现维度匹配,具体如下式:
y = F ( x , W i ) + W s x y = F(x,{W_i})+W_sx y=F(x,Wi)+Wsx 公式2
“shortcut connection”跨越1个层的时候,就是实现 y = W 1 x + x y=W_1x+x y=W1x+x,是一个线性变换,没有带来任何的益处,因此需要“shortcut connection”跨越多个层,本文作者的网络中“shortcut connection”都是跨越2或者3个网络层。

网络结构

这里写图片描述
中间网络是参照VGG Net设计的“plain”网络,设计思想是:

  • 卷积层大多使用3*3的卷积;
  • 如果输入和输出的feature map的空间尺寸一致,那么就包含相同数目的filters;
  • 如果输出的feature map的尺寸为输入的feature map尺寸的一半,那么filters的数目就应该加倍;
  • 使用stride为2的卷积实现下采样;
  • 使用一个全局平均池化层(GAP)得到1000个输出值送入softmax;
  • 34层网络,3.6billion的计算量,是VGG19的18%。

右边是“plain”网络的残差版,具体是:

  • 如果“short connection”的输入和输出的depth相同,那么直接使用恒等连接,如图中的实线所示;
  • 如果“short connection”的输入和输出的depth不同,输出的depth大于输入,两种解决办法,一种是进行恒等连接,然后进行补零增加维度,这样不带来任何的参数;另一种是使用公式2通过1*1的卷积进行depth匹配。

实验

数据预处理

类似于VGG Net,对训练数据进行尺寸增广;
裁剪224*224的图像块,水平翻转,图像减均值;
使用AlexNet中的颜色增广;
在每一个卷积层的激活函数之前使用BN层;
MSRA初始化,从头训练;
没有用dropout;
测试时候,使用10-crop。

实验结果

ImageNet分类

18层的plain net
这里写图片描述

这里写图片描述

这里写图片描述
plain 34层的网络比18层的网络训练和测试误差更大;
resnet 34层的网络比18层的网络训练和测试误差要小;
resnet优于plain。

由于作者在网络中使用了BN层,出现34层网络的训练和测试误差大于18层网络的原因不是因为发生了梯度弥散。作者猜测可能是因为更深的plain网络收敛的更慢,减慢了训练误差的下降速率,但是也不确定,需要后面继续研究。

网络层数不那么大的时候,现有的SGD最优化算法可以很好的为plain网络找到最优解,只不过相比resnet收敛的速度慢一点。
所以,resnet,网络层数小的时候可以加速训练过程;网络层数大的时候可以避免“退化”,使得网络收敛的更好,取得更好的分类准确率。

这里写图片描述
比较三种“shortcut connection”方式的影响,A表示zero-padding增加维度,无新参数引入;B表示增加维度时使用 W s W_s Ws不需要增加时使用恒等连接;C表示全部使用 W s W_s Ws进行连接。结果表明,C优于B,B优于A,但差别都很小,但C的方式引入了太多的新的参数,所以下文都没有再用C的方式了。

为ImageNet设计的网络
这里写图片描述
1*1的卷积用来进行维度的扩充或者减小。
这里写图片描述
将34层resnet中的Figure5左侧的2层的block换成右侧3层的block,得到了Resnet50;使用更多的block得到了Resnet101和Resnet152.结果表明,层数加深之后,也没有发生退化现象。和其他的state-of-art算法比效果也很好,取得了ILSVRC2015的分类冠军。

CIFAR-10分类

这里写图片描述

这里写图片描述
残差函数的std很小,都很接近于0;
网络层数越多,响应的幅值越小。说明网络层数越多,单层对信号的改变量越小。

检测

这里写图片描述
把Faster-rcnn中的提取特征的模型从VGG-16换成ResNet-101之后取得的效果提升。

推荐一篇不错的理解:
https://blog.csdn.net/nini_coded/article/details/79582902

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值