【论文】

He K , Zhang X , Ren S , et al. Deep Residual Learning for Image Recognition[J]. 2016.(pdf
He K , Zhang X , Ren S , et al. Identity Mappings in Deep Residual Networks[J]. 2016.(pdf

【新颖点】

  • 提出了短路机制解决深度网络退化的问题
  • 提出了残差块

深度网络退化问题

从经验来看,网络的深度对模型的性能至关重要,当网络层数增加后,网络可以进行更复杂的特征模式的提取,但是这却只是经验上的判断。ResNet 的作者通过实验数据说明,56 层的网络不论是训练时错误率还是测试时错误率都高于 20 层网络。这不是因为深层网络存在的梯度消失或爆照问题引起的,我们可以通过 batch norm 等首段来解决梯度消失或爆炸导致的深度网络难训练的问题。但是,网络越深表示能力却越弱,这是一个非常令人诧异的问题,这就是网络的退化

ResNet论文笔记 resnet论文下载_深度学习

残差学习

针对于网络退化问题,有两种解决思路:

  • 一种是调整求解方法,比如更好的初始化、更好的梯度下降算法等
  • 另一种是调整模型结构,让模型更易于优化

ResNet 的作者从后者入手,将堆叠的基层称为一个块,对于某个块,其可以拟合的函数为 ResNet论文笔记 resnet论文下载_神经网络_02,如果期望的潜在映射为 ResNet论文笔记 resnet论文下载_深度学习_03,与其让 ResNet论文笔记 resnet论文下载_神经网络_02 直接学习潜在的映射,不如去学习残差 ResNet论文笔记 resnet论文下载_ResNet论文笔记_05,即 ResNet论文笔记 resnet论文下载_ResNet论文笔记_06,这样原本的前向路径上就变成了 ResNet论文笔记 resnet论文下载_pytorch_07,用 ResNet论文笔记 resnet论文下载_pytorch_07 来拟合 ResNet论文笔记 resnet论文下载_深度学习_03。这样更易于优化,因为相比于 ResNet论文笔记 resnet论文下载_神经网络_02 学习恒等映射,让 ResNet论文笔记 resnet论文下载_神经网络_02 学习成为 ResNet论文笔记 resnet论文下载_ResNet论文笔记_12 要更加容易(可以通过 L2 正则轻松实现)。这样,对于冗余的块,只需 ResNet论文笔记 resnet论文下载_神经网络_13

我们理解一下上面这段话

首先什么是恒等映射?

如果我们在浅层网络上堆叠新的网络层,而这些增加的层什么也不学习,仅仅是复制浅层网络的特征,那么这样新增加层就是恒等映射。当残差为 0 时,堆积层就仅仅做了恒等映射。在这种情况下,我们猜想如此堆叠出来的深度网络应该至少和浅层网络的性能一样,不会出现退化现象。事实上,什么也不学习是神经网络最难做到的东西之一,残差不会为 0,这也就使得堆积层再说输入特征上学习到乐新的特征,从而拥有更好的性能

接着,怎么做残差学习?

想要让神经网络去拟合潜在的恒等映射函数 ResNet论文笔记 resnet论文下载_神经网络_14,这是很难的。所以,我们只要让 ResNet论文笔记 resnet论文下载_深度网络_15,就可以构成一个恒等映射 ResNet论文笔记 resnet论文下载_神经网络_14。于是,我们的出发点就变成了 ResNet论文笔记 resnet论文下载_神经网络_13

最后,我们做一个简单数学分析解释为什么残差更容易学习?

ResNet论文笔记 resnet论文下载_pytorch_18ResNet论文笔记 resnet论文下载_pytorch_19 分别表示第 ResNet论文笔记 resnet论文下载_ResNet论文笔记_20 个残差单元的输入和输出,ResNet论文笔记 resnet论文下载_ResNet论文笔记_21 表示残差函数,表示学习到的残差,ResNet论文笔记 resnet论文下载_pytorch_22 表示恒等映射,ResNet论文笔记 resnet论文下载_pytorch_23

ResNet论文笔记 resnet论文下载_pytorch_24

从浅层 ResNet论文笔记 resnet论文下载_ResNet论文笔记_20 到深层 ResNet论文笔记 resnet论文下载_ResNet论文笔记_26 的学习特征为 ResNet论文笔记 resnet论文下载_ResNet论文笔记_27

根据链式求导法则,ResNet论文笔记 resnet论文下载_ResNet论文笔记_28

右式的第一项 ResNet论文笔记 resnet论文下载_深度学习_29 表示损失到达 ResNet论文笔记 resnet论文下载_ResNet论文笔记_26 的梯度,括号中 ResNet论文笔记 resnet论文下载_深度网络_31

清楚理解了残差学习之后,我们要考虑的就是如何设计 ResNet论文笔记 resnet论文下载_pytorch_07

残差块

ResNet论文笔记 resnet论文下载_pytorch_33


一个残差块有两条路径 ResNet论文笔记 resnet论文下载_神经网络_02ResNet论文笔记 resnet论文下载_pytorch_35ResNet论文笔记 resnet论文下载_神经网络_02 路径拟合残差,ResNet论文笔记 resnet论文下载_pytorch_35 路径为恒等映射,称为 shortcut,ResNet论文笔记 resnet论文下载_pytorch_38 表示元素积,要求 ResNet论文笔记 resnet论文下载_神经网络_02ResNet论文笔记 resnet论文下载_pytorch_35

我们用书数学公式描述一下残差块,假设残差块的输入为 ResNet论文笔记 resnet论文下载_pytorch_35,输出为 ResNet论文笔记 resnet论文下载_深度网络_42,有 ResNet论文笔记 resnet论文下载_深度网络_43
其中经过一个激活函数,ResNet论文笔记 resnet论文下载_神经网络_44
另外,考虑对维度保持一致,可以在 shortcut 做一个线性变化 ResNet论文笔记 resnet论文下载_pytorch_45,此时残差块的表示为 ResNet论文笔记 resnet论文下载_pytorch_46

值得一提的是,残差块中至少要有两个权重层,否则会出现下面的情况,起不到任何作用 ResNet论文笔记 resnet论文下载_神经网络_47

在论文中,残差路径可以分为两种,一种有 bottleneck 的结构,即下图右中的 ResNet论文笔记 resnet论文下载_深度网络_48

ResNet论文笔记 resnet论文下载_ResNet论文笔记_49


因此 shortcut 路径大致也分为两种,取决于残差路径是否改变了特征图的数量和尺寸。一种是将 ResNet论文笔记 resnet论文下载_pytorch_35 原封不动地输出,另外一种则需要经过 ResNet论文笔记 resnet论文下载_深度网络_48 卷积来升维或者降维,主要目的是将输出与 ResNet论文笔记 resnet论文下载_神经网络_02

ResNet论文笔记 resnet论文下载_ResNet论文笔记_53

网络结构

ResNet论文笔记 resnet论文下载_pytorch_54

  • ResNet 是参考 VGG19,在其基础上进行修改,通过短路机制添加残差单元实现的
  • ResNet 直接使用步长为 2 的卷积做下采样,而不再在残差块之间引入 pooling 层
  • 使用 global average pooling 代替了全连接层得到最终特征
  • 每个卷积层之后都有 batch norm,图上并未标出这点

另外,ResNet 的一个重要设计原则是:当特征图大小降为一半的时候,特征图的数量增加一倍,如 conv3_1、conv4_1 和 conv5_1,这保证了网络层的复杂性。上图中虚线表示特征图数量发生了变化,shortcut 中通过 ResNet论文笔记 resnet论文下载_深度网络_48

ResNet论文笔记 resnet论文下载_ResNet论文笔记_56


对于 18 层 ResNet 或者 34 层 ResNet 更多使用两层的残差块,当网络更深时,则更多使用 bottleneck 的残差块

error surface 对比

ResNet论文笔记 resnet论文下载_神经网络_57

  • ResNet-20(no short)的 error surface 还没有很复杂,优化不会十分困难;但是在增加到 56 层后,error surface 变得异常复杂,此时将很难做到很好的优化
  • 引入 shortcut 后,error surface 变得平缓很多,梯度的可预测性变得很好,更易于优化

残差块的分析与改进

在 Identity Mappings in Deep Residual Networks 一文中进一步研究了 ResNet ,通过 ResNet 反向传播的理论分析调整了残差块的结构

ResNet论文笔记 resnet论文下载_pytorch_58


和之前不同的是,在这片文章中将 shortcut 视为主干路径,而将残差路径视为旁路

新的残差块具有更强的泛化能力,也更能避免退化问题,即使在堆叠大于 1000 层之后,网络的性能仍在变好。具体的变化在于,

  • 通过保持 shortcut 路径的纯净,可以让信息在前向传播和反向传播中更加平滑传递。为此,非必要情况下将不在 shortcut 引入 ResNet论文笔记 resnet论文下载_ResNet论文笔记_59
  • 在残差路径上,将 BN 和 ReLU 同一放在权重前作为预激活