经典深度神经网络架构解析 - VGG,ResNet,Inception

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典深度神经网络架构解析 - VGG,ResNet,Inception相关的知识,希望对你有一定的参考价值。

参考技术A

深度神经网络对于问题的抽象建立在我们可以通过合适的神经网络架构构造一个通用的函数逼近,使得我们可以从输入样本空间映射到目标样本空间。这一听起来简单的任务在实际构建过程中需要耗费大量的计算和时间以完成模型试验和迭代。而由于迁移学习的可行性,使得我们可以借助已有的在特定分类任务中表现出色的架构来完成类似甚至看起来完全不相关的任务。在学习的过程中,阅读了一些这些经典的网络架构的相关论文,在此做一个记录。

VGG Net 与之前的经典网络结构相比最突出的特征是大量的使用 3x3 (部分架构中还采用了 1x1 )的小卷积核,并且采用 same padding 来维持卷积前后的 w 和 h,Feature map 的缩放完全交给 2x2 的 max pooling 层来完成,此后基本上所有的卷积神经网络的卷积核都采用 3x3 的尺寸。也正因为采用这个简单的、小的卷积核结构,才使得 VGG 成为同时代网络中最经典的深度神经网络。

在深度神经网络中采用小卷积核的原因:小卷积核通过多层叠加后可以在输入层取得与大卷积核同等规模的感受野,且由于网络层次的增加会同步增加网络的容量 model capacity 和复杂度 model complexity,进一步地,通过叠加多个层次的卷积核还可以减少模型的参数:例如对于通道数为 C 的输入和输出来说,采用 7x7 的卷积核需要的参数是 7x7xCxC = 49C 2 个,而通过叠加 3 层 3x3 的卷积核所需要的参数数量为 3 x [3x3xCxC] = 27C 2 个。

在 VGG 的架构中,作者采用 1x1 卷积的主要目的在于增加网络中的非线性,采用与原有输入特征相同通道数量的 1x1 的卷积结构,执行卷积前后不改变特征的表达的数量,但根据作者的经验在同等架构下带有 1x1 结构的网络表现不如 3x3 的网络,因此在后续广为沿用的 VGG 架构都是单纯的 3x3 网络。

一个值得注意的细节是,为了使得网络具有缩放不变性,作者在训练时先将全部图片缩放至 384x384 的尺寸,在此基础上随机裁剪 224x224 的图片区域作为网络的输入,最后再用经过在指定范围内进行尺寸缩放的图片进行微调。

另一个细节是作者在测试时采用了很多比较高明的技巧如 Ensemble 和 multi-crop 等方法使得测试的结果得到了一定的提升,不过这些提升一般只在竞赛中有意义,在真实的生产环境中应用很少。

ResNet 的提出是基于这样一个发现:直觉上深度神经网络应该的性能应该优于架构类似但相对层数更少的网络,但在实际情况中,随着网络层次的加深,梯度消失 Vanishing gradient 的影响愈加明显,网络的训练变得异常困难。这个现象在作者看来反应出了通过非线性激活的神经网络来构建近似恒等映射是困难的,那么我们可以反其道而行之,我们希望神经网络学习这个特定映射和恒等映射之间的差值,此时,由于给定了一个参考基准,使得整个学习的过程更加的容易,这个想法实在是精妙!

在此基础上 ResNet 网络的构建都是基于上图中基本单元构成的。

Inception 这个系列目前共有 5 篇文章,包括:

其中第一篇是对 Inception 架构的一个简单介绍,第二篇则是在改进 Inception 网络的过程中发现了 Batch Normalization 这一被后续广泛使用的提高网络稳健性的方法,第三篇 Rethinking the Inception Architecture for Computer Vision 这一篇相比前两篇论文信息量更大,作者给了很多构建深度卷积神经网络的建议,并且在这一篇中进一步改进了下图中第一版的 Inception Module,将 5x5 的卷积核改为两个 3x3 卷积层的叠加,这是一篇十分诚意的论文,值得反复阅读。

相比于 VGG Net,Inception 网络不再是基本的卷积神经网络的堆叠,取而代之的是对不同变体的 Inception Module 进行叠加。尽管从结构上 Inception 网络更加复杂,但由于大量的使用了 1x1 的卷积核,使得参数量居然比 VGG 还要小。

在此我们除了盲目复杂化网络以外,一个不可避免的问题是:为什么 Inception 网络会有更有的表现?

一种说法是我们在构建网络的过程中很难知道如何选择合适的卷积核,而 Inception Module 使得我们可以尝试多个不同的选择,让网络自己确定哪个方式更加合适。

另一种说法来自本系列的第 5 篇文章,keras 的作者 Francois Chollet 给出的解释是,在传统的卷积神经网络中,卷积核不仅需要在宽度和高度方向上建立特征识别能力,还要在深度(通道)方向上也构建这一能力。再一次地, 知识的表示形式决定了学习的难易程度 ,我们是否可以将这两个方向的特征识别分离开来,而简化这一任务?这就是 Inception 网路及后续在此基础上衍生出的 Xception 网络的核心思想。

以上是关于经典深度神经网络架构解析 - VGG,ResNet,Inception的主要内容,如果未能解决你的问题,请参考以下文章

经典分类CNN模型系列其四:Resnet

TensorFlow2深度学习实战:SSD目标检测算法源码解析

TensorFlow2深度学习实战:SSD目标检测算法源码解析

Keras深度学习实战——基于ResNet模型实现性别分类

经典CNN网络结构-AlexNet、VGG、GoogleNet、ResNet)

CNN网络架构演进