ResNet v1

1、四个问题

  1. 要解决什么问题?/ 用了什么办法解决?

    1. 理论上来说,深层网络的效果至少不会比浅层网络差。

      • 对于浅层网络A,深层网络B,假设B的前面部分与A完全相同,后面部分都是恒等映射,这样B至少也会与A性能相同,不会更差。
    2. 在深层网络中存在梯度消失/梯度爆炸(vanishing/exploding gradients)。
      • 归一初始化(normalized initialization)和中间归一化(intermediate normalization)在很大程度上解决了这一问题,它使得数十层的网络在反向传播的随机梯度下降(SGD)上能够收敛。
    3. 训练深层网络时会出现退化(degrdation):随着网络深度的增加,准确率达到饱和(不足为奇)然后迅速退化。
      • 提出深度残差网络来解决这一问题。
      • 这一退化并不是由过拟合导致的,而是网络过深导致难以训练。论文中给出的例子中深层网络的训练和测试误差都比浅层网络的更高,如下图。

  2. 效果如何?

    1. 在ImageNet上进行了相关实验展示了前面提到的退化问题以及评估深度残差网络,结果表明:

      • 极深的残差网络是很容易优化的,但是对应的“plain”网络(仅是堆叠了层)在深度增加时却出现了更高的错误率。
      • 深度残差网络能够轻易的由增加层来提高准确率,并且结果也大大优于以前的网络。
  3. 还存在什么问题?

    1. 论文中实验了一个超过1000层的模型,该1202层的模型的测试结果比110层的模型要差,尽管训练错误率差不多。这很有可能是过拟合导致的,可能还需要更强大的正则化方法比如maxout或者dropout来对网络进行改进。

2、论文概述

2.1、残差单元

We hypothesize that it is easier to optimize the residual mapping than to optimize the original, unreferenced mapping

  • 设计残差单元的初衷:

    • 相比于使用几层网络来拟合一个隐藏的非线性映射,让网络来学习它的残差会更容易一些,即训练残差比原始函数更容易
    • 极端情况下,如果恒等映射(identity mapping)更理想,那么将残差网络变为0比堆叠多个非线性层来拟合恒等映射更容易。

2.2、shortcut连接

  • 残差块通过shortcut连接实现。
  • 恒等shortcuts(identity shortcuts):要求两个输入的维度相同。

  • 映射shortcuts(projection shortcuts):如果两个输入的维度不同,可以给shortcut连接加上一个线性映射WsW_sWs​。

  • shortcuts实现的三种选项:

    1. 对增加的维度使用0填充,所有的shortcuts是无参数的 。
    2. 对增加的维度使用projection shortcuts,其它使用identity shortcuts 。
    3. 所有的都采用projection shortcuts 。
  • 三种选项相计较:
    • 2略好于1,可以认为是1中填充的0并没有进行残差学习。
    • 3略好于2,可以将其归结于更多的projection shortcuts引入了更多的参数。
    • 1、2、3几个模型的差距很小,说明了projection shortcuts对于解决退化(degradation)问题不是必须得。
    • 为了减少复杂度和模型尺寸,不采用模型3,而是选择模型2。

2.3、瓶颈结构

  • 第一个1∗11*11∗1卷积负责减小维度,让中间的3∗33*33∗3卷积获得更少的通道数, 第二个1∗11*11∗1卷积负责增加维度。整个架构类似瓶颈,可以减少计算复杂度。

2.4、网络结构

2.5、训练细节

  • 图像增强:从原始图像或水平翻转图像中随机采样一个224∗224224 * 224224∗224的crop。
  • 图像预处理:减去均值。
  • 卷积结构:每个卷积层后,都接一个batch normalization(BN)。
  • 超参数:batch size为256;学习率为0.1,当测试集上的错误率平稳后就将学习率除以10;采用SGD,权值衰减设置为0.0001,动量为0.9;整个模型迭代60∗10460*10^460∗104次;
  • 测试时,融合多个模型的结果,分别计算多尺度图片的结果,对结果的评分取均值。(调整图像的大小使它的短边长度分别为 {224,256,384,480,640}\{224,256,384,480,640\}{224,256,384,480,640})

3、参考资料

  1. 原论文地址
  2. 一篇还不错的译文
  3. 关于ResNet的总结

论文笔记:残差神经网络(ResNet v1)相关推荐

  1. 深度学习——残差神经网络ResNet在分别在Keras和tensorflow框架下的应用案例

    原文链接:https://blog.csdn.net/loveliuzz/article/details/79117397 一.残差神经网络--ResNet的综述 深度学习网络的深度对最后的分类和识别 ...

  2. 【Pytorch(七)】基于 PyTorch 实现残差神经网络 ResNet

    基于 PyTorch 实现残差神经网络 ResNet 文章目录 基于 PyTorch 实现残差神经网络 ResNet 0. 概述 1. 数据集介绍 1.1 数据集准备 1.2 分析分类难度:CIFAR ...

  3. 深度学习笔记(三十五)残差神经网络ResNet

    训练深层神经网络时,如果深度特别大,其实是很难训练下去的,因为会遇到梯度消失和梯度爆炸的问题.残差网络可以帮助我们更好地训练深层神经网络. 一.残差块 在神经网络的两层中,会执行如下运算过程(主路径) ...

  4. Pytorch实现残差神经网络(ResNet)

    1. 残差块 输入X,经过两次次卷积,一次ReLU,得到F(X),在将X与F(X)相加,在经过一个ReLU,即为最后的结果.残差神经网络就是基于残差块的一个深度神经网络. 2. 代码 这篇博客理论涉及 ...

  5. 残差神经网络Resnet(MNIST数据集tensorflow实现)

    简述: 残差神经网络(ResNet)主要是用于搭建深度的网络结构模型 (一)优势: 与传统的神经网络相比残差神经网络具有更好的深度网络构建能力,能避免因为网络层次过深而造成的梯度弥散和梯度爆炸. (二 ...

  6. 残差神经网络(ResNet)

    残差神经网络的主要贡献是发现了退化现象,并针对退化现象发明了快捷连接(shortcut connection),极大的消除了深度过大的神经网络训练困难问题. 1.神经网络越深准确率越高 假设一个层数较 ...

  7. 残差神经网络 ResNet

    上图为ResNet残差神经网络,目的是为了防止出现过优化的问题 比如上图中,已经达到了最优化的情况下,这时候已经最优状态了,在进行卷积会出现退化现象,所以这时候输出的H(x) = F(x) + x [ ...

  8. 残差神经网络ResNet介绍

    简介 神经网络层数比较高时,就很难被训练,容易出现梯度爆炸.梯度消失等问题.残差网络就是一种跳跃连接的网络,它通过将前面的激活值跳过中间的网络层而直接传到更后面的网络中,来避免梯度爆炸和梯度消失,训练 ...

  9. 论文笔记: 图神经网络 GAT

    摘要: 分享对论文的理解. 原文见 Petar Velickovic, Guillem Cucurull, Arantxa Casanova, Adriana Romero, Pietro Lio, ...

最新文章

  1. android不调用系统发送短信,android之两种方式调用短信发送接口
  2. 计算机考试八页PPT,第八章节授课ppt-江苏省计算机等级考试.ppt
  3. 华为开发者学院 | 卷积神经网络与图像处理,听这一节课就够了
  4. AngularJS ui-router (嵌套路由)
  5. Oracle事务的隔离
  6. 如何配置php的ip地址吗,linux如何配置IP
  7. Redis数据结构之简单动态字符串SDS
  8. python webdriver 等待网页已登录_python基础编程:python+selenium实现163邮箱自动登陆的方法...
  9. Python 的lambda表达式的一些小细节
  10. 这些测试细节,你注意到了吗?
  11. android apk 对应目录,android 如何预置APK到 data 和system/app目录
  12. Java 实现 图片OCR文字识别
  13. 系统设计黄金法则:简单之美
  14. miui怎么用第三方图标包_不打广告的小米APP,比起MIUI桌面还要更好用
  15. CSDN写文章Markdown个人笔记
  16. RHEL4-ASU2-i386上安装oracle9204
  17. zData与持续优化 云和恩墨以创新获天安人寿供应商突出贡献奖
  18. android加载efi分区,玩转Android-x86(安装启动、个性定制、高级运用)-8.5更新2楼分区挂载代码支持多硬盘...
  19. JavaMail 之 搜索邮件
  20. Twitter登录Callback URL not approved for this client application错误记录

热门文章

  1. HTML语言教程(完整版)
  2. 关于技能与个人的发展总结
  3. struts的框架介绍
  4. 温度补偿 matlab,基于传感器温度补偿方法的双指数函数模型的温度补偿算法设计...
  5. LeetCode:1287. Element Appearing More Than 25% In Sorted Array - Python
  6. 数据结构之二分查找OJ(上)
  7. Node【初识Node】
  8. Mysql复制表两种方式(复制表结构、复制表结构和数据、复制表中的部分数据、复制表中的部分数据并起别名)
  9. 计算机主板电杆,嵌入式主板的常见故障解决办法
  10. AR单片机编程软件的菜单栏功能及用法