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 ...
随机推荐
- Django 连接Mysql异常处理
启动manage.py提示 连接数据库异常 django.db.utils.OperationalError: (2003, "Can't connect to MySQL server o ...
- 我的linux shell 脚本头部
#!/bin/bash #################################################### # version:1.01 # # link:http://www. ...
- java读入和输出
一: 在python里直接使用input函数就可以,在java里,需要使用Scanner类,用System.in进行初始化,获取用户输入可以用nextLine获取字符串,nextInt获取整形数据. ...
- docker - kubernetes 网络(转)+ 架构图
1.host网络 连接到 host 网络的容器共享 Docker host 的网络栈,容器的网络配置与 host 完全一样.可以通过--network=host指定使用 host 网络.docker ...
- 404 Note Found 队-Beta2
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...
- linux文件系统初始化过程(1)---概述
术语表: struct task:进程 struct mnt_namespace:命名空间 struct mount:挂载点 struct vfsmount:挂载项 struct file:文件 st ...
- iOS 输入框限制输入字节数
iOS中限制输入框文字长度的方法有好多,百度一下,最常用的是这种: - (BOOL)textField:(UITextField *)textField shouldChangeCharactersI ...
- mac 设置mysql开机自启动
1.编辑一个mysql启动文件. 在终端里面输入: sudo vi /Library/LaunchDaemons/com.mysql.mysql.plist 2.输入启动文件内容: <?xml ...
- Kali渗透测试2-抓包/DNS工具
转载请注明出处. TCPDUMP:命令行网络抓包工具tcpdump -h tcpdump version 4.9.2 libpcap version 1.8.1 OpenSSL 1.1.0h 27 M ...
- 菜鸟成长心酸史之php初遇教程
phpstorm是我接触到的第二个制作网页的程序,刚拿到php的时候,我是懵逼的,从安装到使用,可以说一点都不会,尤其是它还要配合wampsever使用,即使看视频,不同的制作php的软件也有不同的地 ...