其实ResNet这篇论文看了很多次了,也是近几年最火的算法模型之一,一直没整理出来(其实不是要到用可能也不会整理吧,懒字头上一把刀啊,主要是是为了将resnet作为encoder嵌入到unet架构中,自己复现模型然后在数据集上进行测试所以才决定进行整理),今天把它按照理解尽可能详细的解释清楚跟大家一起分享一下,哪里没有说明白或者说错的,欢迎指出留言。

深度残差神经网络(Residual Networks)是2015年(12月在arxiv.org可下载)何凯明大神提出来的一个神经网络模型,获得了2015年多个竞赛数据集的第一。模型被提出主要是为了解决如下两个主要问题:

  • 减缓深度学习模型难以训练的问题(e.g. 超过100层的神经网络)
  • 模型退化(degradation problem)问题,这个之后会详细解释什么是退化(表示看了论文很迷茫,还是看了不少别人的博客才恍然大悟)

这里还有一点需要被注意的是,深度残差网络是基于这么一个假设:越深的网络理应具备更好的学习能力。这个后来也确实被证明层数的增加确实带来不一样的效果,不论以什么样的形式叠加和计算(如AlexNet、GoogLeNet、DenseNet等等)。

一、简要介绍

虽然假设越深的网络应该具备更好的表征学习能力,但是接踵而来的问题也很明显,如梯度消失和梯度爆炸(vanishing/exploding gradients)会阻碍收敛的情况。但是归一化(normalized initialization & batch normalization)都极大程度的缓解了梯度所带来的问题。相反的,深度学习网络所面对的不是收敛不收敛的问题,反而是随着层数的增加所面临的网络退化问题,原文如是说:with the network depth increasing, accuracy gets saturated and then degrades rapidly。需要注意的是网络的退化不是因为过拟合等导致的。

那什么是“退化”呢?这里主要分成两块来详细进行解释:

①随着网络训练层数的增加,退化问题会以正确性达到饱和程度,这是可预见或者说符合预期的。但是何为“可预见”呢?这主要是搭建网络的时候,一般期望足够深的网络是具备相应的学习能力的,以此来保证所创建的模型能足以良好地表征(modelling)数据中所有的特征。那么这个时候就会想,是否额外增加层数会加强网络的学习能力并使其能完全学习到数据中的所有特征。然而根据观察并不是如此,当网络层数的增加(层数增加在准确率饱和区间之后),网络的预测准确率不升反降。当然这个可以认为是过拟合导致的。但是如果不是过拟合导致的原因呢?

②假设现在有一个N层网络,它的训练误差为e1,对于另外一个网络M层网络(M > N),我们的期望是至少该M层网络的表现能力跟N层网络的表现能力是一致的。假设M层网络的前面部分网络是N层网络构成,然后剩下的M-N层网络由恒等映射网络构成,也就是说剩下的这些网络的每一层的输入和输出保持一致,没有任何多余的因素加入,这么做的原因是希望后续的网络能很好的学习前N层网络学习的结果,如果存在这么一个M层网络,就希望它具备更好的表征能力。但是事实却不是如此,上图来自于原论文,可以看出深层网络并没有带来更好的结果。这就是所谓的网络退化问题,也是ResNet提出来最主要要解决的问题。那ResNet是如何解决退化问题的呢?

二、残差模块

残差模块就是ResNet提出来解决退化问题的,其主要结构如下图所示。也就是说经过叠加的基层神经网络之后,原本前面的输出会和这几层叠加神经网络输出叠加(论文中称之为恒等映射)作为下一个叠加模块的输入。假设放到卷积神经网络中,它的表现形式就是(output + ((conv + bn + relu) + (conv + bn))) + relu。这么做有一个优势就是恒等映射并不会引入新的训练参数或者增加额外的计算开销。

除此之外,残差神经网络还具备如下两个有点:①比没有引入残差模块的普通叠加网络来说具备更好的收敛及更易于优化,②除此之外,对比一般残差网络能极大地提升训练和预测地准确度。下图是ResNet-34的网络结构图:

这里有些朋友对Highway Networks15年5月)可能有了解觉得ResNet跟其是一个类型的网络,甚至有说ResNet就是变种的highway networks(这个跟论文的发布前后有关系,因为highway networks比resnet早几个月诞生,其实有点撞车的意味)。当然何凯明大神在论文中有指出他们跟highway networks的差别,主要体现在下两方面:

  • highway network提出的short-cut connection with gating function是与数据独立开来的,并且有学习参数,而ResNet的identity mapping(恒等映射)是没有任何参数的;
  • highway network没有提到任何关于深度网络(特别是100层以上的网络)所体现出来的性能和在特定数据上训练的结果(这点ResNet确实做得更好,其实深度学习领域相关的算法往往是先有实践后有理论,所以实验的论证是非常有必要的,ResNet在这上面做的实验是很充足,这点也反映在论文上面);

ResNet论文笔记的更多相关文章

  1. 转载:resNet论文笔记

    <Deep Residual Learning for Image Recognition>是2016年 kaiming大神CVPR的最佳论文 原文:http://m.blog.csdn. ...

  2. 论文笔记:CNN经典结构1(AlexNet,ZFNet,OverFeat,VGG,GoogleNet,ResNet)

    前言 本文主要介绍2012-2015年的一些经典CNN结构,从AlexNet,ZFNet,OverFeat到VGG,GoogleNetv1-v4,ResNetv1-v2. 在论文笔记:CNN经典结构2 ...

  3. 论文笔记:CNN经典结构2(WideResNet,FractalNet,DenseNet,ResNeXt,DPN,SENet)

    前言 在论文笔记:CNN经典结构1中主要讲了2012-2015年的一些经典CNN结构.本文主要讲解2016-2017年的一些经典CNN结构. CIFAR和SVHN上,DenseNet-BC优于ResN ...

  4. ResNet学习笔记

    ResNet学习笔记 前言 这篇文章实在看完很多博客之后写的,需要读者至少拥有一定的CNN知识,当然我也不知道需要读者有什么水平,所以可能对一些很入门的基本的术语进行部分的解释,也有可能很多复杂的术语 ...

  5. Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)

    Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文, ...

  6. 论文笔记之:Visual Tracking with Fully Convolutional Networks

    论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015  CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...

  7. Deep Learning论文笔记之(八)Deep Learning最新综述

    Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...

  8. Twitter 新一代流处理利器——Heron 论文笔记之Heron架构

    Twitter 新一代流处理利器--Heron 论文笔记之Heron架构 标签(空格分隔): Streaming-process realtime-process Heron Architecture ...

  9. Deep Learning论文笔记之(六)Multi-Stage多级架构分析

    Deep Learning论文笔记之(六)Multi-Stage多级架构分析 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些 ...

随机推荐

  1. python argparse (更新中)

    action='store_true' 例如 parser.add_argument("--generate_text_embedding", action='store_true ...

  2. 图解算法——链表中倒数第k个节点

    题目来源: 剑指 Offer 22. 链表中倒数第k个节点 leetCode 题目描述: 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个 ...

  3. 831A- Unimodal Array

    A. Unimodal Array time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  4. MDN 文档高级操作进阶教程

    MDN 文档高级操作进阶教程 MDN 文档, 如何优雅的使用 MDN 文档上的富文本编辑器 pre & 语法高亮器 code & note box source code 上传附件 i ...

  5. node cli & emoji

    node cli & emoji cli $ yarn add node-emoji $ npm i node-emoji https://github.com/omnidan/node-em ...

  6. Raspberry Pi & GPIO

    Raspberry Pi & GPIO pinout === pin out / p in out pi@raspberrypi:~ $ pinout ,------------------- ...

  7. Win/Mac 键位映射 & 在 Mac 上更改“键盘”偏好设置

    Win/Mac 键位映射 & 在 Mac 上更改"键盘"偏好设置 PC键盘 在Mac下Command/Option键切换 https://support.apple.com ...

  8. npm & cmd & bash & bin

    npm & cmd & bash & bin bin node_modules & nested npm publish & all src files npm ...

  9. PBN进场程序保护区图例分析

      疫情仍在持续,除了待家里不给祖国添乱之外,过去没有时间去完成的事情,现在可以静下心来认真面对,充实过好每一天. 今天想跟大家聊一下ICAO 8168第二卷PBN进场程序的图例. 就是下面这张图: ...

  10. JDK源码阅读-DirectByteBuffer

    本文转载自JDK源码阅读-DirectByteBuffer 导语 在文章JDK源码阅读-ByteBuffer中,我们学习了ByteBuffer的设计.但是他是一个抽象类,真正的实现分为两类:HeapB ...