深度残差网络(Deep Residual Network )

    

    深度残差网络自从2015年提出以来,在众多比赛中表现优越,且最终获得CVPR 2016年Best Paper Award。大家想必也已经耳熟能详。在这里,只是再简要说说深度残差网络是怎样的网络,关于为什么她表现如此优秀?如论文中描述,深度残差网络的缘起在于一个“反常”的现象。在训练深度神经网络的时候,训练误差和测试误差都随着网络深度的增加而增加。文中称之为Degradation问题。

    深度卷积神经网络在图像分类方面,引发了一系列突破。通过改变叠层的数量(深度),深度网络自然整合低/中/高水平的功能,终端到终端多层方式的分层器,和特征的“水平”都变得更加丰富。最近的证据表明网络深度是至关重要的,在挑战性的ImageNet数据集中领先结果的团队,都利用了“很深”模型,该深度为十六至三十。而且很多特殊的视觉识别任务也从深度模型中大大受益。

受到深度意义的驱使,出现了一个问题:学习更好的网络是否和叠加层数一样简单?解决该问题的一大障碍是臭名昭著的梯度爆发与消失问题,它从一开始就阻碍了收敛。然而,这个问题很大程度上被归一的初始化和中心归一层解决了,它确保几十层的网络开始用反向传播收敛随机梯度下降(SGD)。

当更深的网络能够开始融合时,暴露出了降级问题:随着网络深度的增加,精准度开始饱和(这并不令人吃惊)然后迅速下降。预料之外的是,在[11,42]中报道并且经过我们实验彻底验,证精准度的下降并不是由过度拟合造成的,而且在相配的深度模式中增加更多的层数,会造成更高的训练误差。图1展示了一个经典的实例。


初始化:
我们设深度网络中某隐含层为H(x)-x→F(x),如果可以假设多个非线性层组合可以近似于一个复杂函数,那么也同样可以假设隐含层的残差近似于某个复杂函数[6]。即那么我们可以将隐含层表示为H(x)=F(x)+ x。

这样一来,我们就可以得到一种全新的残差结构单元,如图3所示。可以看到,残差单元的输出由多个卷积层级联的输出和输入元素间相加(保证卷积层输出和输入元素维度相同),再经过ReLU激活后得到。将这种结构级联起来,就得到了残差网络。典型网络结构表1所示。
深度残差网络(Deep Residual Network )_第1张图片
                                 图3 残差单元示意图

可以注意到残差网络有这样几个特点:1. 网络较瘦,控制了参数数量;2. 存在明显层级,特征图个数逐层递进,保证输出特征表达能力;3. 使用了较少的池化层,大量使用下采样,提高传播效率;4. 没有使用Dropout,利用BN和全局平均池化进行正则化,加快了训练速度;5. 层数较高时减少了3x3卷积个数,并用1x1卷积控制了3x3卷积的输入输出特征图数量,称这种结构为“瓶颈”(bottleneck)。
深度残差网络(Deep Residual Network )_第2张图片
表1 典型的残差网络结构
深度残差网络(Deep Residual Network )_第3张图片 图4 ImageNet数据集上“平整”网络和残差网络的收敛性能
深度残差网络(Deep Residual Network )_第4张图片
图5 ImageNet数据集上残差网络和其他网络单模型分类验证错误率对比 (VGG对应值为测试误差)

深度残差网络(Deep Residual Network )_第5张图片
图6 ImageNet数据集上残差网络和其他网络集成模型分类测试错误率对比
深度残差网络(Deep Residual Network )_第6张图片
图7 在Cifar-10数据集上网络各层响应的方差分布 上图:按照原网络层数排列;下图:按照方差大小排列

收敛性能:图4中可以看到,与之前的实验不同,残差网络增加了一定层数之后,并未出现性能退化,反而性能有了一定程度的提升:残差网络有着更低的收敛损失,同时也没有产生过高的过拟合。同时注意到,残差网络在浅层时并未表现出更多的优势,说明残差网络必须要配合较深的深度才能发挥其结构优势,与“平整”网络拉开性能差距。

分类性能:图5和图6是几种网络结构在ImageNet数据集上单模型及集成模型分类错误率的对比。可以发现,残差网络系由于层数普遍高于以上模型,且又有残差结构作为极深度的支持前提,使得其性能普遍高于此前的各类优秀模型。此外,残差网络的性能也确实如期望随着网络层数的提升而提升。在100层以上时已经远远甩开了IRSVRC 2014的冠亚军网络模型。

网络响应:图7中可以看出,残差网络中大部分层的响应方差都处在较低水平,这一定程度上印证了我们的假设:这些响应方差较低的层响应较为固定,很有可能权重近似于零,这也就是说其所对应的残差结构可能近似于单位映射,网络的实际有效层数是要比全部层数要少一些的,产生了跳过连接(Skip-connection)的作用。这样也就是网络为什么在较深的深度下仍可以保持并提升性能,且没有过多增加训练难度的原因。

ResDeeper more

何恺明等人基于深度残差结构,进一步设计了一些其他的残差网络模型,用于Cifar-10数据集上的分类任务,分类错误率如图8所示。可以看到,110层以下的残差网络中均表现出了较强的分类性能。但在使用1202层残差网络模型时,分类性能出现了退化,甚至不如32层残差网络的表现。由于Cifar-10数据集尺寸和规模相对较小,此处1202层模型也并未使用Dropout等强正则化手段,1202层的网络有可能已经产生过拟合,但也不能排除和之前“平整”网络情况类似的原因导致的性能退化。
深度残差网络(Deep Residual Network )_第7张图片
图8 Cifar-10数据集上残差网络和其他网络分类测试错误率对比

经过一段时间的研究,认为极其深的深度网络可能深受梯度消失问题的困扰,BN、ReLU等手段对于这种程度的梯度消失缓解能力有限,并提出了单位映射的残差结构[7]。这种结构从本源上杜绝了梯度消失的问题:
基于反向传播法计算梯度优化的神经网络,由于反向传播求隐藏层梯度时利用了链式法则,梯度值会进行一系列的连乘,导致浅层隐藏层的梯度会出现剧烈的衰减,这也就是梯度消失问题的本源,这种问题对于Sigmoid激活尤为严重,故后来深度网络均使用ReLU激活来缓解这个问题,但即使是ReLU激活也无法避免由于网络单元本身输出的尺度关系,在极深度条件下成百上千次的连乘带来的梯度消失。
深度残差网络(Deep Residual Network )_第8张图片 深度残差网络(Deep Residual Network )_第9张图片
图9 原始残差单元和预激活残差单元的对比

实验证明,将激活层融合到残差支路中,并使用ReLU预激活的残差单元,不仅可以满足之前的假设,并且实验证明在各种已知的结构里面也是最优的[7],预激活单元和原始残差单元的示意图如图9所示。可以看到,预激活的残差单元在残差支路中进行每次卷积之前即完成激活,然后再进行矩阵元素间加法进行合并,既满足了激活要求,也使得支路外不再需要额外激活。
深度残差网络(Deep Residual Network )_第10张图片
图10 Cifar-10数据集上训练1001层残差网络的训练曲线
深度残差网络(Deep Residual Network )_第11张图片
图11 Cifar-10和Cifar-100数据集上各种残差网络 使用不同残差单元的分类测试误差对比

使用预激活残差单元构筑的残差网络收敛性能和分类性能分别如图10和图11所示。可以看到,使用预激活残差单元,相较于使用原始单元更易收敛,且有一定正则化的效果,测试集上性能也普遍好于原始残差单元。

总结

残差网络结构简单,解决了极深度条件下深度卷积神经网络性能退化的问题,分类性能表现出色。从ILSVRC 2015至今半年多的时间里,残差网络的广泛使用已推进计算机视觉各任务的性能升入新的高度。

残差网络表现出的良好图像分类性能,同样也可以进一步推广到人脸识别领域上来。使用残差网络,可以大幅提升人脸分类性能。在人脸识别准确率每3个月提升一个数量级的今天,残差网络及未来更高性能的网络结构必定会将这个周期进一步的缩短。



注:

为什么深度残差网络表现这么好?

  • 梯度传播

    梯度传播一直是神经网络训练的一个主要问题。虽然有很多不同的解决方案都取得不错效果,比如早期的Layer-wise training, 激活函数,Batch Normalization等。但,在深层网络里面梯度随层数指数级衰减。


    深度残差网络的identity mapping(skip connection)可以使得低层网络部分得到充分训练。如下图,非线性网络部分f1(.)可以直接获得输出层梯度更新优化,而不是如原先网络结构那样,所有梯度需要先经过f3,f2。

  • 深度残差网络等价于浅层网络模型融合

       一个来自于康奈尔大学的比较新的观点认为深度残差网络等价于指数级数目的浅层网络模型的融合。如下图,一个K层的深度残差网络,等价于2^K个浅层网络的模型融合。


你可能感兴趣的:(深度学习)