作者: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个分类里有正确的概率。