Deep Residual Learning for Image Recognition
原文地址:Deep Residual Learning for Image Recognition
文章目录
生词:
单词 | 释义 |
---|---|
popularize | 使受欢迎,使通俗化 |
envelop | 掩盖,遮住 |
obstacle | 障碍 |
reformulate | 重新定制 |
Solely | 仅仅;纯粹; |
hamper | 阻碍 |
degradation | 恶化,毁坏 |
counterpart | 相当的人 |
feasible | 可行的,可能的 |
asymptotically | 渐进的 |
counterintuitive | 反直觉的;有悖常理的 |
precondition | 先决条件;前提 |
perturbation | 扰动 |
conjecture | 尚不确定;推测 |
Abstract
作者提出这个模型的初衷:太深的模型太难训练了,所以作者提出了一种残差(residual)的方式去缓解deeper的模型难以训练的问题。
作者主要做了以下几类实验:
(1)作者用了一个152层的网络,在imagent上获得了3.57%的错误。这个准确率赢得了ILSVRC 2015 classification task比赛的第一名。
(2)作者也分析了从几十层到100层再到1000层的网络在CIFAR-10数据集上的效果。
(3)在COCO物体检测数据集上获得了28%的提升。
在ImageNet detection, ImageNet local- ization, COCO detection, and COCO segmentation都获得了第一的名次
Introduction
以往的实验表明,越深的模型拥有越好的性能。那么就产生一个问题:是不是只要堆叠模型的深度就能使得模型的性能越来越好呢?一个显著的问题就是梯度消失和梯度爆炸。这个问题已经被模型参数的归一初始化和中间层的归一化方法给解决了。
虽然梯度消失和梯度爆炸的问题解决了,但是还有个问题:***degradation(模型退化)***,这个问题的表现是这样的:虽然模型的深度增加,但当模型的性能趋于饱和时(例如准确率不再上升),最终模型的性能相较于浅层的版本却有了很大的降低,表现就是在训练集、测试集、验证集上都比不上浅层版本模型训练的效果。而且很不幸的是,这个问题不是overfitting,并且越是增加模型层数,效果会越差。
作者通过浅层网络+y=x等同映射构造深层模型,结果深层模型并没有比浅层网络有等同或更低的错误率,推断退化问题可能是因为深层的网络并不是那么好训练,也就是求解器很难去利用多层网络拟合同等函数。(这个实验我先这么理解一下:应该就是在一个shallower的已经训练好的网络中,附加一些层,这层主要是为了学习同等映射,这样相当于增加了模型的深度,而模型的表现又不变差,作者想通过这个实验说明:理论来说,增加模型深度最坏的情况下也应该能学习到很浅层模型相当的表现效果,不应该会更差,所以判断退化可能是因为模型优化做的不够好)
假设我们潜在的优化目标为:H(x),我们让网络去预测另一个东西:F(x) = H(x) - x,那么原始的H(x)就可以表示为F(X) + x。作者假设F(X)会比H(x)更好优化。因为即使在最极端的情况下,也可以让F(X)拟合为0,F(X)=H(x)。这样就相当于在增加模型深度的情况下,也不会使得模型退化。
这样的shortcut connections如下:
这样的模型既不会增加额外的参数,也没有额外的计算开销,可以很容易的被一般的gd,例如SGD等实现。
本文通过在imagenet上的实现证明了两件事:
- 模型容易优化
- 通过增加深度可以显著的看到模型准确率的提升
Deep Residual Learning
Residual Learning
这个残差学习基于的假设是这样的:如果一个多层的非线性网络的输出可以逐渐优化逼近一个函数H(x),那么它一定也可以逼近H(x)-x。这两者优化的区别会有很大的不同。
按照introduction部分提到的实验:如果通过叠加部分层的同等映射来增加网络的深度,网络最后的映射结果应该是不会变的,所以一个模型如果深度增加了,理论上来讲最差的情况应该也和它的浅层版本效果持平(简单的把额外的层优化成同等映射)。然而实际学习过程中却遇到了模型退化(degradation)的问题,说明多层的非线性层很难做到同等映射。面对这个问题,如果通过残差学习的方式,可以通过使得输出为0(这很简单,只要让权重都为0就可以)来让层与层之间学习同等映射。
Identity Mapping by Shortcuts
y =