论文分享:Deep Residual Learning for Image Recognition

经典优化策略模型ResNet,之所以收录在此专栏,是因为现阶段的图像分割深层模型基本上都用到了残差块与跳接的思想,值得去细细品读。建议读者有时间的话自己也去看一下原文,相信会有更多的收获。

要点

1. 提出了一个残差学习框架,使更深网络的训练过程变得更加容易
2. 为残差网络更易优化的结论提供了全面的经验证据
3. 残差网络能够随着网络的加深继续提高精度

读引言

研究背景

  网络的加深能够在多种任务中获得收益,取得领先结果的重要模型都是来自于非常深的模型。
  但是这并不是意味着神经网络越深就能学习的越好,实际上对于收敛过程一直存在梯度消失和梯度爆炸两种障碍。这一问题在很大程度上已经被初始归一化和中间归一化层解决过了。

为什么要研究

  当更深的网络能够逐渐收敛的时候,出现了退化问题:随着网络模型深度的增加,精确度毫无意外地达到饱和,但随后会迅速下降。这个问题并不是过拟合造成的,给深度适当的模型添加更多的层就会导致更高的错误率。
  针对这个问题,尝试构造一个残差网络结构:如果已经达到最优,那么就输出恒等映射,否则就就通过残差映射路径去学习。

主要内容

  找到恒等映射的扰动要比学习新的函数更容易。需要学习的部分是F(x),它表面上看是非线性全连接层,实际上可以甚至更多时候是卷积层,可以是多层的叠加。
在这里插入图片描述

  x与F(x)的维度必须相等,如果不等则需要在跳接过程中增加一个线性变换Ws,使得维度是匹配的。
在这里插入图片描述
(仅在维度匹配时使用)

实验如何开展

测试两种类型的模型进行对比实验:普通网络和残差网络。
(对比实验中普通网络部分的小认识:特征图的大小减半时要将卷积核的数量加倍,输出双倍的通道,这样可以保证每层网络足够的时间复杂度。)
残差网络中遇到通道增加时需要进行维度对齐,Wsx通过SAME卷积实现,此时改变通道数。Keras代码实例如下。

def identity_Block(inpt, nb_filter, kernel_size, strides=(1, 1), with_conv_shortcut=False):
    x = Conv2d_BN(inpt, nb_filter=nb_filter, kernel_size=kernel_size, strides=strides, padding='same')
    x = Conv2d_BN(x, nb_filter=nb_filter, kernel_size=kernel_size, padding='same')
    if with_conv_shortcut:
        shortcut = Conv2d_BN(inpt, nb_filter=nb_filter, strides=strides, kernel_size=kernel_size)
        x = add([x, shortcut])
        return x
    else:
        x = add([x, inpt])
return x

结果

  整体上看,残差网络组比普通网络组更加有效,能获得更高的精度,且收敛速度更快。同时,通过34-layer和18-layer resnet的对比可以看出,随着迭代次数的增加,两者在验证集上的结果均能收敛到稳定状态,但34的效果更好,拥有更低的错误率,这表明残差网络的加深能够获得精度上的回报。
  实验证明,仅在通道数增加时使用Wsx能获得最理想的结果,在正常shortcut中没必要使用,提升不大但是引入了太多的参数。

  拓展到瓶颈结构,将层数从34加深到了50、101、152,尽管已经加深到如此地步,依旧低于VGG16/19的复杂度。

               在这里插入图片描述

bottleneck 能够有效减少训练和计算的参数。

  观察50/101/152resnet的结果,发现深度的大幅增加可以显著提高精度,没有观察到退化问题。


数据分析

在CIFAR-10数据集上关注极深网络的表现,依旧使用这种简单的结构。
当深度增加时,相比普通网络学习的困难和产生退化现象,ResNets设法克服了优化的困难并获得了极高的精度增益。
但是从110层加深到1202层时验证集精度反而降低了,考虑到训练集的精度非常高,这可能产生了过拟合的问题,对于这个小数据集的问题来说,网络过大了。
在目标检测类的任务中,使用R-CNN作为检测方法,只是将VGG16换成了ResNet101,获得了28%的相对进步,这说明残差网络的学习是有效的,具有良好的泛化性能。


结论

  深度神经网络通常集成了低层、中层和高层特征,特征的 “层级” 可以通过增加网络深度来丰富,随着网络深度的增加,准确率达到饱和后迅速降低,但是这种退化并不是由于过拟合导致的。于是引入残差结构,在训练接近饱和时由网络自行决定是否继续学习,如果不继续学习则让残差 为0即可,这种带残差的网络更容易优化并可以随着深度的增加获得更好的精度。


论文地址:https://openaccess.thecvf.com/content_cvpr_2016/html/He_Deep_Residual_Learning_CVPR_2016_paper.html

笔者实验室研究的主要方向是血管图像分割,以及利用生理信号评价脑血流自动调节功能。此专栏会记录我个人对分割领域经典论文,以及一些感兴趣项目的笔记,如果有哪里理解不好的地方欢迎大家指正,共同学习共同进步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
deep residual learning for image recognition是一种用于图像识别的深度残差学习方法。该方法通过引入残差块(residual block)来构建深度神经网络,以解决深度网络训练过程中的梯度消失和梯度爆炸等问题。 在传统的深度学习网络中,网络层数增加时,随之带来的问题是梯度消失和梯度爆炸。这意味着在网络中进行反向传播时,梯度会变得非常小或非常大,导致网络训练变得困难。deep residual learning则使用了残差连接(residual connection)来解决这一问题。 在残差块中,输入特征图被直接连接到输出特征图上,从而允许网络直接学习输入与输出之间的残差。这样一来,即使网络层数增加,也可以保持梯度相对稳定,加速网络训练的过程。另外,通过残差连接,网络也可以更好地捕获图像中的细节和不同尺度的特征。 使用deep residual learning方法进行图像识别时,我们可以通过在网络中堆叠多个残差块来增加网络的深度。这样,网络可以更好地提取图像中的特征,并在训练过程中学习到更复杂的表示。通过大规模图像数据训练,deep residual learning可以在很多图像识别任务中达到甚至超过人类表现的准确性。 总之,deep residual learning for image recognition是一种利用残差连接解决梯度消失和梯度爆炸问题的深度学习方法,通过增加网络深度并利用残差学习,在图像识别任务中获得了突破性的表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值