论文链接:https://arxiv.org/pdf/1512.03385.pdf

1.提出问题

深度神经网络很难训练,不仅仅是过拟合的问题,而且训练不动,训练误差很高

机器学习中残差如何利用 残差分析解决的问题_深度学习

2.干了什么

为了解决这个问题,我们提出残差学习框架(residual learning framework),使得神经网络的训练变得容易,并且我们的网络比之前所有的网络都要深。

3.解决方法

我们将网络层(layers)明确的定义为需要学习的残差函数(residual function,关于输入的函数),而不是学习未指定的函数(unreferenced functions)。

4.实验结果

34层的残差网络优于18层的残差网络(2.8%).更加重要的是,前者训练误差和验证误差都低于后者。这足以表明,残差网络可以解决退化问题。

机器学习中残差如何利用 残差分析解决的问题_机器学习中残差如何利用_02

5.主要内容

4.1 Introduction

        首先,作者提出了一个实验现象,深度网络对比浅层的网络,无论是训练误差还是测试误差都要差,这个问题不是过拟合问题,因为训练误差也很差。那么我们假设一个浅层模型和一个深层模型,深层模型的深层次的层总能学习到一组权重使输入x映射的输出也为x,那么从这个角度上看,深层模型不应该比浅层模型差,但是实验结果却相反,也就是说,深层模型难以训练。

机器学习中残差如何利用 残差分析解决的问题_深度学习

        于是 作者提出了一种残差模型来解决这个问题,如果我们将H(x)视为一个底层映射,模型学习H(x)-x,原来的函数就变成了F(x)+x。作者指出,学习残差H(x)-x比H(x)更容易。

4.2. Deep Residual Learning

(1)模型的实现

        Plain Network. Plain网络的基准(图3,middle)受启发于VGG网络(图3,left)。该卷积网络大部分是3x3卷积,并且有两条设计准则:(i)同样输出大小的特征图,有着相同数量的卷积核;(ii)如果特征图大小减半,为了保证相同的时间复杂度,滤波器个数加倍。我们使卷积滑动为2的方式进行降采样。网络的最后使用全局平均池化和1000个节点的全连接(softmax),总共的权重层为34.

机器学习中残差如何利用 残差分析解决的问题_机器学习中残差如何利用_04

        Residual Network.基于上面的Plain网络,我们插入快捷连接(shortcut connections,图3,right)。当输入和输出是同一纬度的,方程1中的shortcut可以直接应用(图3中,实线连接)。当维度增加时(图3,虚线连接),我们考虑两种操作:(A)shortcut仍然进行恒等映射,但是进行零填充;(B)方程2中进行维度投影(通常使用1x1进行维度增加)。对于两种操作,如果跨越的特征图大小不一样,那么增加卷积滑动(stride2)。

        训练模型的操作与AlexNet和GoogLeNet保持一致,对图片的短边在[256, 480]之间进行随机采样(scale augmentation)。进行224x224的随机裁剪(原图或者翻转图),并且减去均值。使用[21]的颜色增强方法。BN应用在卷积和激活层之前,优化器为SGD,batch size 256.初始学习率为0.1,当误差不降时,除以10。weight decay 为0.0001,momentum 为0.9,不使用Dropout。

4.3 Experiments

        作者在这个部分展示了很多的实验结果,实验结果表明,残差模型能够解决深层模型无法收敛的问题。

机器学习中残差如何利用 残差分析解决的问题_神经网络_05

        作者还对比了3种残差连接的方式,(A)零填充的快捷连接用于升维,所有的连接均没有参数(见Table2和图4,right);(B)部分投影连接,部分是恒等连接;(C)均为投影连接;实验结果如下:

机器学习中残差如何利用 残差分析解决的问题_神经网络_06

        从图中可以看出,C方案是最好的,但是作者说它比较贵,所以采用了B方案,维度相同时使用恒等连接,维度不同时使用投影连接。

        如何构建更深层次的ResNet网络?

5.后续解释

        加入前面的层的输出后,增加了后续层的梯度,让模型能够收敛到比较好的结果