一、综述
ResNet 最根本的动机是所谓的退化问题,即当模型的层次加深时,错误率却提高了。
一般认为,随着模型的深度加深,学习能力增强,但上图表明:常规的网络堆叠在网络很深的时候,效果却越来越差。这其中的原因之一是网络越深,梯度消失的现象就越来越明显。
于是,作者提出了一种 Residual 残差结构。
即通过在输出和输入之间引入一个 shortcut connection,而不是简单的堆叠网络,这样就解决了网络由于很深出现梯度消失的问题,从而可以把网络做的很深。ResNet 其中一个网络结构如下图所示:
上图中,最下面的是 VGG-19 网络,中间的是 Plain Network,最上面的是基于 Plain Network 构建的 ResNet 网络。其中 Plain Network 遵循两个设计规则:
- 对于相同输出特征图尺寸,卷积层有相同个数的滤波器
- 如果特征图尺寸缩小一半,滤波器个数加倍以保持每个层的计算复杂度。通过步长为 2 的卷积来进行降采样。一共 34 个权重层。
ResNet 网络就是在传统的顺序堆叠网络上增加了 shortcut connection,可以像下图这样理解:
二、核心
首先来看看论文中的 ResNet 的全貌
以上图中 50-layer 为例,在进入残差模块之前的结构为:
- 使用 7 x 7 的 64 个卷积核,stride=2
- 经过 Batch Normalization 层
- 经过 Relu 层
- 经过池化层 3 x 3 maxpooling,stride=2
接下来会经过四个残差模块,以第一个为例,如下图所示: