ResNet

作者:18届 cyl

时期:2021-08-08

论文:忘记了

一、提出问题

问题:首先作者提出了训练深度网络中发现的一个问题**----在一定深度下,深层网络的训练误差大于浅层网络的训练误差,例如56层的网络训练误差大于20层的网络,如下图所示:
在这里插入图片描述
图1 不同层数的传统神经网络的误差比较
如上图所示,作者做了一个对比实验,分别基于
CIFAR-10数据集训练了一个20层和56层的网络。56层网络的训练误差和测试误差都大于20层网络的训练误差,这显然不是过拟合导致的(网络退化问题)。这里的"plain networks"指的是由卷积、池化、全连接构成的传统的卷积神经网络,与ResNet不同。
问题分析:仔细分析可以得出
56层的网络(下面称为A网络)不应该比20层网络(下面称为B网络)的训练误差大,因为把A网络看作是在B网络的结构基础上再添加(56-20=36层得到的。那么可以将训练好的A网络分两部分考虑:
1.训练好的
A网络的前20层和B网络的训练结果完全相同;
2.训练好的
A网络的后36层是对A网络的第20层输出做恒等映射**,也就是不对A网络的第20层输出做改变。
考虑一个训练好的网络结构,如果加深层数的时候,不是单纯的堆叠更多的层,而是堆上去一层使得堆叠后的输出和堆叠前的输出相同,也就是恒等映射(identity mapping),然后再继续训练。这种情况下,按理说训练得到的结果不应该更差,因为在训练开始之前已经将加层之前的水平作为初始了,然而实验结果结果表明在网络层数达到一定的深度之后,结果会变差,这就是退化问题。这里至少说明传统的多层网络结构的非线性表达很难去表示****恒等映射(identity mapping)。

二、解决方案

1.提出残差学习
作者提出了残差学习来解决退化问题。对于一个堆积层结构(几层堆积而成),当输入为x时其学习到的特征记为H(x),现在我们希望其可以学习到残差F(x) = H(x) - x,这样其实原始的学习特征是H(x)。之所以这样是因为残差学习相比原始特征直接学习更容易。残差学习的结构如下图右边所示,有点类似于电路中的"短路",因此被称为短路连接(shortcut connection)。
在这里插入图片描述
图2 普通单元(左)与残差单元(右)

2.ResNet结构为什么可以解决深度网络退化问题?
因为ResNet更加容易拟合恒等映射,原因如下:
以上面的问题分析部分为例,进行如下操作:
1.使用ResNet结构重新构建上述A、B两个网络,A网络与B网络的前20层结构完全相同
2.训练B网络得到各层参数
3.使A网络与B网络的前20层参数完全相同(直接copy参数)
4.A网络的后36层所有的参数置为0
我们可以看出此时将A网络的输出误差应该与B网络相同(暂时不考虑网络中的维度大小的细节),因为ResNet结构的输出为F(x)+x ,如果将网络中的参数置为0,则 F(x) = 0,因此得到的输出为0+x=x也就是恒等映射。这样就解决了上面提到的网络很难去拟合恒等映射的问题。因此使用ResNet结构搭建的深度网络至少与浅层网络具有相同的拟合能力,不会出现之前的网络退化问题。

深度残差网络结构学习

1.残差单元
在这里插入图片描述
如上图所示,左边的original block需要调整其内部参数,使得输入的x经过卷积操作后最终输出的F(x)等于x,即实现了恒等映射F(x)=x,等号左边是block的输出,右边是block的输入。但是这种结构的卷积网络很难调整其参数完美地实现F(x)=x。再看右边的Res block。因为shortcut的引入,整个block的输出变成了F(x)+x,block的输入还是x。此时网络需要调整其内部参数使得F(x)+x=x,也就是直接令其内部的所有参数为0,使得F(x)=0,F(x)+x=x就变成了0+x = x,等号左边是block的输出,右边是block的输入,输出等于输入,即完美地完成了恒等映射。

2.ResNet网络结构
在这里插入图片描述
图3 ResNet网络结构图
ResNet网络是参考了VGG19的网络,在其基础上进行了修改,并通过短路机制加入了残差单元,如上图最右边所示。变化主要体现在ResNet直接使用stride=2的卷积做下采样,并且用global average pool层替换了全连接层。ResNet的一个重要设计原则是:当feature map大小降低一半时,featuremap的数量增加一倍,这保持了网络层的复杂度。从上图可以看到,ResNet相比普通网络每两层间增加了短路机制,这就形成了残差学习,其中虚线表示feature map数量发生了改变。
图3展示的34-layer的ResNet,还可以构建更深的网络如表1所示。从表中可以看到,对于18-layer和34-layer的ResNet,其进行的两层间的残差学习,当网络更深时,其进行的是三层间的残差学习,三层卷积核分别是1x1,3x3和1x1。

表1 不同深度的
ResNet

在这里插入图片描述
3.短路连接(shortcut)的三种方式
ResNet使用两种残差单元,如图4所示,左图对应的是浅层网络,而右图对应的是深层网络。对于短路连接,当输入和输出维度一致时,可以直接将输入加到输出上。但是当维度不一致时(对应的是维度增加一倍),这就不能直接相加。面对这个问题,有两种策略
1.如果x的维度增加,就使用0来填充增加出来的维度(A方式)
2.如果x的维度增加,使用线性变换来增加多出来的维度,在程序里表现为使用一个1x1的卷积核进行调整维度(B方式)
在这里插入图片描述
图4 不同的残差单元

四、结果分析

1.网络退化问题的解决
在这里插入图片描述
图5 18-layer和34-layer的网络效果

作者对比18-layer和34-layer的网络效果,如图所示。可以看到普通的网络出现退化现象,但是ResNet很好的解决了退化问题。

2.误差降低
表2 ResNet与其他网络的对比结果
在这里插入图片描述
如表2所示。可以看到ResNet-152其误差降到了4.49%,当采用集成模型后,误差可以降到3.57%。
注: top1:预测出来最大概率的那个分类是正确的概率
top5:预测出来最大概率的5个分类里有正确的概率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中南大学苹果实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值