ResNet v2

1、四个问题

  1. 要解决什么问题?

    • 进一步提高ResNet的性能。
    • 解释为何Identity mapping(恒等映射)的效果会比较好。
  2. 用了什么方法解决?
    • 提出了一个新的残差单元结构。
    • 从理论和实验上分析了identity mapping的有效性。
  3. 效果如何?
    • 使用1001层的ResNet,在CIFAR-10数据集上错误率为4.62%,在CIFAR-100数据集上错误率为22.71%。都是目前最好的结果。
    • ImageNet 2012数据集上,top-1错误率为20.1%,top-5错误率为4.8%,超过Inception v3,也是最优结果。
  4. 还存在什么问题?
    • ResNet模型可以有极深的深度,更强大的学习能力,同时也会带来更多的参数,更大的计算量,如何对其进行压缩,降低计算成本也是个需要考虑的问题。

2、论文概述

2.1、简介

  • 上式是原始残差单元,公式参数说明:

    • xlx_lxl​和xl+1x_{l+1}xl+1​分别是第lll层网络的输入和输出。
    • FFF表示残差函数。
    • h(xl)=xlh(x_l) = x_lh(xl​)=xl​表示恒等映射(identity mapping)。
    • fff表示ReLU函数。
    • 后面默认认为h(xl)=xlh(x_l) = x_lh(xl​)=xl​,f(yl)=ylf(y_l) = y_lf(yl​)=yl​。

  • 原始残差单元结构如a图所示,改进的残差单元结构如b图所示。
  • 为了理解跳跃连接(skip connection)的作用,作者实验了各种不同的h(x)h(x)h(x)(identity mapping),即图中的灰色线部分。最终的实验结果表明,保持一个clean information path有助于提升效果。
  • 提出了预激活(pre-activation)和后激活(post-activation)。
    • 预激活:bn -> relu -> conv
    • 后激活:conv -> bn -> relu
  • 在新的残差结构中改进如下:
    1. 将激活函数放到旁路,从shortcut中移除,保证clean information path。
    2. 旁路中的结构从 conv-bn-relu(后激活) 转换为 bn-relu-conv(预激活)。

2.2、关于深度残差网络结构的分析

  • 原始残差单元的数学表示,符号意义不做赘述。

  • 假设h(xl)=xlh(x_l) = x_lh(xl​)=xl​(恒等映射),f(yl)=ylf(y_l) = y_lf(yl​)=yl​(激活函数也是一个恒等映射)。

  • 循环套用xl+2=xl+1+F(xl+1,Wl+1)=xl+F(xl,Wl)+F(xl+1,Wl+1)x_{l+2} = x_{l+1} + F(x_{l+1}, W_{l+1}) = x_l + F(x_l, W_l) + F(x_{l+1}, W_{l+1})xl+2​=xl+1​+F(xl+1​,Wl+1​)=xl​+F(xl​,Wl​)+F(xl+1​,Wl+1​),可以得到下式:

  • 按照链式法则求导:

  • 公式说明:

    1. ϵ\epsilonϵ是loss函数值。
    2. 根据链式求导法则,可以求出梯度,如上式所示。
    3. 梯度∂ϵ∂xl\frac{\partial \epsilon}{\partial x_l}∂xl​∂ϵ​可以拆分成两部分:对于第LLL层的梯度,∂ϵ∂xL\frac{\partial \epsilon}{\partial x_L}∂xL​∂ϵ​;以及每一层卷积层所拟合的残差函数对应的梯度,∂ϵ∂xL∂∂xl∑i=lL−1F(xi,Wi)\frac{\partial \epsilon}{\partial x_L} \frac{\partial}{\partial x_l} \sum_{i=l}^{L-1}F(x_i, W_i)∂xL​∂ϵ​∂xl​∂​∑i=lL−1​F(xi​,Wi​)。
    4. 对于普通的没有shortcut连接的网络来说,只存在∂ϵ∂xL∂∂xl∑i=lL−1F(xi,Wi)\frac{\partial \epsilon}{\partial x_L} \frac{\partial}{\partial x_l} \sum_{i=l}^{L-1}F(x_i, W_i)∂xL​∂ϵ​∂xl​∂​∑i=lL−1​F(xi​,Wi​)这一项,而对于ResNet来说,则额外引入了∂ϵ∂xL\frac{\partial \epsilon}{\partial x_L}∂xL​∂ϵ​。∂ϵ∂xL\frac{\partial \epsilon}{\partial x_L}∂xL​∂ϵ​的存在确保了较深层网络的梯度可以传递到较浅层网络去。
    5. 其实另外还有一点,引入了shortcut还减少了梯度消散的可能性。因为除非∂ϵ∂xL∂∂xl∑i=lL−1F(xi,Wi)\frac{\partial \epsilon}{\partial x_L} \frac{\partial}{\partial x_l} \sum_{i=l}^{L-1}F(x_i, W_i)∂xL​∂ϵ​∂xl​∂​∑i=lL−1​F(xi​,Wi​)总是等于-1,梯度才会为0,然而残差函数不太可能全部为-1。
  • 作者还给出了一个反例,说明为何要选择恒等映射。这里就直接贴图了,细节请参考论文。
  • 大致意思是:如果这个λi&gt;1\lambda_i &gt; 1λi​>1,随着梯度传播会以指数级数增长;如果λi&lt;1\lambda_i &lt; 1λi​<1,随着梯度传播会以指数级数衰减。只有在λi=1\lambda_i = 1λi​=1,即恒等映射(identity mapping)的情况下,梯度才可以较好的保持,避免梯度消失和梯度爆炸。

2.3、实验

2.3.1、验证恒等映射的有效性

  • 作者使用下面的这些结构分别进行了实验,最后发现恒等映射的结果最好,实验结果见table1。

2.3.2、验证预激活的有效性

  • 预激活结构和后激活对比实验,从实验结果可以看出预激活的效果是最好的。

2.3.3、在一些benchmark数据集上的效果

  • CIFAR-10和CIFAR-100

  • imagenet 2012

3、参考资料

  1. 原文
  2. 译文
  3. https://zhuanlan.zhihu.com/p/33486357

论文笔记:ResNet v2相关推荐

  1. ResNet论文笔记及Pytorch代码解析

    注:个人学习记录 感谢B站up主"同济子豪兄"的精彩讲解,参考视频的记录 [精读AI论文]ResNet深度残差网络_哔哩哔哩_bilibili 算法的意义(大概介绍) CV史上的技 ...

  2. 论文笔记:ShuffleNet v2

    ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design ShuffleNet v2 1.四个问题 要解决什么 ...

  3. 论文笔记:再看ResNet——ResNet典型网络结构

    前言 第一次看ResNet论文的时候,由于刚接触深度学习不久,对ResNet的理解仅仅停留在论文中阐述的一些基本思想.加上当时实验室的硬件条件很有限,用的模型基本上以AlexNet和VGG为主,并没有 ...

  4. 论文笔记 | 谷歌 Soft Prompt Learning ,Prefix-Tuning的 -> soft promt -> p tuning v2

    论文笔记 | 谷歌 Soft Prompt Learning ptuning -> Prefix-Tuning -> soft promt -> p tuning v2 " ...

  5. ConvNeXt V2 论文笔记

    ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders(2023.1.2-v1) 链接:   paper     ...

  6. ResNet改进原理介绍论文笔记

    ResNet改进原理介绍论文笔记 Identity Mappings in Deep Residual Networks Abstract 深度剩余网络是一系列极深的体系结构,显示出令人信服的准确性和 ...

  7. unet论文_图像分割之RefineNet 论文笔记

    RefineNet: Multi-Path Refinement Networks forHigh-Resolution Semantic Segmentation (2017) 论文笔记 文章的创新 ...

  8. 论文笔记【A Comprehensive Study of Deep Video Action Recognition】

    论文链接:A Comprehensive Study of Deep Video Action Recognition 目录 A Comprehensive Study of Deep Video A ...

  9. Procedural Noise Adversarial Examples for Black-Box Attacks on Deep Neural Networks论文笔记

    Procedural Noise Adversarial Examples for Black-Box Attacks on Deep Neural Networks论文笔记 0. 概述 如今一些深度 ...

最新文章

  1. iOS 图片处理-利用GPUImage 磨皮和美白图片
  2. java对象转为json字符串
  3. 中国联通沈阳互联网数据中心
  4. [原创]基于Extjs的开源控件库 - http://extaspnet.codeplex.com/
  5. linux内核色彩管理,如何在Linux的色彩管理中获得标准结果
  6. aix 查看目前java进程_问一个 AIX 的命令 ps -ef|grep java
  7. 网络公开课资源 ——关注CS/AI/Math
  8. Vue实现仿音乐播放器6-实现新歌速递与swiper轮播图切换
  9. PHP框架 one 1.6.0 发布
  10. C语言实现中国象棋(Qt实现界面,源码下载,详细注释,易移植)
  11. NYOJ -123 士兵杀敌(四)
  12. 当面试官问我————为什么String是final的?
  13. pytorch常见错误(持续更新)
  14. 变异检测VarScan软件使用说明
  15. Oracle解决锁表语句与批量生成解锁语句
  16. Linux-vim常见命令
  17. 电影《功夫熊猫3》中的管理知识
  18. table固定表头、固定列
  19. 项目管理-PMP-第4章 项目范围管理
  20. 第十三届中国生物特征识别大会(CCBR2018)征文通知

热门文章

  1. android studio放置在函数上面看_Android中用Kotlin协程和Retrofit进行网络请求和取消请求...
  2. gpg加密命令 linux_加密方案 GNUPG amp; Yubikey
  3. php excel cpu高,phpexcel读文件的时候cpu99%
  4. opencv 正脸和侧脸检测
  5. 5.字符串:各种奇葩的内置方法/格式化
  6. 【C++】40. std::array与int a[]方式创建数组的区别
  7. Java 自动装箱性能
  8. KMeans聚类算法Hadoop实现
  9. 深度学习(十六)基于2-channel network的图片相似度判别-CVPR 2015
  10. 光流法 Optical Flow