首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度残差网络 - Deep Residual Learning for Image Recognition

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

作者头像
用户1148525
发布2019-05-27 19:52:36
1.5K0
发布2019-05-27 19:52:36
举报

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

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年12月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档