ResNet网络进化史

一 残差网络的出现

    残差网络(ResNet)网络出现于2015年,在2015年ImageNet的分类任务上取得了第一名的好成绩,它的出现相对于较早的ALexNet,VGGNet,GoogleNet等特征提取网络来说具有着历史性的突破。在ResNet网络之前,为了提高卷积网络的特征提取能力,研究者纷纷通过不断增加网络的深度,然而,随着网络深度的不断加深,人们开始发现网络的深度已经达到瓶颈,盲目的加深网络的深度不但不会提高检测的准确率,反而会使得网络难以训练。究其根本原因是随着网络深度的不断增加,在反向传播调节网络参数时,网络中的梯度值会随着深度的不断增加出现梯度爆炸或者梯度消失,使得网络的训练过程难以收敛。而残差网络的出现则正好改变了现状,采用ResNet网络进行特征提取时,网络的深度可以得到极大的增加,从最初的十几层,增加到现在的151层,并且不会产生过拟合现象。

     残差网络主要是由一系列残差模块组成,而在这一个个残差模块内部,加入了跳跃连接(shortcut)连接方式,常见的残差模块有两种,如下图所示:

图1 两种常用的残差模块

   在每个残差模块内部主要使用的卷积大小为1*1卷积和3*3卷积,采用较小的卷积核既可以减小网络的参数量,又可以极大的提高网络的非线性。每个残差模块通过将该模块的输入和经过该模块之后的输出进行像素加和,得

到该模块的输出,采用数学表达式记为:y=x+f(x)。下面从数学角度来分析一下该模块能够防止梯度消失和梯度爆炸的原因。对每个模块的输出进行求导,得到的导函数值为:1+f(x)'.保证了梯度值稳定在1的附近,从而可以有效的消除梯度消失和梯度爆炸。

    常见的残差网络有ResNet50,ResNet101,ResNet152三种,他们的网络结构如下图所示:

图2 常见的ResNet网络结构

二 ResNet网络变体之一   ————密集连接网络(DenseNet)

    自从2015年的ResNet网络提出将跳跃连接加入到特征提取网络中以来,采用跳跃连接来改进网络的方法也越来越多,而将跳跃连接利用的最为充分的就是xl=Hl([x0,x1,x2.........xl-1])2017年横空出世的密集连接网络(DenseNet),密集连接网络内部也是有一个个的密集连接模块组成,相比于残差网络将该模块的输入与该模块的输出进行结合,密集连接模块将该模块内的所有的卷积层的输出不仅仅链接给它们后面的一层,而是把每个卷积层的输出传给它们后面所有的卷积层作为输入,对于一个具有n个卷积层的密集连接模块,其内部的连接数一共为n(n+1)/2个,

这里写图片描述
图3 密集连接模块的内部结构图

每个密集连接模块输出的计算公式为X^{_{l}}=H_{l}([X^{_{0}},X^{_{1}},X^{_{2}}.......X_{l-1}]),其中Hl代表的是批次正则化(BN),3*3卷积以及一个Relu**函数。

     这样连接的好处不仅仅是通过增加连接提高了网络的特征提取功能,更是在通过损失函数反向传播调整网络参数时,使得每个卷积层都可以与损失直接相连,使得网络 有效的避免了过拟合现象,并且可以加快网络的训练速度。常用的密集连接模块的网络结构如下图所示:

这里写图片描述
图4 密集连接模块网络结构图

三 ResNet网络变体之二   ———ResNext网络

       该网络结构提出在2017年的cvpr会议上。它是对残差网络进行另一个角度的改进,它的核心思想是在不增加网络参数复杂度的情况下提高检测或者分类的准确率,同时还可以较少超参数的数量。在该论文中,作者首先阐述了VGG主要采用堆叠网络来实现,简单讲就是 分裂-转化-合并的策略,但是 Inception 系列网络有个问题:网络的超参数设定的针对性比较强,当应用在别的数据集上时需要修改许多参数,因此可扩展性一般。为了进一步提高网络的可扩展性,作者提出了一个新的概念:cardinality,原文的解释是the size of the set of transformations。

图5 ResNext模块结构图

 在该模块内部,作者采用的cardinality值为32,这里采用了group卷积,这也是该网络与残差网络的一个主要区别。这里每个被聚合的拓扑结构都是一样的。

图6 三种不同的ResNext

观察图3,这里作者展示了三种相同的 ResNeXt blocks。fig3.a 就是前面所说的aggregated residual transformations。 fig3.b 则采用两层卷积后 concatenate,再卷积,有点类似 Inception-ResNet,只不过这里的 paths 都是相同的拓扑结构。fig 3.c采用的是grouped convolutions,这个 group 参数就是 caffe 的 convolusion 层的 group 参数,用来限制本层卷积核和输入 channels 的卷积,最早应该是 AlexNet 上使用,可以减少计算量。这里 fig 3.c 采用32个 group,每个 group 的输入输出 channels 都是4,最后把channels合并。作者在文中明确说明这三种结构是严格等价的,并且用这三个结构做出来的结果一模一样,在本文中展示的是 fig3.c 的结果,因为 fig3.c 的结构比较简洁而且速度更快。 

小节:关于残差网络的改进还有比另外两种网络结构,一个是将残差网络与密集连接网络结合起来组成的残差密集网络,另一个则是在2017年cvpr上提出的DPN网络,我会在下次对这两个网络结构进行详细阐述。