论文名称:Deep Residual Learning for Image Recognition
论文地址:https://arxiv.org/pdf/1512.03385.pdf
ResNet的贡献在于,不直接训练多层卷积层网络H(x),而是训练输入x和输出之间的残差函数F(x)=H(x)−x,解决了梯度弥散问题,训练了更深的网络,模型没有更复杂,但准确率提升。
一、论文理解
1、网络退化问题
随着网络的加深,梯度弥散问题会越来越严重,导致网络很难收敛甚至无法收敛。梯度弥散问题目前有很多的解决办法,包括网络初始标准化,初始数据标准化以及中间层标准化(Batch Normalization)等。但是网络加深还会带来另外一个问题:随着网络加深,出现训练集准确率下降的现象,如下图:
然而,由图知,这并不是由过拟合引起的。
2、ResNet训练更深层次的网络
由于梯度消失/爆炸问题阻止训练的收敛,深层次的网络往往难以训练,ResNet提出了残差学习框架以简化深层的网络训练,为输入层定义残差函数,而不是直接训练卷积神经网络。ResNet训练了深度高达152层的残差网络(比VGG网络深8倍),但仍然具有较低的复杂度,产生的结果也更精确,在2015年的ILSVRC分类任务中获得第一名。
3、残差表示
ResNet 的出发点是,在一个浅层的网络模型上进行改造,将新的模型与原来的浅层模型相比较,改造后的模型至少不应该比原来的模型表现要差,极端情况下,新加层的结果为 0,这样它就等同于原来的模型了。
假设现在有一个由2个卷积层堆叠的卷积栈,将这个栈的输入/输出之间的原始映射称为 underlying mapping,ResNet 用 residual mapping 去替换underlying mapping。将 underlying mapping 标记为 H(x) ,将经过堆叠的非线性层产生的 mapping 标记为 F(x)=H(x)−x ,最原始的映射就被强制转换成 F(x)+x,这种恒等映射学习起来更容易。
4、正向传播与反向传播
假设卷积栈的输入为x,则输出可以定义为:
设为卷积栈的输入,
为卷积栈的输出,则残差网络正向传播公式为,加和是指第l层和L-1层之间的残差F(x):
ε 代表的是 loss 方程,由链式求导法得: