论文学习:Deep residual learning for image recognition

目录

  • I. Overview
  • II. Degradation
  • III. Solution & Deep residual learning
  • IV. Implementation & Shortcut connections

Home page
https://github.com/KaimingHe/deep-residual-networks

TensorFlow实现:
https://github.com/tensorpack/tensorpack/tree/master/examples/ResNet

事实上TensorFlow已经内置了resnet:
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/slim/python/slim/nets/resnet_v1.py

2016 CVPR Best Paper Award ,2018年被引超12900次。

解决的问题:使深度网络更容易训练

To ease the training of networks that are substantially deeper than those used previously.

I. Overview

首先,堆叠更多层,确实让特征提取更加有效

Deep networks naturally integrate low/mid/highlevel features [49] and classifiers in an end-to-end multilayer fashion, and the “levels” of features can be enriched by the number of stacked layers (depth).

但网络太深的主要困难,在于梯度消失或爆炸

An obstacle to answering this question was the notorious problem of vanishing/exploding gradients [14, 1, 8], which hamper convergence from the beginning.

前人的加速方法主要是标准化层和正则初始化

This problem, however, has been largely addressed by normalized initialization [23, 8, 36, 12] and intermediate normalization layers [16], which enable networks with tens of layers to start converging for stochastic gradient descent (SGD) with backpropagation [22].

具体为什么标准化层可以加快训练,参考这篇博客及其相关论文。

当网络更深时,一个新的问题出现了。我们称之为 Degradation

如图,在准确率基本饱和时,深层网络的训练误差比浅层网络还高。
实验证明,随着网络加深,这种退化越来越剧烈

这是因为过拟合吗?
如果是过拟合,那么训练误差不应该随网络加深而上升(过拟合时训练误差应该很低)。

我们继续研究这个问题。

II. Degradation

我们先训练好一个 shallower architecture ,其能输出理想的结果。
然后,我们复制该 shallower architecture ,再加上一层或多层网络,得到一个 deeper model ,如图:

我们再训练 deeper model 。
理想情况下, added layers 只需要简单地实现 identity mapping 功能,就可以让训练误差不下降,甚至还有可能上升。

然而实验证实,deeper model 要么耗时过长,要么效果不如预期
这是深度网络退化问题的一个实验说明

III. Solution & Deep residual learning

为了解决退化问题,我们引入了 deep residual learning 。其根本思想是:

Instead of hoping each few stacked layers directly fit a desired underlying mapping, we explicitly let these layers fit a residual mapping.

比如,假设原映射是 \(\mathscr H(\mathrm x)\) ,那么我们希望非线性层真正学习的映射就是:
\[
\mathscr F(\mathrm x) := \mathscr H(\mathrm x) - \mathscr x
\]

回到上一节的例子。
我们希望附加层能学到恒等映射,由于该层是非线性层,训练起来依然非常困难
但是,如果我们学习的是残差映射,即全零的残差,显然容易多了

思想类似于 SVM ,但是你怎么想不到!!!

IV. Implementation & Shortcut connections

思想有了,具体怎么实现呢?
忍不住了:何大神太牛逼了!!!!

回到刚刚的例子。假设:

  1. added layers 的目标映射是 \(\mathscr H\) ;
  2. 原 shallower architecture 的输出,是 \(\mathscr H\) 的输入 \(\mathrm x\) 。

为了迫使前面的非线性层学习残差,我们假设网络输出就是残差的情况。
此时,我们应该在计算损失之前,让网络的输出 \(\mathscr H(\mathrm x)\) 与原始输入 \(\mathrm x\) 求和。
因此网络如下:

如此连接是可导的,因此可以应用反向传播算法。

当然,为什么学“全0”更简单,没有详细的理论分析,而需要大量的实验证明。

右图实验结果表明,左图的退化问题得到了有效解决。

原文地址:https://www.cnblogs.com/RyanXing/p/9740296.html

时间: 2024-10-09 02:35:05

论文学习:Deep residual learning for image recognition的相关文章

Deep Residual Learning for Image Recognition (ResNet)

目录 主要内容 代码 He K, Zhang X, Ren S, et al. Deep Residual Learning for Image Recognition[C]. computer vision and pattern recognition, 2016: 770-778. @article{he2016deep, title={Deep Residual Learning for Image Recognition}, author={He, Kaiming and Zhang,

Deep Residual Learning for Image Recognition(MSRA-深度残差学习)

ABSTRACT: 1.Deeper neural networks are more difficult to train. 2.We present a residual learning framework to ease the training of networks that are substantially deeper than those used previously. 3.We explicitly reformulate the layers as learning r

Deep Residual Learning for Image Recognition

Kaiming HeXiangyu ZhangShaoqing RenMicrosoft Research {kahe, v-xiangz, v-shren, jiansun}@microsoft.com Abstract Deeper neural networks are more difficult to train. Wepresent a residual learning framework to ease the trainingof networks that are subst

Paper | Deep Residual Learning for Image Recognition

目录 1. 故事 2. 残差学习网络 2.1 残差块 2.2 ResNet 2.3 细节 3. 实验 3.1 短连接网络与plain网络 3.2 Projection解决短连接维度不匹配问题 3.3 更深的bottleneck结构 ResNet的意义已经不需要我在这里赘述.该文发表在2016 CVPR,至今(2019.10)已有3万+引用.由于ResNet已经成为大多数论文的baseline,因此我们着重看其训练细节.测试细节以及bottleneck等思想. 核心: We explicitly

Deep Residual Learning for Image Recognition(残差网络)

深度在神经网络中有及其重要的作用,但越深的网络越难训练. 随着深度的增加,从训练一开始,梯度消失或梯度爆炸就会阻止收敛,normalized initialization和intermediate normalization能够解决这个问题.但依旧会出现degradation problem:随着深度的增加,准确率会达到饱和,再持续增加深度则会导致准确率下降.这个问题不是由于过拟合造成的,因为训练误差也会随着深度增加而增大. 假定输入是x,期望输出是H(x),如果我们直接把输入x传到输出作为初始

ResNet——Deep Residual Learning for Image Recognition

1. 摘要 更深的神经网络通常更难训练,作者提出了一个残差学习的框架,使得比过去深许多的的网络训连起来也很容易. 在 ImageNet 数据集上,作者设计的网络达到了 152 层,是 VGG-19 的 8 倍,但却有着更低的复杂性.通过集成学习模型最终取得了 3.57% 的错误率,获得了 ILSVRC 2015 比赛的第一名. 表示的深度对于许多视觉识别任务而言至关重要,仅仅由于特别深的表示,作者在 COCO 物体检测数据集上获得了 28% 的相对改进. 2. 介绍 深度神经网络通常集成了低层.

Deep Residual Learning

最近在做一个分类的任务,输入为3通道车型图片,输出要求将这些图片对车型进行分类,最后分类类别总共是30个. 开始是试用了实验室师姐的方法采用了VGGNet的模型对车型进行分类,据之前得实验结果是训练后最高能达到92%的正确率,在采用了ImageNet训练过的DataLayer之后,可以达到97%的正确率,由于我没有进行长时间的运行测试,运行了十几个小时最高达到了92%的样子. 后来是尝试使用Deep Residual Learning的ImageNet(以后简称ResNet)的实现方法,十几个小

论文笔记 Deep Patch Learning for Weakly Supervised Object Classi cation and Discovery

Background 1) "Patch-level image representation"的优势 "Patch-level image representation is very important for object classification and detection, since it is robust to spatial transformation, scale variation, and cluttered background" &

深度强化学习Deep Reinforcement Learning 学习过程流水账

2016/10/23 这篇文章和那篇三维重建的流水账一样,用来记录一些关键资料来源和发牢骚. Python怎么学上手快,够用? 神经网络怎么上手? 强化学习怎么上手? 目标驱动,先去看用Python写的强化学习的代码,再去看一些实现各种神经网络的Python代码.再看两种融合的代码. 熟悉工作环境和工作所用工具,比如Tensorflow之类的.