Life sucks, but you're gonna love it.

0%

Paper Reading | Deep Residual Learning for Image Recognition

这部分我们来看看这个经典结构ResNet首先被提出的文章。

Abstract

深度神经网络现在变得越来越难训练了。我们呈现了一种残差网络的框架来解决这个问题。我们重新搭建了网络模型,利用layer的input作为参考,学习残差方程,而不是直接学习没有参考的方程。

Introduction

深度卷积神经网络在图片分类上带来了很大的突破。深度神经网络综合了从低到高的feature和端到端分类器,以及可以通过扩大训练层数而增加的feature的个数。近期的神经网络展现出来的网络结构的深度有着至关重要的作用,并且在ImageNet分类上,分类效果好的神经网络的层数都是在16-30之间。有很多其他的视觉方面的任务同样也受益于深度的网络结构。

那么急于网络深度的重要性,我们不禁要问:训练更好的神经网络真得就如同叠加积木一样简单吗?一个摆在这个问题之前的障碍是梯度爆炸和梯度消失的问题,但是梯度爆炸和小时大部分可以被BN来解决。

【这里应该是说,再深的神经网络,如果出现了梯度消失的问题,我们大可以用归一化输入和归一化每一层的feature来解决。】

当更多层的神经网络开始收敛的时候,一个网络退化的问题就暴露了:随着网络深度的增加,准确率开始趋于饱和然后开始急速下降。但这种退化并不是由于过拟合造成的,添加更多的层数不仅会使测试的准确率降低,训练的准确率也会降低。

【这里举了一个例子,是一个20层网络和一个56层网络的例子,通过增加神经网络的层数(深度)我们得到的网络分类效果并没有变得很好,而是训练和测试准确率变得更差了,所以不是简单的过拟合的问题。】

更深度的神经网络在训练数据集上的效果退化说明,并不是所有的系统都很好优化。让我们来考虑一个浅层的结构和一个在这个浅层结构的基础上增加量更多层的结构。如果我们新添加的这些层只是做简单的对应变化,也就是新添加的几层网络什么都不做,只是单纯的复制浅层网络的输出,那么我的这个深层的网络怎么着误差也应该和浅层网络的误差一样,那如果后面新添加的几层学到了更多的特征,得到的结果应该比浅层网络得到的结果更好才对。但之前的实验显示,新增加的几层并不能很好的体现这个理论。

在这篇文章里,我们利用深度残差网络解决了这个退化的问题。我们这里利用残差map来代替利用几个叠加的layer拟合出来一个mapping的方法。直观来讲,如果我们将理想情况下的mapping方程记做$\mathcal H(x)$, 现在我们对非线性叠加层定义一个新的map $\mathcal F(\bf x) := \mathcal H(\bf x) - x$, 这样一来之前的map就变成了 $\mathcal F(\bf x) + \bf x$ 我们现在的假设是,优化得到残差mapping比得到之前的mapping更加容易。在极端的角度上来讲,如果identity mapping是最优解,那么得到残差mapping的0比得到identity mapping更加容易。

$\mathcal F(\bf x) + \bf x$ 的结构就通过短接得到。短接的意思就是跳过一层或多层,在我们的这个方法里,短接的直接是通过identity mapping,然后得到的结果直接连在之前正常输出的结果上。

Screen Shot 2020-07-24 at 21.54.23

我们在ImageNet数据上面证明了退化的问题以及测试了我们的网络。我们证明了:1. 在残差结构下的很深的深度网络还是很好被优化的,但是很深的只是简单叠加的深度网络的误差会随着层数的增加而增加; 2. 我们很深的残差网络可以在增长网络深度的条件下继续提高精度。

Deep Residual Learning

Residual Learning

让我们假设 $\mathcal H(\bf x)$ 是正常叠加一些卷积层(一个stack)的网络对应的underlying mapping. 这里的 $\bf x$ 代表的是通过这一小堆第一层的input。如果我们假设一系列的非线性层可以为我们得出复杂函数的估计,那么我们同样也可以用这一系列的非线性ceng