深度学习 --- 深度残差网络(ResNet)变体介绍

先说明,本文不是本人所写,是本人翻译得来,目的是系统整理一下,供以后深入研究时引用,如有侵权请联系本人删除。

ResNet变体

宽剩余网络(WRN):从“宽度”入手做提升:

Wide Residual Network(WRN)由Sergey Zagoruyko和Nikos Komodakis提出。虽然网络不断向更深层发展,但有时候为了少量的精度增加需要将网络层数翻倍,这样减少了特征的重用,也降低训练速度。因此,作者从“宽度”的角度入手,提出了WRN,16层的WRN性能就比之前的ResNet效果要好

深度学习 --- 深度残差网络(ResNet)变体介绍_第1张图片

上图中a,b是何恺明等人提出的两种方法,b计算更节省,但是WDN的作者想看宽度的影响,所以采用了a。作者提出增加残余块的3种简单途径:

1.更多卷积层 

2.加宽(更多特征平面) 

3.增加卷积层的滤波器大小(滤波器尺寸)

深度学习 --- 深度残差网络(ResNet)变体介绍_第2张图片

WRN结构如上,作者表示,小的滤波器更加高效,所以不准备使用超过3x3的卷积核,提出了宽度放大倍数k和卷积层数l。作者发现,参数随着深度的增加呈线性增长,但随着宽度却是平方长大。虽然参数会增多,但卷积运算更适合GPU。参数的增多需要使用正则化(正则化)减少过拟合,何恺明等人使用了批量标准化,但由于这种方法需要重力增强,于是作者使用了辍学。

深度学习 --- 深度残差网络(ResNet)变体介绍_第3张图片

WRN 40-4与ResNet-1001结果相似,参数数量相似,但是前者训练快8倍。作者总结认为:

1.宽度的增加提高了性能 

2.增加深度和宽度都有好处,直到参数太大,正则化不够 

3.相同参数时,宽度比深度好训练 

 ResNeXt:何恺明等人在Facebook升级ResNet,提出“深度”和“宽度”之外的神经网络新维度

2017年2月,已经加入Facebook的何恺明和S.谢等人在“残差变换聚合深度网络”(深度神经网络的聚合残差变换)提出一个名为ResNeXt的残差网络变体,它的构建块如下所示: 

深度学习 --- 深度残差网络(ResNet)变体介绍_第4张图片

 

这个可能看起来很眼熟,因为它与GoogLeNet [4]的初始模块非常类似。它们都遵循“拆分 - 转换 - 合并”的范式,区别只在于ResNeXt这个变体中,不同路径的输出通过将相加在一起来合并,而在GoogLeNet [4]中不同路径的输出是深度连结的。另一个区别是,GoogLeNet [4]中,每个路径彼此不同(1x1,3x3和5x5卷积),而在ResNeXt架构中,所有路径共享相同的拓扑。

ResNeXt的作者引入了一个被称为“基数”(cardinality)的超参数 - 即独立路径的数量,以提供一种新方式来调整模型容量。实验表明,通过增加“基数”提高准确度相比让网络加深或扩大来提高准确度更有效。作者表示,基数是衡量神经网络在深度(depth)和宽度(width)之外的另一个重要因素。作者还指出,与Inception相比,这种新的架构更容易适应新的数据集/任务,因为它有一个简单的范式,而且需要微调的超参数只有一个,而Inception有许多超参数(如每个路径的卷积层核的大小)需要微调。

这一新的构建块有如下三种对等形式:

深度学习 --- 深度残差网络(ResNet)变体介绍_第5张图片

  在实际中,这个“分割 - 转换 - 合并”范例通常是通过“逐点分组卷积层”实现的,这个卷积层会将它获得的特征图输入分成几组,然后分别执行正常的卷积操作;最终的输出是depth concatenated的,并且会被输入至一个1 * 1的卷积层中。在ImageNet-1K数据集上,作者表明,即使在保持复杂性的限制条件下,增加基数也能够提高分类精度。此外,当增加容量时,增加基数比更深或更宽有效.ResNeXt在2016年的ImageNet竞赛中获得了第二名。

DenseNet:将输出从相加改为“相并联”

也是在2016年,康奈尔大学的高黄和清华大学的庄刘等人在论文密集连接的卷积网络[9]中,提出一种称为DenseNet的新架构。不同于ResNet将输出与输入相加,形成一个残差结构,DenseNet将输出与输入相并联,实现每一层都能直接得到之前所有层的输出 .DenseNet进一步利用快捷连接的好处 - 将所有层都直接连接在一起。在这个新架构中,每层的输入由所有前面的层的特征映射(feature maps)组成,其输出传递给每个后续的层。特征映射与depth-concatenation聚合。

深度学习 --- 深度残差网络(ResNet)变体介绍_第6张图片

 

ResNet将输出与输入相加,形成一个残差结构;而DenseNet却是将输出与输入相并联,实现每一层都能直接得到之前所有层的输出。

深度神经网络的聚合残差变换[8]的作者除了应对梯度消失问题外,还认为这种架构可以鼓励特征重新利用,从而使得网络具有高度的参数效率。一个简单的解释是,在深度残留学习图像识别[2]和深度残留网络中的身份映射[7]中,身份映射的输出被添加到下一个块,如果两个层的特征映射具有非常不同的分布,这可能会阻碍信息流。因此,级联特征映射可以保留所有特征映射并增加输出的方差,从而鼓励特征重新利用。

深度学习 --- 深度残差网络(ResNet)变体介绍_第7张图片

根据这种范例,我们知道第l层输入特征图的数量会有k *(l-1)+ k_o个,其中的k_0是输入图像中的通道数目。作者们使用一个叫做“增长率”(k )的超参数防止网络变得过宽,他们还用了一个1×1的卷积瓶颈层在3×3的卷积前减少特征映射的数量整体架构如下表所示:

深度学习 --- 深度残差网络(ResNet)变体介绍_第8张图片

 谷歌MobileNet:视觉模型往移动端轻量级发展

说道ResNet(ResNeXt)的变体,还有一个模型不得不提,那就是谷歌的  MobileNet,这是一种用于移动和嵌入式设备的视觉应用高效模型,在同样的效果下,计算量可以压缩至1/30 .MobileNet基于一个流线型的架构,该架构使用deepwise separable convolution来构建轻量级的深度神经网络。作者引入了两个简单的全局超参数,有效权衡延迟和准确度。这些超参数能让模型搭建者根据问题的限制为其应用选择适当规模的模型

深度学习 --- 深度残差网络(ResNet)变体介绍_第9张图片

“MobileNet一个很大的亮点是对deepwise卷积的大规模使用。将一个二维的depthwise卷积和1x1的映射卷积组合起来可以很好的逼近普通的三维卷积。对于常用的3x3三维卷积来说,利用depthwise和1x1映射来取代可以将计算量压缩8-9倍,所用到的参数量也大大减少,但仍然保持相类似的精确度。这样的想法来自于矩阵分解,一般如果一个矩阵是低等级(低秩)的话,可以有很多办法将其分解成为两个或者多个矩阵。另外一个启发是大部分的计算会产生于早期的卷积层,所以MobileNet更早的采用步幅2而大大减少了计算量.MobileNet在ImageNet分类的任务上能达到类似VGG的效果,但是参数和计算量都少了都超过一个数量级(约1/30)。“

深度随机的神经网络

RESNET的强大性能在很多应用中已经得到了证实,尽管如此,RESNET还是有一个不可忽视的缺陷 - 更深层的网络通常需要进行数周的训练 - 因此,把它应用在实际场景下的成本非常高。为了解决这个问题,[10]的作者们引入了一个“反直觉”的方法,即在我们可以在训练过程中任意地丢弃一些层,并在测试过程中使用完整的网络。

作者们用了残差块作为他们网络的构件,因此,在训练中,如果一个特定的残差块被启用了,那么它的输入就会同时流经恒等表换捷径(identity shortcut)和权重层;否则输入就只会流经恒等变换快捷在训练的过程中,每一个层都有一个“生存概率”,并且都会被任意丢弃在测试过程中,所有的块都将保持被激活。状态,而且块都将根据其在训练中的生存概率进行调整。

从形式上来看,H_L是第升个残差块的输出结果,f_l是由升第升个残差块的权重映射所决定的映射,B_L是一个伯努利随机变量(此变量的值只有1或0 ,反映出一个块是否是被激活的)具体训练过程如下:

 

当B_L = 1时,这个块就是一个正常的残差块;当B_L = 0时,上面的公式就变成了这样

 

既然我们已经知道了H_(L-1)是一个RELU的输出结果,而且这个输出结果已经是非负的了,那么上面的方程式就会减少到只剩下一个恒等层:

 

如果P_L表示的是第升层在训练中的生存概率,那么在测试过程中,我们就能得到以下的方程式:

 

作者们将一个“线性衰减规律”应用于每一层的生存概率,他们表示,由于较早的层会提取低级特征,而这些低级特征会被后面的层所利用,所以这些层不应该频繁地被丢弃这样,最终生成的规则就变成了这样:

上面公式中的大号表示块的总数量,因此P_L就是最后一个残差块的生存几率,这个几率在整个实验中一直都保持着0.5的水平。一定要注意的是,在这个情境中的输入被视为第一个层(L = 0),所以这个第一层永远不会被丢弃随机深度训练的整体框架如下图所示:

深度学习 --- 深度残差网络(ResNet)变体介绍_第10张图片

 

与差[11]类似,用任意的深度来训练一个深度网络可以看作是训练一个小型RESNET集合,两种训练的区别在于上面的方法是任意地丢弃一整个层的,而差在训练中仅丢弃一个层的部分隐藏单元。

实验表明,同样是训练一个110层的RESNET,以任意深度进行训练的性能,比以固定深度进行训练的性能要好。这就意味着RESNET中的一些层(路径)可能是冗余的。

作为小型网络集合的RESNET

[10]一文的作者们提出了一个训练一个深度网络的“反直觉”方法,即在训练中任意地丢弃网络的层,并在测试中使用整个网络.Veit等人[12]介绍了一个更加“反直觉”的发现:我们可以删除经过训练后的RESNET中的部分层,同时保持相当不错的网络性能这样一来RESNET架构就变得更加有趣了,因为在维特等人的论文中,作者对VGG网络做了同样的操作,移除了一个VGG网络的部分层,而VGG网络的性能出现了显着的退化。

为了使训练过程更清晰易懂,维特等人首先介绍了一个RESNET的分解图。当展开这个网络架构以后,我们就能很清楚地发现,一个有着我个残差块的RESNET架构有2 **我个不同的路径(因为每一残差块会提供两个独立的路径)。

深度学习 --- 深度残差网络(ResNet)变体介绍_第11张图片

 

根据以上的分解图,我们就能清晰地理解为什么移除RESNET架构中的部分层不会降低其太多性能,这是因为RESNET架构有很多独立有效路径,而且大部分路径在移除了部分层之后会保持完整无损。相反,VGG网络只有一个有效路径,因此移除一个层都会对它的唯一路径的性能产生极大的影响。

通过实验,作者们还发现了RESNET中的路径有着多模型集成的行为倾向。他们在测试时删除不同数量的层,检查网络性能与删除层的数量是否相关。结果显示,网络的表现确实有着整体聚集的倾向,具体如下图所示:

深度学习 --- 深度残差网络(ResNet)变体介绍_第12张图片

 

最后,作者们研究了RESNET中路径的特征:

很明显,所有可能路径长度的分布都与一个二项式分布相关,如下图的(a)中所示。大部分的路径都流经了19到35个残差块。

深度学习 --- 深度残差网络(ResNet)变体介绍_第13张图片

 

为了得到路径长度ķ的梯度幅度,作者们首先向网络输入了一批数据,然后任意采样了ķ个残差块。当反向传递梯度时,他们仅将采样的残差块通过权重层进行传递(b)中图表示随着路径长度的增加,梯度幅度会迅速下降。

我们现在可以将每一路径长度与其期望的梯度大小相乘,看每一路径长度在训练中起到多大的作用,就像(c)中图。令人惊讶的是,大多分布都来自于9到18的路径长度,但它们都只包含少量的总路径,如(a)中图。这是一个非常有趣的发现,因为这暗示着RESNET无法解决过长路径的梯度消失问题,RESNET的成功实际上源自于它缩短了它的有效路径(effective path)的长度。

 

参考文献

[1]. A. Krizhevsky, I. Sutskever, and G. E. Hinton. Imagenet classification with deep convolutional neural networks. In Advances in neural information processing systems,pages1097–1105,2012.

[2]. K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. arXiv preprint arXiv:1512.03385,2015.

[3]. K. Simonyan and A. Zisserman. Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556,2014.

[4]. C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan, V. Vanhoucke, and A. Rabinovich. Going deeper with convolutions. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,pages 1–9,2015.

[5]. R. Srivastava, K. Greff and J. Schmidhuber. Training Very Deep Networks. arXiv preprint arXiv:1507.06228v2,2015.

[6]. S. Hochreiter and J. Schmidhuber. Long short-term memory. Neural Comput., 9(8):1735–1780, Nov. 1997.

[7]. K. He, X. Zhang, S. Ren, and J. Sun. Identity Mappings in Deep Residual Networks. arXiv preprint arXiv:1603.05027v3,2016.

[8]. S. Xie, R. Girshick, P. Dollar, Z. Tu and K. He. Aggregated Residual Transformations for Deep Neural Networks. arXiv preprint arXiv:1611.05431v1,2016.

[9]. G. Huang, Z. Liu, K. Q. Weinberger and L. Maaten. Densely Connected Convolutional Networks. arXiv:1608.06993v3,2016.

[10]. G. Huang, Y. Sun, Z. Liu, D. Sedra and K. Q. Weinberger. Deep Networks with Stochastic Depth. arXiv:1603.09382v3,2016.

[11]. N. Srivastava, G. Hinton, A. Krizhevsky, I. Sutskever and R. Salakhutdinov. Dropout: A Simple Way to Prevent Neural Networks from Overfitting. The Journal of Machine Learning Research 15(1) (2014) 1929–1958.

[12]. A. Veit, M. Wilber and S. Belongie. Residual Networks Behave Like Ensembles of Relatively Shallow Networks. arXiv:1605.06431v2,2016.


原博客为:https//towardsdatascience.com/an-overview-of-resnet-and-its-variants-5281e2f56035

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