Abstract:
更深层的网络训练十分困难,我们提出了残差网络来实现深层网络。我们重新定制了层间的学习是参考 layer input 的残差函数,而不是一个没有参考的函数。
Introduction:
是否学习更好的网络就是简单的堆积更多的层?一个障碍便是梯度消失或者爆炸,从训练的一开始便会损害收敛,虽然这个问题可以被 normalization initialization 和 intermediate normalization layers解决,可以使网络达到十多层
当深层网络可以收敛后,又出现了退化问题,当网络层数加深,准确率开始变得饱和,然后会快速衰退,这种衰退并不是因为过拟合引起的,加更多的层会引起训练误差变大,如下图
这种训练准确率的退化表明并不是所用的 system 都可以很好的优化。如何从 shallower architecture 到 deeper architecture. 现有的方法是,added layers 是恒等映射(identity mapping),而其它层是 copy from learned shallower model.这种方法本应获得不低于 shallower counterpart 的准确率,但是并没有。
本文通过提出一个 deep residual learning framework 来解决 degradation problem.我们让这些堆叠层拟合一个残差映射,而不是直接拟合底层映射。将期望得到的底层映射设为 H(x),让堆叠的非线性层拟合一个映射,F(x)=H(x)- x,这样,原始的映射 H(x)就是 F(x)+ x . 我们假设优化一个残差映射比无引用的映射更容易。极端情况下,当一个恒等网络是最优的,那么通过残差映射将它的残差变为零比非线性层拟合一个恒等映射更简单。
F(x)+ x 可以通过 feedword 来实现,即如上图的 shortcut connections. 在我们的例子中,shortcut connection 只是简单的执行恒等映射,然后把他们的输入加到堆叠的层。恒等 shortcut connection 没有增加额外的参数,也没有额外的计算。
接下来,我们会在 ImageNet 上进行试验,我们展示了
- 极深的残差网络也可以很简单的优化,但是“plain(simply stack layers)”在层数加深时,训练误差会变大
- 残差网络可以将网络层数加到很大,来获得很好的准确率,结果优于以前的网络
在 Cifar-10 上相同的结果证明我们的方法不是对于某一个数据集的特定方法。
Related Work:
- 残差表达:在低级视觉问题中,多尺度方法将问题分解为多个尺度的子问题,每一个子问题是 coarser 和 finer scale 的残差问题。多尺度的另一种方式是多层基预处理,它依赖于两个 scales 之间的残差变量,这种方法收敛的很快,就是因为残差的特性。这种方法说明一个好的重新表达或者预处理可以简化优化。
- Shortcut 连接:对 shortcut 的研究有很长的一段时间了。早期,多层感知机增加一个线性层来连接网络的输入和输出;后来,一些中间层被用来来接到辅助分类器来解决梯度消失/爆炸的问题;Inception 模型中,一个“inception”层由 shortcut branch 和 deeper branch 组成。和我们的工作同期的, 还有一个“highway network”,将 shortcut connections 和 门函数连接起来。这个门和数据有关,而且具有参数,门可以关闭,就不是代表残差函数了,而且 highway network 并不会随着层数的加深来增加准确率。与之相反,我们的 formulation 总是学习 residual function,我们的 shortcuts 永远都不会关闭,所有的信息都可以通过。
Deep Residual Learning: