ResNet 是何凯明团队的作品,对应的论文 《Deep Residual Learning for Image Recognition》是 2016 CVPR 最佳论文。ResNet 的 Res 也是 Residual 的缩写,它的用意在于基于残差学习,让神经网络能够越来越深,准确率越来越高。
我们都知道,自 2012 年 AlexNet 在 ILSVRC 一战成名后,卷积神经网络便一发不可收拾,后续的各类竞赛中各种神经网络都大发异彩,除了更高的准确率之外,它们普遍的特征就是,网络的层级越来越深了。
这里会产生一个问题,那就是神经网络真的越深越好吗?
但至少有证据表明,情况不是这样的,如果神经网络越来越深,这个神经网络可能会出现退化(degradation) 的现象。这里说的退化是指网络层级加深后,训练的准确率却可能出现饱和的现象。
上面的图片指示的是在 CIFAR-10 这个小型的数据集上,56 层的神经网络的表现比不过 20 层的神经网络。也就是前面说的层数越深,网络却反而退化了。
如何构建更深层的网络?
前面提到的,当网络层次更深时,反而会出现退化的现象,那么有没有办法避免呢?
有一个解决方案是:
在一个的常规的比较浅的模型上添加新的层,而新的层是基于 identity mapping 的。
identity 是相同的意思,identity mapping 可以称为恒等变换,也就是输入与输出是相等的映射关系。
通俗来讲,就是在一个浅层的网络模型上进行改造,然后将新的模型与原来的浅层模型相比较,这里有个底线就是,改造后的模型至少不应该比原来的模型表现要差。因为新加的层可以让它的结果为 0,这样它就等同于原来的模型了。这个假设是 ResNet 的出发点。
那么如何做呢?
作者引入了 deep residual learning framework,也就是基于残差的深度学习框架,实际上是需要对常规的神经网络的改造。
我们都知道,目前流行的神经网络都可以看成是卷积层的堆叠,可以用栈来表示,我们就叫它卷积栈好了.
输入数据经过每个卷积层都会发生变化,产生新的 featuremap ,我们可以说数据在输入与输出间发生了映射,也就是 mapping。神经网络中的权重参数一个作用就是去拟合这种输入与输出之间的 mapping。
ResNet 准备从这一块动手,假设现在有一个栈的卷积层比如说 2 个卷积层堆叠,将当前这个栈的输入与后面的栈的输入之间的 mapping 称为 underlying mapping,现在的工作是企图替换它引入一种新的 mapping 关系,ResNet 称之为 residual mapping 去替换常规的 mapping 关系。
意思是与其让卷积栈直接拟合 underlying mapping,不如让它去拟合 residual mapping。而 residual mapping 和 underlying mapping 其实是有关联的。
将 underlyingmapping 标记为 H ( x ) H(x) H(x)
将经过堆叠的非线性层产生的 mapping 标记为 F ( x ) : = H ( x ) − x F(x) := H(x)-x F(x):=H(x)−x
所以,最原始的 mapping 就被强制转换成 F ( x ) + x F(x)+x F(