专栏首页机器学习、深度学习深度残差网络 - Deep Residual Learning for Image Recognition

深度残差网络 - Deep Residual Learning for Image Recognition

CVPR2016 code: https://github.com/KaimingHe/deep-residual-networks

针对CNN网络深度问题,本文提出了一个叫深度残差学习网络,可以使得网络的层数达到1000层,不论训练速度还是效果都是很不错。

1 Introduction 自从2012年AlexNet提出之后,VGG和GoogleNet相继被提出。从中我们可以网络模型的深度越来越深,效果越来越好。于是一个直接的想法便是让网络的深度更深些,效果不是更好吗?直接增加网络的层数立马会产生一个问题:梯度消失/发散,这会导致在训练网络一开始就难以收敛。当然这个收敛问题可以通过初始化参数归一化和batch normalization来解决。 收敛问题解决之后,又一个问题暴露出来了,性能下降。随着网络深度的增加,网络的精度首先饱和,然后快速下降。出乎意料,这个下降不是过拟合造成的,对一个合适的模型加入更多的网络层,导致更高的训练误差,这一点我们的实验也验证了。如下图所示:

这个训练精度的下降说明不是所有的系统都容易优化的,我们来看看一个浅层模型和它对应的深度模型。这个对应的深度模型可以通过加入 identity mapping 来构建,其他网络层和浅层模型一样。理论上来说这个深度模型和它对应的浅层模型训练误差应该差不多,但是实验结果却表明我们目前的求解器不能得到比浅层模型更好的解或差不多的解。 本文我们提出了一个深度残差学习框架来解决这个性能下降问题。这里我们不期望把一些网络层叠加在一起就可以拟合一个我们期望的映射。我们显式的让这些叠加层去拟合一个残差映射。假定我们期望的映射是 H(x),我们让叠加的非线性网络层拟合另一个映射:F(x):=H(x)-x。那么期望的映射就可以表示为 F(x)+x。我们假设这个残差映射F(x)要比原来的期望映射 H(x) 容易优化。如果在极端情况下,identity mapping是最优的,那么我们可以直接将残差置零,而不需要用叠加的非线性网络层来拟合这个identity mapping。 这个 F(x)+x在网络中可以通过带有 “shortcut connections”的前馈网络来实现。

Shortcut 连接 会直接跳过一层或多层。在我们这里 shortcut connections 只是完成 identity mapping,没有引入额外的参数和计算量。整个深度残差网络也可以通过 后向传播的 SGD 来实现端对端训练,很容易通过常用的库(如 Caffe)来实现。 我们在 ImageNet 上做了大量实验来验证我们的方法。结论是:1)我们的深度残差网络是容易优化的,而普通的网络层的累加则会增加训练误差。2)随着大幅增加网络层数,深度残差网络的性能提升比较大。 同样在 CIFAR-10 数据集上我们的网络也是有效的,所以深度残差网络不是只针对特定数据集。 深度残差模型在2015的各种竞赛上都是第一名。

2 Related Work Residual Representations 以前已经有很多文献采用了残差表示,而且解决了一些问题。 这些文献表明对问题的一个好的重组合或预处理会简化优化工作。

Shortcut Connections 也有一些文献采用了 Shortcut Connections 这种结构。 接着介绍了残差网络和 highway networks 的不同之处有下面三点。 1)在 highway networks中,Shortcut Connections 是通过 gating functions 实现的。这些 gating functions 依赖于数据,有参数。而我们的 Shortcut Connections 没有参数。 2)当一个 gated shortcut 关闭时(趋于0),highway networks 中的网络层表示的就不是残差函数。我们的网络结构则总是学习残差函数。 identity shortcuts 从来不会被关闭,所有的信息总是通过 shortcuts 。 3)highway networks 没有验证当网络层数很大时(超过100层),性能会提升。

3 Deep Residual Learning 3.1. Residual Learning 假定希望几层叠加的网络来学习数据内在的映射为 H(x),这几层网络的输入是 x,因为我们认为这几层网络是可以拟合任意函数的,所有我们可以用它来拟合残差函数 H(x)-x (假定输入输出维数一样)。貌似用网络去拟合 H(x)-x 和 H(x)没有什么区别,但是两者学习的难度可能不一样。 为什么我们换一个思路,去拟合残差函数了?这是受图1左边中的性能下降现象启发的。正如我们前面讨论,如果直接在网络中加入 identity mappings,理论上这个深度模型不应该比没加 identity mappings 浅模型有更大的训练误差。但是实际中却出现了性能下降,那么这很可能是我们的求解器难以用几层叠加的网络去拟合 identity mappings 。如果我们换做残差学习,那么拟合 identity mappings 就变得很简单了。 当然在实际中 一般情况下 identity mappings 不是最优解。但是使用残差表达或许可以帮助我们预处理问题。如果最优解相对于0映射,更接近 identity mappings ,那我们使用使用 identity mappings 作为基准,应该更容易得到最优解。我们的实验也表明 identity mappings 提供了合理的preconditioning(数据内在信息)。

3.2. Identity Mapping by Shortcuts 图2 网络结构表示的模块可以用下面的公式来表示:

这里 x 和 y 是模块的输入输出向量,两个的维数是一样的,也可以不一样,如果不一样,我们可以将 x 的维数投影成和 y 一样的维数。

3.3. Network Architectures

这里我们主要测试对比了两个网络,一个叫 Plain Network,另一个叫Residual Network 。

Plain Network 主要是受 VGG 网络启发,主要采用3*3滤波器,遵循两个设计原则:1)对于相同输出特征图尺寸,卷积层有相同个数的滤波器,2)如果特征图尺寸缩小一半,滤波器个数加倍以保持每个层的计算复杂度。通过步长为2的卷积来进行降采样。一共34个权重层。 需要指出,我们这个网络与VGG相比,滤波器要少,复杂度要小。

Residual Network 主要是在 上述的 plain network上加入 shortcut connections

3.4. Implementation 针对 ImageNet网络的实现,我们遵循【21,41】的实践,图像以较小的边缩放至[256,480],这样便于 scale augmentation,然后从中随机裁出 224*224,采用【21,16】文献的方法。

4 Experiments

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Visualizing and Understanding Convolutional Networks

    本文针对 AlexNet 网络非凡效果,主要分析它为什么好,怎么改进。为此引入了一个 CNN网络的可视化技术,借此技术分析CNN网络中间各层都学习到什么样的特征...

    用户1148525
  • Tensorflow mnist 数据集测试代码 + 自己下载数据

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/...

    用户1148525
  • 视频动作识别--Temporal Segment Networks: Towards Good Practices for Deep Action Recognition

    Temporal Segment Networks: Towards Good Practices for Deep Action Recognition ...

    用户1148525
  • 一行代码,Pandas秒变分布式,快速处理TB级数据

    刚刚在Pandas上为十几KB的数据做好了测试写好了处理脚本,上百TB的同类大型数据集摆到了面前。这时候,你可能面临着一个两难的选择: 继续用Pandas?可能...

    量子位
  • 46.高级图表类型与应用

    hankleo
  • 教你做一个异步的fis3插件

    本文作者:IMWeb 黄龙 原文出处:IMWeb社区 未经同意,禁止转载 不清楚fis3是什么的可以先看这个链接 http://fis.baidu.c...

    IMWeb前端团队
  • 教你做一个异步的fis3插件

    从fis的官方文档上看,fis 除了deploy 插件是支持异步的其它都不支持。但是有好多node包 都是异步,怎么才能让fis支持异步插件呢?

    IMWeb前端团队
  • 尤大 几天前发在 GitHub 上的 vue-lit 是啥?

    尤大北京时间 9月18日 下午的时候发了一个微博,人狠话不多。看到这个表情,大家都知道有大事要发生。果然,在写这篇文章的时候,上 GitHub 上看了一眼,刚好...

    前端劝退师
  • Javascript中的Return,Return false和Return true

    版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢! https://blog.csdn....

    Tyan
  • 尤大 3 天前发在 GitHub 上的 vue-lit 是啥?

    尤大北京时间 9月18日 下午的时候发了一个微博,人狠话不多。看到这个表情,大家都知道有大事要发生。果然,在写这篇文章的时候,上 GitHub 上看了一眼,刚好...

    Nealyang

扫码关注云+社区

领取腾讯云代金券