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的更多相关文章

  1. Deep Residual Learning for Image Recognition (ResNet)

    目录 主要内容 代码 He K, Zhang X, Ren S, et al. Deep Residual Learning for Image Recognition[C]. computer vi ...

  2. 论文笔记——Deep Residual Learning for Image Recognition

    论文地址:Deep Residual Learning for Image Recognition ResNet--MSRA何凯明团队的Residual Networks,在2015年ImageNet ...

  3. [论文理解]Deep Residual Learning for Image Recognition

    Deep Residual Learning for Image Recognition 简介 这是何大佬的一篇非常经典的神经网络的论文,也就是大名鼎鼎的ResNet残差网络,论文主要通过构建了一种新 ...

  4. Deep Residual Learning for Image Recognition这篇文章

    作者:何凯明等,来自微软亚洲研究院: 这篇文章为CVPR的最佳论文奖:(conference on computer vision and pattern recognition) 在神经网络中,常遇 ...

  5. [论文阅读] Deep Residual Learning for Image Recognition(ResNet)

    ResNet网络,本文获得2016 CVPR best paper,获得了ILSVRC2015的分类任务第一名. 本篇文章解决了深度神经网络中产生的退化问题(degradation problem). ...

  6. Deep Residual Learning for Image Recognition

    Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun           Microsoft Research {kahe, v-xiangz, v-sh ...

  7. Deep Residual Learning for Image Recognition论文笔记

    Abstract We present a residual learning framework to ease the training of networks that are substant ...

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

    深度在神经网络中有及其重要的作用,但越深的网络越难训练. 随着深度的增加,从训练一开始,梯度消失或梯度爆炸就会阻止收敛,normalized initialization和intermediate n ...

  9. 【网络结构】Deep Residual Learning for Image Recognition(ResNet) 论文解析

    目录 0. 论文链接 1. 概述 2. 残差学习 3. Identity Mapping by shortcuts 4. Network Architectures 5. 训练细节 6. 实验 @ 0 ...

随机推荐

  1. asp.net Web API简单的特性路由配置

    一,控制器代码: [RoutePrefix("ajilisiwei")]  //加URL前缀 (非必需)    public class ShoppingController : ...

  2. ngRouter和ui-router区别

    在单页面应用中要把各个分散的视图给组织起来是通过路由机制来实现的.本文主要对 AngularJS 原生的 ngRoute 路由模块和第三方路由模块 ui.router 的用法进行简单介绍,并做一个对比 ...

  3. istio 配置解读

    Istio在服务网络中统一提供了许多关键功能: 流量管理:控制服务之间的流量和API调用的流向,使得调用更可靠,并使网络在恶劣情况下更加健壮. 可观察性:了解服务之间的依赖关系,以及它们之间流量的本质 ...

  4. 针对IE及其它的css hack

    现在一些针对针对政府的oa项目还要去解决兼容IE6 7 8,这对前端开发来说简直是灾难,在要使用一些css3,或者H5的地方,我们就要慎重了,在使用新特性的同时要兼顾老的浏览器的,做到优雅降级,或者针 ...

  5. 真机测试出现INSTALL_FAILED_USER_RESTRICTED安装错误

    之前用小米测试的时候遇到一个问题,两个一样型号的手机一个能直接用Android Studio安装公司的项目一个却不可以,总是报INSTALL_FAILED_USER_RESTRICTED错误,具体见下 ...

  6. P1006 传纸条

    题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的是 ...

  7. [图解tensorflow源码] [转载] tensorflow设备内存分配算法解析 (BFC算法)

    转载自 http://weibo.com/p/1001603980563068394770   @ICT_吴林阳 tensorflow设备内存管理模块实现了一个best-fit with coales ...

  8. 2019北航OO第一单元作业总结

    一.前三次作业内容分析总结 前言 前三次作业,我提交了三次,但是有效作业只有两次,最后一次作业没能实现多项式求导的基本功能因此无疾而终,反思留给后文再续,首先我介绍一下这三次作业,三次作业围绕着多项式 ...

  9. MySQL学习【第二篇安装】

    一.Mysql安装方式 1.安装方式 1.rpm,yum安装 安装方便,安装速度快,但无法定制 2.二进制安装 不需要安装,解压即用,不能定制功能 3.编译安装 可定制,安装很慢,安装分为四个步骤 1 ...

  10. Markdown新手快速入门基础教程

    Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档. 当前许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息.例如:GitHub.简书.redd ...