《Deep Residual Learning for Image Recognition》学习笔记

本文简要记录一下自己阅读论文《Deep Residual Learning for Image Recognition》时所做的个人笔记。

摘要

通常情况下,神经网络的深度越深,越难以训练,本文提出了一种残差神经网络来解决这个问题,它的优化更简单,并且可以在深层的神经网络中也相应获得更高的准确度。这种深度残差神经网络在ImageNet等数据集的测试效果均为第一名。

1、介绍

研究结果表明,神经网络模型的深度对训练任务起着至关重要的作用,但是当模型深度太大时,会存在梯度消失/梯度爆炸的问题,尽管normalized initial-ization和intermediate normalization可以在一定程度上解决这个问题,但是准确率依然会在达到饱和后迅速退化,因此错误率甚至会更高,如下图所示,越深的网络有越高的训练错误率和测试错误率。
Training error (left) and test error (right) on CIFAR-10with 20-layer and 56-layer “plain” networks.
本文提出了深度残差学习(deep residual learning)框架来解决上图中的问题,如下图所示,通过前馈神经网络的shortcut connections来跨过一个层或者多个层,将前层的输出直接与卷积层的输出叠加,相当于做了个恒等映射。在极端情况下,如果恒等映射最优,可以将残差设置为0就简单地实现了恒等映射。简单来说,残差学习就是将一层的输入与另一层的输出结果一起作为一整个块的输出。

在ImageNet和CIFAR-10数据集上,使用简单堆叠的plain网络在深度增加时错误率会更高,但使用这种深度残差网络会很容易优化,并且在增加层数的同时不会产生更高的训练错误率。

2、Deep Residual Learning

2.1 Residual Learning

残差学习拟合出来的结果函数是F(x)+x,这样相当于增加层的输出能以恒等映射来构建,所以更深模型的训练错误率相应会低于它所对应前层模型的错误率。并且在这种情况下,如果恒等映射最优,那么求解器会使多个非线性层的权重趋向零来逼近恒等映射,故可以解决plain模型的深层退化问题。

2.2 Identity Mapping by Shortcuts

如上图Fig.2所示的恒等映射公式为:y=F(x,{Wi})+x,x和y分别代表整个块的输入和输出,函数F(x,{Wi})表示残差映射。在图Fig.2中有两层网络:F=W2σ(W1x),其中σ是relu激活函数,在F+x之后又有另一个非线性操作relu激活函数。此外,这里的shortcut连接并不会增加参数和计算复杂度,因此可以公平地将残差网络和plain网络作比较。
如果上面公式中的F和x维度不相同时,则需要在shortcut连接时执行一个线性映射Ws来匹配维度:y=F(x,{Wi})+Wsx。
残差网络F的具体形式并不确定,可以有多层,本实验中涉及的是两层和三层。但是如果只有一层,映射公式就变成了线性函数y = W1x + x,不再具有优势。

2.3 Network Architectures

下面将以ImageNet数据集为例,将plain网络和残差网络作对比讨论。

  • (1)Plain Network
    受VGG网络(如下图左图)的影响,plain网络(如下图中间)的卷积层主要是3*3
    的滤波器,加权层的层数为34,在网络的最后是全局的平均pooling层和一个1000种类的包含softmax函数的全连接层。plain网络比VGG网络有更少的滤波器(卷积核后面的64,128,256等代表个数)和更低的计算复杂度,VGG-19模型有196亿个FLOPS,plain网络含有36亿个FLOPS。
  • (2)Residual Network
    在plain网络的基础上,加入shortcut连接,就变成了相应的残差网络,如下图右图所示,图中所加实线表明可以直接使用恒等shortcuts,虚线表示维度不匹配时的情况,需要先调整维度再相加,调整维度的方法有两种:(A)仍然使用恒等映射,只是在增加的维度上使用0来填充,这种方法不会引入额外的参数;(B)使用1x1的卷积映射shortcut来调整维度保持一致。这两种方法都使用stride为2的卷积。

下表是残差网络处理ImageNet数据集时的结构框架,其中括号里的数字是每一个构建块的参数,多个构建块堆叠起来构成多层神经网络。当层数比较少时(如18层和34层),残差块中使用的是两层卷积,当网络层数多时,残差块中使用的是三层卷积。此外,表格中的残差结构还分成了四大类:conv2_x、conv3_x、conv4_x和conv5_x,每一类残差结构中的第一层残差块(虚线)完成下采样操作,通过这种方法改变通道和维度。

3、实验

下面是基于ImageNet2012数据集进行评估实验,训练集包含128万张图像,验证集包含5万张图像,测试集有10万张图像,对top-1和top-5的错误率来评估。

  • plain网络
    首先进行的实验是18层和34层的plain网络,实验结果如下表所示,产生了一种退化现象:在训练过程中34层的网络比18层的网络有着更高的训练错误率。

  • 残差网络
    接着对18层和34层的残差网络进行评估,为了保证变量的一致性,其基本框架结构和plain网络的结构相同,只是在每一对卷积层上添加了shortcut连接来实现残差结构,对于维度不匹配的情况,使用0来填充维度(即上面介绍过的方法A),因此也并没有添加额外的参数。训练结果如下图所示,

    结合下表验证集上的top-1错误率与前面两个表格,可以对比得到:
    (1)与plain网络相反,34层的resnet网络比18层的错误率更低,表明可以通过增加深度提高准确率,解决了退化问题。
    (2)与plain网络相比,层次相同的resnet网络上错误率更低,这也说明残差网络在深层次下仍然有效。
    (3)对于18层的plain网络,它和残差网络的准确率很接近,但是残差网络的收敛速度要更快。
    在这里插入图片描述

  • 恒等shortcuts VS 映射shortcuts
    无参数的恒等shortcuts肯定是有助于提高训练效果的,针对映射shortcuts,有三种方法可供选择:
    (A)对需要调整维度的情况使用0来填充,这种方法下所有的shortcuts都是无参数的;
    (B)对需要调整维度的使用卷积映射shortcuts来实现,不需要调整维度的使用恒等shortcuts;
    (C)无论需不需要调整维度,都使用映射shortcuts。
    下面的表格中表明了三种选项的模型都比plain模型要好,按效果好坏排序为C>B>A,但是三种方法结果的差距很小,因此本文为了减少复杂度和模型尺寸,并不使用选项C。

  • 深度瓶颈结构
    接下来介绍层次更多的模型,对于每一个残差块,不再使用两层卷积,而是使用三层卷积来实现,如下图所示。只需要将34层resnet网络中的残差模块从2层换成3层,整个网络就变成了50层的resnet。实验结果表明,50/101/152层的resnet比34层resnet的准确率要高很多,解决了深层的退化问题。同时即使是152层resnet的计算复杂度仍然比VGG-16和VGG-19要小。
    在这里插入图片描述
    此外,还在CIFAR-10数据集和COCO数据集上进行了实验,结果均表明resnet神经网络达到了预期效果,引入残差网络后,深层的网络更容易优化,并且可以降低训练错误率。

本文参考链接:
https://blog.csdn.net/u014114990/article/details/50505331
https://zhuanlan.zhihu.com/p/129833754
https://www.cnblogs.com/aoru45/p/10286918.html
https://blog.csdn.net/wspba/article/details/57074389
https://www.bilibili.com/video/BV1mv41117Db?p=1&share_medium=iphone&share_plat=ios&share_source=COPY&share_tag=s_i&timestamp=1626523202&unique_k=NEJfn6
https://www.bilibili.com/video/BV1T7411T7wa?p=1&share_medium=iphone&share_plat=ios&share_source=COPY&share_tag=s_i&timestamp=1626523278&unique_k=NrJC2B

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值