(ResNet)Deep Residual Learning for Image Recognition

本文介绍了ResNet模型,解决深度神经网络训练中的退化问题,通过残差学习框架简化非常深的网络优化。ResNet50包含两个基本块:Conv Block和Identity Block,用于构建深层网络。实验表明,残差网络在增加深度时能提高准确率,优于相应的浅层网络,如在ImageNet和CIFAR-10数据集上取得了出色成绩。
摘要由CSDN通过智能技术生成

论文地址:https://arxiv.org/abs/1512.03385

主要思想

随着卷积神经网络加深,训练越来越难,还伴随有梯度消失和梯度爆炸。通过shortcut解决此问题
将靠前若干层的某一层数据输出直接跳过多层引入到后面数据层的输入部分。
意味着后面的特征层的内容会有一部分由其前面的某一层线性贡献。
其结构如下:在这里插入图片描述

ResNet50模型

ResNet50有两个基本的块,分别名为Conv Block和Identity Block,其中Conv Block输入和输出的维度是不一样的,所以不能连续串联,它的作用是改变网络的维度;Identity Block输入维度和输出维度相同,可以串联,用于加深网络的。还有一个瓶颈结构:卷积前用11卷积降维,然后卷积,卷积后用11卷积升维。
Conv Block的结构如下:
在这里插入图片描述
Identity Block的结构如下:
在这里插入图片描述

摘要

  越深的神经网络训练起来越困难。本文展示了一种残差学习框架,能够简化使那些非常深的网络的训练,该框架使得层能根据其输入来学习残差函数而非原始函数(unreferenced functions)。本文提供了全面的依据表明,这些残差网络的优化更简单,而且能由更深的层来获得更高的准确率。本文在ImageNet数据集上使用了一个152层深的网络来评估我们的残差网络,虽然它相当于8倍深的VGG网络,但是在本文的框架中仍然只具有很低的复杂度。这些残差网络的一个组合模型(ensemble)在ImageNet测试集上的错误率仅为 3.57%。这个结果在2015年的ILSVRC分类任务上获得了第一名的成绩。我们在CIFAR-10上对100层和1000层的残差网络也进行了分析。
  表达的深度在很多视觉识别任务中具有非常核心的重要性。仅仅由于我们相当深的表达,便在COCO目标检测数据集上获得了 28% 的相对提升。 深度残差网络是我们参加ILSVRC & COCO 2015 竞赛上所使用模型的基础,并且我们在ImageNet检测、ImageNet定位、COCO检测以及COCO分割上均获得了第一名的成绩。

1. 介绍

  深度卷积神经网络在图像分类领域取得了一系列的突破 。 深度网络很好的将一个端到端的多层模型中的低/中/高级特征以及分类器整合起来,特征的等级可以通过所堆叠层的数量(深度)来丰富。最近有结果显示,模型的深度发挥着至关重要的作用,这样导致了ImageNet竞赛的参赛模型都趋向于“非常深”——16 层 到30层 。许多其它的视觉识别任务的都得益于非常深的模型。
  在深度的重要性的驱使下,出现了一个新的问题:训练一个更好的网络是否和堆叠更多的层一样简单呢?解决这一问题的障碍便是困扰人们很久的梯度消失/梯度爆炸,这从一开始便阻碍了模型的收敛。归一初始化(normalized initialization)和中间归一化(intermediate normalization)在很大程度上解决了这一问题,它使得数十层的网络在反向传播的随机梯度下降(SGD)上能够收敛。
  当深层网络能够收敛时,一个退化问题又出现了:随着网络深度的增加,准确率达到饱和(不足为奇)然后迅速退化。意外的是,这种退化并不是由过拟合造成的,并且在一个合理的深度模型中增加更多的层却导致了更高的错误率,我们的实验也证明了这点。Fig.1展示了一个典型的例子。
Fig.1 20层和56层的“plain”网络在CIFAR-10上的训练错误率(左)和测试错误率(右)。越深的网络在训练和测试上反而错误率高。在这里插入图片描述
  退化的出现(训练准确率)表明了并非所有的系统都是很容易优化的。让我们来比较一个浅层的框架和它的深层版本。对于更深的模型,这有一种通过构建的解决方案:恒等映射(identity mapping)来构建增加的层,而其它层直接从浅层模型中复制而来。这个构建的解决方案也表明了,一个更深的模型不应当产生比它的浅层版本更高的训练错误率。实验表明,我们目前无法找到一个与这种构建的解决方案相当或者更好的方案(或者说无法在可行的时间内实现)。
  本文中,我们提出了一种深度残差学习框架来解决这个退化问题。我们明确的让这些层来拟合残差映射(residual mapping),而不是让每一个堆叠的层直接来拟合所需的底层映射(desired underlying mapping)。假设所需的底层映射为 H ( x ) H(x) H(x),我们让堆叠的非线性层来拟合另一个映射: F ( x ) : = H ( x ) − x F(x):=H(x)−x F(x):=H(x)x。 因此原来的映射转化为: F ( x ) + x F(x)+x F(x)+x。我们推断残差映射比原始未参考的映射(unreferenced mapping)更容易优化。在极端的情况下,如果某个恒等映射是最优的,那么将残差变为0 比用非线性层的堆叠来拟合恒等映射更简单。

某一层的输出可以跳过多层直接传递给后面,而不是逐层传递
在这里插入图片描述
  公式 F ( x ) + x F(x)+x F(x)+x 可以通过前馈神经网络的“shortcut连接”来实现(Fig.2)。Shortcut连接就是跳过一个或者多个层。在我们的例子中,shortcut 连接只是简单的执行恒等映射,再将它们的输出和堆叠层的输出叠加在一起(Fig.2)。恒等的shortcut连接并不增加额外的参数和计算复杂度。完整的网络仍然能通过端到端的SGD反向传播进行训练,并且能够简单的通过公共库(例如,Caffe)来实现而无需修改求解器(solvers)。
  我们在ImageNet数据集上进行了综合性的实验来展示这个退化问题并评估了我们提出的方法。本文表明了: 1) 我们极深的残差网络是很容易优化的,但是对应的“plain”网络(仅是堆叠了层)在深度增加时却出现了更高的错误率。 2) 我们的深度残差网络能够轻易的由增加层来提高准确率,并且结果也大大优于以前的网络。
  CIFAR-10数据集上也出现了类似的现象,这表明了我们提出的方法的优化难度和效果并不仅仅是对于一个特定数据集而言的。我们在这个数据集上成功的提出了超过100层的训练模型,并探索了超过1000层的模型。
  在ImageNet分类数据集上,极深的残差网络获得了优异的成绩。我们的152层的残差网络是目前ImageNet尚最深的网络,并且别VGG网络的复杂度还要低。在ImageNet测试集上,我们的组合模型(ensemble)的top-5错误率仅为3.57%,并赢得了ILSVRC 2015分类竞赛的第一名。这个极深的模型在其他识别任务上同样也具有非常好的泛化性能,这让我们在ILSVRC & COCO 2015 竞赛的ImageNet检测、ImageNet定位、COCO检测以及COCO分割上均获得了第一名的成绩。这强有力的证明了残差学习法则的通用性,因此我们将把它应用到其他视觉甚至非视觉问题上。

2. 相关工作

残差表达 在图像识别中,VLAD是残差向量对应于字典进行编码的一种表达形式,Fisher Vector可以看做是VLAD 的一个概率版本。对于图像检索和分类它们都是强力的浅层表达。对于向量量化,残差向量编码比原始向量编码更加有效
  在低级视觉和计算机图形学中,为了求解偏微分方程(PDEs),通常使用Multigrid法将系统重新表达成多尺度的子问题来解决,每一个子问题就是解决粗细尺度之间的残差问题。Multigrid的另外一种方式是分层基预处理,它依赖于代表着两个尺度之间残差向量的变量。实验证明 这些求解器比其他标准求解器的收敛要快得多,却并没有意识到这是该方法的残差特性所致。这些方法表明了一个好的重新表达或者预处理能够简化优化问题。
Shortcut连接
  Shortcut连接已经经过了很长的一段实践和理论研究过程。训练多层感知器(MLPs)的一个早期实践就是添加一个连接输入和输出的线性层。在Szegedy2015Going及Lee2015deeply中,将一些中间层直接与辅助分类器相连接可以解决梯度消失/爆炸问题。文献[39,38,31,47]提出了通过shortcut实现对层响应、梯度和传播误差的方法。在 Szegedy2015Going中,一个inception层由一个shortcut分支和一些更深的分支组合而成。
  与此同时,“highway networks”将shortcut连接与门控函数 结合起来。这些门是数据相关并且是有额外参数的,而我们的恒等shortcuts是无参数的。当一个门的shortcut是“closed”(接近于0)时,highway网络中的层表示非残差函数。相反的,我们的模型总是学习残差函数;我们的恒等shortcuts从不关闭,在学习额外的残差函数时,所有的信息总是通过的。此外,highway网络并不能由增加层的深度(例如, 超过100层)来提高准确率

3.Deep Residual Learning
  • 3.1.Residual Learning
      我们将H(x)看作一个由部分堆叠的层(并不一定是全部的网络)来拟合的底层映射,其中x是这些层的输入。假设多个非线性层能够逼近复杂的函数,这就等价于这些层能够逼近复杂的残差函数,例如, H ( x ) − x H(x)−x H(x)x(假设输入和输出的维度相同)。所以我们明确的让这些层来估计一个残差函数: F ( x ) : = H ( x )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值