ResNet——Deep Residual Learning for Image Recognition
1. 摘要
更深的神经网络通常更难训练,作者提出了一个残差学习的框架,使得比过去深许多的的网络训连起来也很容易。
在 ImageNet 数据集上,作者设计的网络达到了 152 层,是 VGG-19 的 8 倍,但却有着更低的复杂性。通过集成学习模型最终取得了 3.57% 的错误率,获得了 ILSVRC 2015 比赛的第一名。
表示的深度对于许多视觉识别任务而言至关重要,仅仅由于特别深的表示,作者在 COCO 物体检测数据集上获得了 28% 的相对改进。
2. 介绍
深度神经网络通常集成了低层、中层和高层特征,特征的 “层级” 可以通过叠加网络层(深度)来丰富。过去几年,图像分类以及其它视觉识别领域的成功都是通过设计更深的模型来获得的。
但是,这就产生了一个问题:学习更好的网络就像堆叠更多层一样简单吗?其中一个障碍就是众人皆知的梯度消失/爆炸问题,这会阻碍网络的收敛。但是,这个问题已经被 Xavier 等参数初始化方法以及 BN 解决了。
当深层网络的收敛不成问题时,一个退化问题出现了:随着网络深度的增加,准确率达到饱和然后迅速降低。这并不是由于过拟合导致的,而且增加更多层的话,就会有更高的训练错误率。
针对一个浅的网络结构和一个相应的增添更多层后的深的网络结构,如果新增添的层是一个恒等映射而前面的网络一样,那么这个深的网络应该不会产生比浅的网络更高的错误率。然而实验表明,当前的优化方法却不能让深的网络取得和浅的网络一样好或者更好的结果。
因此,在文章中,作者提出了一个深度残差学习的框架。我们让叠加的非线性网络层学习这样一个映射 \(F(x): =H(x)-x\),而不是直接学习一个底层映射 \(H(x)\)。原始的映射则可以表示为 \(F(x) +x\),作者假设这个残差映射相对于原始无参考的映射更容易优化。在极端情况下,如果恒等映射是最优的,那么相对于让叠加的非线性网络层学习一个恒等映射,让残差映射变为零是比较容易的。
作者通过跳跃连接来实现残差学习,这个跳跃连接就是一个简单的恒等映射,而且不引入额外的参数和计算复杂性。
实验结果表明,引入残差学习后,深层的网络更容易优化并且不会产生更高的训练错误率,并且层数增加后准确率也会有所提升。此外,在不同的数据集和不同的任务上残差学习都展现了其优越性,说明这个方法是通用的可扩展的。
3. 残差学习
我们规定几个叠加的非线性层学习到了这样的一个映射,\(x \to H(x)\)。如果假设多个非线性层可以渐进逼近复杂函数 \(H(x)\),那么它们也可以渐进逼近残差函数 \(H(x)-x\)(假设输入输出维度相同)。
尽管直接学习底层映射和先学习一个残差映射最终形式上都是一样的,但学习的难易程度却可能不同。深层网络的退化现象说明直接让叠加的非线性层学习一个恒等映射可能是非常困难的,但如果是残差学习的话,我们直接让所有层的参数趋向于零就可以学习一个恒等映射。
作者针对每几个叠加的网络层采用残差学习,一个残差块定义为:
上式第一项是待学习的残差映射,第二项是输入。针对两层网络的情况,我们有:
其中 \(\sigma\) 代表 ReLU,为了简化省略了偏置参数。通过引入跳跃连接来实现一个逐元素的相加操作 \(F+x\),之后再经过一个非线性激活函数。上述形式没有引入额外的参数和计算复杂性,这在实际中不仅非常有吸引力而且很重要,这样作者就可以直接对未引入/引入残差学习的网络进行横向比较。
如果 \(x\) 和 \(F\) 的维度不一样,那么我们对跳跃连接进行一个线性投影来匹配维度:
尽管维度相同的时候我们也可以引入一个方阵,但实验表明,恒等映射足够解决退化问题并且非常经济实用,因此作者只在维度匹配的时候才引入投影。
需要注意的是,本文中学习的 \(F\) 涉及到两层或三层网络,当然更多层也是可以的。但是,如果只有一层的话,就变成了线性的:
作者没有发现这种情况的优点。
4. 网络架构
普通的网络结构主要是受到 VGG 网络的启发,其中,卷积层大部分都是 3×3 的卷积核,并且:1)特征图大小相同时,卷积核的数量也相同;2)特征图大小减半时,卷积核的数量变为两倍。下采样通过步长为 2 的卷积来实现,最后是一个平均池化层和一个有 1000 个神经元的全连接层。其网络结构如下图中间部分所示。
在普通的网络结构插入跳跃连接后,就得到了相应的残差网络。其中,相同维度的特征图直接利用恒等映射,如下图右边实线箭头所示。如果特征维度不同,那么有两种考虑:A)在恒等映射时对特征图填充额外的 0 来增加维度,这种情况没有额外参数;B)利用投影进行维度匹配(利用 1×1 的卷积),如下图右边虚线箭头所示。这两种情况下,特征维度大小不一样,步长都为 2。
5. 实验结果
5.1. ImageNet 分类
可以看到,在普通的网络结构下,34 层的网络整个训练过程中的训练误差都要比 18 层的网络要高,而在残差网络结构下,更深的网络则具有更小的误差。
5.2. Identity vs. Projection Shortcuts
其中, A 代表维度不同时我们采用填充零的方式来增加维度,这没有引入额外的参数;B 代表维度不同时我们采用引入投影矩阵的方式来增加维度,而维度相同时采用恒等映射;C 代表维所有的跳跃连接都引入投影矩阵。
可以看到,B 稍微比 A 好,C 略好于 B,这可能是引入了很多的额外参数导致的。但是 A/B/C 之间的差别很小,说明投影矩阵对于解决退化问题不是必要的。为了减少空间时间复杂度和模型大小,恒等映射是最佳的选择。
5.3. 瓶颈结构
在设计更深的网络的时候,考虑到可以接受的训练时间,作者对之前的残差块进行了改进。通过引入三层分别为 1×1, 3×3, 和 1×1 的卷积,先对通道数进行降低,最后再对通道数进行恢复,从而让中间的 3×3 卷积有较小的维度。
通过替换 ResNet-34 中每个两层的块为上述三层的瓶颈结构,我们得到了一个 50 层的 ResNet。同时,引入更多瓶颈块的话,我们分别可以得到 101 层和 152 层的 ResNet。详细结构如下图所示:
这些单个模型在 ImageNet 数据集上的错误率对比情况如下所示。
集成模型在 ImageNet 数据集上的错误率对比情况如下所示。
5.4. CIFAR-10 数据集上的分析
结果表明,残差网络的激活值通常更接近于零,而且网络越深其激活值越小。
获取更多精彩,请关注「seniusen」!
ResNet——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 vi ...
- 论文笔记——Deep Residual Learning for Image Recognition
论文地址:Deep Residual Learning for Image Recognition ResNet--MSRA何凯明团队的Residual Networks,在2015年ImageNet ...
- [论文理解]Deep Residual Learning for Image Recognition
Deep Residual Learning for Image Recognition 简介 这是何大佬的一篇非常经典的神经网络的论文,也就是大名鼎鼎的ResNet残差网络,论文主要通过构建了一种新 ...
- Deep Residual Learning for Image Recognition这篇文章
作者:何凯明等,来自微软亚洲研究院: 这篇文章为CVPR的最佳论文奖:(conference on computer vision and pattern recognition) 在神经网络中,常遇 ...
- [论文阅读] Deep Residual Learning for Image Recognition(ResNet)
ResNet网络,本文获得2016 CVPR best paper,获得了ILSVRC2015的分类任务第一名. 本篇文章解决了深度神经网络中产生的退化问题(degradation problem). ...
- Deep Residual Learning for Image Recognition
Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun Microsoft Research {kahe, v-xiangz, v-sh ...
- Deep Residual Learning for Image Recognition论文笔记
Abstract We present a residual learning framework to ease the training of networks that are substant ...
- Deep Residual Learning for Image Recognition(残差网络)
深度在神经网络中有及其重要的作用,但越深的网络越难训练. 随着深度的增加,从训练一开始,梯度消失或梯度爆炸就会阻止收敛,normalized initialization和intermediate n ...
- 【网络结构】Deep Residual Learning for Image Recognition(ResNet) 论文解析
目录 0. 论文链接 1. 概述 2. 残差学习 3. Identity Mapping by shortcuts 4. Network Architectures 5. 训练细节 6. 实验 @ 0 ...
随机推荐
- tbb静态库编译
源自Intel论坛 Jeff的方法https://software.intel.com/en-us/forums/intel-threading-building-blocks/topic/29779 ...
- $2018/8/19 = Day5$学习笔记 + 杂题整理
\(\mathcal{Morning}\) \(Task \ \ 1\) 容斥原理 大概这玩意儿就是来用交集大小求并集大小或者用并集大小求交集大小的\(2333\)? 那窝萌思考已知\(A_1,A_2 ...
- grep 搜索多个同时满足的条件
(二) Grep AND 操作 1. 使用 -E 'pattern1.*pattern2' grep命令本身不提供AND功能.但是,使用 -E 选项可以实现AND操作. grep -E 'patt ...
- [tensorflow源码分析] Conv2d卷积运算 (前向计算,反向梯度计算)
- hibernate -- 注解映射实体和表
表名的映射 //代表此类参与ORM映射,此注解必须要有 @Entity //代表user这个类映射了一个表user50,如果表名和类名一样,此注解可以省略 @Table(name="user ...
- Dom操作(标签--增、删、移动)
Dom操作 移动或者插入标签的方法 1.append()和appendTo():在现存元素的内部,从后面放入元素: 先声明一个变量用来保存新标签 var $span = $('这是一个span元素') ...
- Firebird3基本使用
解决C#无法访问的情况:1. 使用FirebirdSql.Data.FirebirdClient 5版本以上.2.修改Firebird.conf配置文件WireCrypt为Enabled#WireCr ...
- Spring第二天——IOC注解操作与AOP概念
大致内容 spring的bean管理(注解实现) AOP原理 log4j介绍 spring整合web项目的演示 一.spring注解实现bean管理 注解: 代码中一些特殊的标记,使用注解也可以完成一 ...
- struts2第一天——入门和基本操作
一.概述 1.运用场景: 应用于三层架构中web层的框架(显示层的运用),是经典MVC模型的web应用的变体. 2.与struts1的对比: struts2是在struts1基于webwork发展的全 ...
- 2017-2018-1 20155220 《信息安全系统设计基础》课下实践——实现mypwd
学习pwd命令 输入pwd命令 于是man 1 pwd查看pwd详细 然后查看pwd实现需要的系统调用man -k; grep 在这发现了一个功能相同的内核函数getcwd 到这步就很简单了,先查看这 ...