• 经典论文-ResNet



    #pic_center =400x
    系列文章:



    引言

    paragraph1

    • 深度网络在端到端方式中能自然的集成低中高级的特征和classifiers,这些特征能通过堆叠层来enrich
    • 深度在神经网络中很重要,一些在比赛中取得优异的成绩的模型也从深度方面获益(深度越深提取特征越丰富,深层提取抽象特征,这些抽象特征具有语义信息)

    paragraph2

    • 是否学习一个好的网络和堆叠一些层一样简单? 梯度消失/爆炸回答了这个问题(深度越深,导致梯度消失和爆炸,导致学习这些模型是有问题的)
    • 这个问题可以通过两个方式解决:1刚开始进行normalization,2中间层时normalization,这种方式可以让使用反向传播的随机梯度下降的10层的神经网络开始收敛

    paragraph3

    • 当深度网络模型开始收敛时,就暴露一个degradation(退化)问题:当深度增加时,精确度趋于饱和,然后精度迅速减少

    • 网络退化:越深的网络拟合数据能力应该越强但是是相反,原因不是过拟合而是网络优化困难,即模型难训练

    • 这个精度下降问题并非过拟合导致的(这里精度下降是 训练和测试都下降)

    • 过拟合:是训练精度很高,但是测试精度低

    • 向一个深度合适的模型再添加几层会导致比较大的训练误差,我们的实验以及【11,42】这两个参考文献都能说明这个问题

    • 表1展示一个典型的例子
      在这里插入图片描述
      表1:左侧是训练误差,右侧是测试误差:在20层以及56层的plain networks(普通的神经网络)
      深的神经网络有更高的训练误差以及测试误差,这个相似的现象在ImageNet中也出现了(图4)
      归一初始化,各层输入归一化,使得可以收敛的网络的深度提升为原来的十倍。虽然网络收敛了,但网络却开始退化
      paragraph4

    • 考虑浅的神经网络

    • 考虑深的神经网络(浅的神经网络的copy+ 其他added的层),the added layers are identity mapping,这个深的网络模型的训练 误差应该比浅的低,但实验的结果并非如此,所以当前这样的网络模型不可以

    paragraph5

    • 我们引入 deep residual learning framework可以解决精度下降问题

    Deep Residual Learning

    3.1. Residual Learning

    3.2. Identity Mapping by Shortcuts

    paragraph1

    • 我们用残差学习少部分的层,构件的块如图二,
      在这里插入图片描述

    这个块的表达式如下
    y = F ( x , W i ) + x (1) y = \mathcal{F}(x, {W_{i}} ) + x\tag{1} y=F(x,Wi)+x(1)

    • x,y是输入和输出, F ( x , w i ) \mathcal{F}(x,{w_i} ) F(x,wi)是残差学习的function
    • F ( x , w i ) \mathcal{F}(x,{w_i} ) F(x,wi)是两层的神经网络, F = W 2 σ ( W 1 x ) \mathcal{F}= W_{2}\sigma(W_{1}x) F=W2σ(W1x), σ \sigma σ=ReLU,为了简化符号,省略写了偏置b
    • F ( x , w i ) + x \mathcal{F}(x, {w_{i}} ) + x F(x,wi)+x 是按照元素相加

    paragraph

    • 等式(1)没有增加额外的参数以及计算复杂度,这一点在计算以及对比普通网络和残差网络方面很有吸引力。
    • 我们客观公平对比了普通网络和残差网络具有相同数量的参数、深度、宽度、计算cost

    paragraph

    • x 与 F的维度需要一致
    • 不一致,引入 W s W_{s} Ws进行线性变换
      y = F ( x , W i ) + W s x (2) y=\mathcal{F} (x, W_{i}) + W_{s}x\tag{2} y=F(x,Wi)+Wsx(2)
    • W s W_{s} Ws仅仅用来维度转换的

    paragraph

    • F \mathcal{F} F是灵活的,可以有两三层,甚至多层也有可能
    • 本论文中的实验使用两到三层
    • 但如果只有一层,它就接近与线性层 y = W 1 x + x y= W_{1}x + x y=W1x+x,这样的线性层就无法体现出优势

    paragraph

    • 以上的全连接层(也就是残差,它是多层全连接组成的)进行了简写,这种模型可以用到卷积神经网络
    • F ( x , w i ) \mathcal{F}(x,{w_i} ) F(x,wi)代表多个卷积层,元素相加方法:是在两个特征图上逐通道相加的

    3.3. Network Architectures

    paragraph

    • 我们在普通网络和残差网络进行多次实验,实验现象一致,现在我们提供例子

    paragraph

    普通网络:受VGG启发设计得到的

    • 大部分卷积是3*3的,遵循以下原则:
      • 1) 输入输出同维度:各层之间使用相同数量的卷积过滤器
      • 2)维度减半时:卷积过滤器数量翻倍,这是为了每层有相同的时间复杂度
    • 采用步长为2进行下采样
    • 池化使用平均池化,1000的分类,带有softmax全连接
    • 共有34层的网络是有权重参数的
    • 这个模型相比于VGG,过滤器少,复杂度少,

    paragraph

    残差网络:是在普通网络基础上引入shortcut connections 实现的

    • 维度相同直接进行shortcut connections
    • 维度不同方法:
      • 1)0填充(没有额外的参数)
      • (2)x*W(通过1*1卷积实现的)

    在这里插入图片描述
    实线和虚线两种连结方式,实线的卷积和3x3x64 ,通道是64,采用的计算方式 y=F(x)+x
    虚线的连接分别是3x3x64和3x3x128的卷积操作,它们的通道不同(64和128),计算方式y=F(x)+Wx,其中W是卷积核,用来调整x的通道数

    在这里插入图片描述
    计算方式:
    维度相同: y = F ( x , W i ) + x y = \mathcal{F}(x, W_{i} )+x y=F(x,Wi)+x
    维度不同: y = F ( x , W i ) + W s x y = \mathcal{F}(x, W_{i} )+W_{s}x y=F(x,Wi)+Wsx
    参考:
    ResNet网络详细解析(超详细哦)

    3.4. Implementation

    • 图像根据短的那个维度随机采样,随机采样像素【256,480】,然后对图片同比例扩展
    • 从图像或其水平翻转中随机采样224×224裁剪,并减去每像素平均值
    • 使用SGD,批处理大小256,

    4 Experiments

    4.1. ImageNet Classification

    paragraph

    • 18层和34层网络结构相似,具体的架构如表1
      表1
      输入224x224

    paragraph
    普通网络

    • 表二(下图)说明普通网络中34层比18层的误差更大

    • 出现优化困难可能不是因为梯度消失问题,因为我们使用BN训练普通网络,它能够确保前向传播的信号具有非零方差。也使用BN验证了进行反向传播是,梯度也在正常的范围。所以不存在前向传播或者反向传播信号消失问题(梯度消失)

    • 事实上34层的深度网络也可以做到比18层更具有竞争力(效果好),我们猜想深的普通网络可能以指数形式缓慢收敛

    表2
    paragraph
    残差网络

    • 残差网络的基本架构引入 shortcut connection(添加3*3的卷积),其他架构的和普通网络一样(下图右侧是残差网络)
      在这里插入图片描述

    图4

    • 表2图4,采用以0填充的增加维度(没有额外的参数)
    • 表2图4看到34层比18层好,34层有相当低的训练误差,这个结论可以推广到验证集上。
    • 表明退化问题在这种设计模型下得到解决,我们设法做到了深度增加,精度增加
    • 对比表明残差学习在较深的模型中效果不错
    • 最后:18层的普通网络和残差网络精度相近,但是残差网络收敛更快
    • 当网络不深时(18层)SGD优化能找到 比较好的解,同样情况(18层)在早期,残差优化更容易,收敛更快

    Identity vs. Projection Shortcuts

    在这里插入图片描述
    ResNet Identity & Projection Shortcuts的理解

    • 表三(上图)对比三个选项
      • A 使用0填充柄增加维度,所有的 shortcuts都是无参数
      • B 在维度不一致的shortcuts, 使用projection 来增加维度,其他维度一样的地方不使用projection
      • C 所有的shortcuts(维度相同/不同)都使用projection
    • 表三说明这三个选项的误差都比普通网络小
    • B相对比A好,猜测的原因:使用0填充确实没有残差学习
    • C略微比B好,原因:引入额外的参数(全部使用projection)
    • ABC间差别不大,表明采用projection 的shortcuts 对于解决网络模型退化的问题而言,并非是必要
    • 论文中没有使用C方式(为了减少内存时间复杂度以及模型大小)
    • Identity shortcuts 对于增加bottleneck architectures的复杂性很重要。下面介绍bottleneck architectures

    Deeper Bottleneck Architectures.

    • 作者采用图5中右侧车的3层的残差网络(2个1x1卷积和1个3x3卷积)
    • 1x1卷积 用来增加/减少维度
    • leaving the 3×3 layer a bottleneck with smaller input/output dimensions?
    • 左右两种设计时间复杂度相似

    在这里插入图片描述

    • 无参数的 identity shortcuts很重要,如果采用projection,时间复杂度、模型大小加倍
      50-layer ResNet:
    • 34层的使用的是两层的Bottleneck, 50层的使用的是3层的Bottleneck
    • 使用B(维度相同用identity 维度不同用projection shortcuts)

    在这里插入图片描述

    101-layer and 152-layer ResNets:

    • 101层和152层的残差网络很多采用3层的Bottleneck Architectures,
    • 尽管深度显著增加,但是浮点运算量却比VGG-16/19小(表3和4)
    • 50/101/152层的残差网络都比34层的精度大很多,因此,我们没有看到之前的问题:深度加深,精度下降
    • 随着深度加深,各项评估指标结果都很好
      在这里插入图片描述
      Comparisons with State-of-the-art Methods.
    • 表4:对比其他之前模型,我们的34层残差网络模型已经非常有竞争力了
    • 152层比所有模型的结果都好

    4.2. CIFAR-10 and Analysis

    • 在 CIFAR-10 数据集进行实验,该数据集有50K训练图片,10K的测试图片,需要进行10分类
    • 只展示训练、验证集上的结果
    • 我们重点放在很深的网络架构,而不是一维追求SOTA,所以故意采用了简单的架构

    在这里插入图片描述
    普通/参数网络架构如图三(上图)

    • 输入时32x32的图片(每个像素都减去了平均值)
    • 第一层是3x3卷积,之后在大小为32,16,8,的特征图上,使用6的倍数这样的3x3卷积(进行6,12…次这样的卷积)with 2n layers for each feature map size.?
    • 卷积核数量分别为16,32,64
    • 下采样是步长为2的卷积
    • 最终输出是平均池化和10路的全连接+softmax
    • 有权重的层数是6n+2
    • 下表总结了架构
      在这里插入图片描述
    • 在该数据集上,使用identity shortcuts(方案A,维度不同采用0填充)
    • 残差模型和普通的网络有相同的深度,宽度以及参数量
    • weight decay of 0.0001 and momentum of 0.9,dopt the weight initialization in [13] and BN [16] but with no dropout. a mini-batch size of 128

    启发点:

    • 大部分的梯度消失/爆炸问题,可以通过良好初始化或者中间层的标准化来解决
    • shortcut connection有很多方式,本文主要用的恒等映射,即也不操作的往后传播
    • highway network的shortcut connection依赖参数控制, resnet不需要
    • 恒等映射形式的shortcut connection是从网络退化问题中思考而来的
    • 借鉴VGG,本文模型的设计原则:1处理相同大小特征图,卷积核数量一样 2特征图分辨率降低是,通道数量翻倍
    • 当特征图分辨率变化时候, shortcut connection同样采用stride=2进行处理
    • bottleneck中使用两个1x1卷积来增加/减少通道数
    • 模型集成采用6中不同深度的ResNet结构,可以借鉴
    • cifar-10数据集上的ResNet-110,第一个epochs采用较小学习率,来加速模型收敛

    BatchNorm2d原理、作用及其pytorch中BatchNorm2d函数的参数讲解

    Pytorch实现Resnet训练CIFAR10数据集(完整代码,可进一步优化)

  • 相关阅读:
    Pooling Revisited: Your Receptive Field is Suboptimal 论文解读和感想
    6-2 递归求Fabonacci数列
    【手写Mybatis】step04:数据源的解析、事务和sql执行
    (附源码)ssm高考志愿智能选择系统 毕业设计 134565
    linux常用命令
    多水站送水桶装水配送员公众号H5开发
    Hot 100总结【leetcode】
    python-17-并行计算和分布式计算框架dask
    JMeter性能测试,完整入门篇
    GIS基础
  • 原文地址:https://blog.csdn.net/weixin_42382758/article/details/126077006