经典的卷积神经网络

这里,我们主要简单介绍在卷积神经网络发展过程中,一些经常用的改进模型,主要包括 LeNet-5、AlexNet、VGGNet、GoogLeNet、ResNet、DenseNet、ZFNet 这 7 个模型。本文不会非常深入讲解各个 CNN 模型,而是希望能够快速了解到各个模型起源,基本结构是什么样子,以及其它模型相比有什么明显的不同。

LeNet-5

LeNet-5 是第一个由 Yann LeCun 提出的卷积神经网络,它也是最基础的一个卷积神经网络,网络结构可以参考论文《Gradient-Based Learning Applied To Document Recognition》,如下图所示:
CNN-LeNet-5
LeNet-5 是一个 8 层 CNN 网络(包含输入层),其中包含卷积层块和全连接层块两个部分。卷积层用来识别图像里的空间模式,如线条和物体局部,之后的最大池化层则用来降低卷积层对位置的敏感性,卷积层块由两个这样的基本单位重复堆叠构成。当卷积层块的输出传入全连接层块时,全连接层块会将小批量中每个样本变平(Flatten)。

AlexNet

AexNet 模型的名字来源于论文第一作者 Alex Krizhevsky 的名字,使用了 8 层卷积神经网络,并以很大的优势赢得了 ImageNet 2012 图像识别挑战赛。AlexNet 网络模型,可以参考论文《Imagenet Classification With Deep Convolutional Neural Networks》,如下图所示:
CNN-AlexNet
AlexNet与LeNet的设计理念非常相似,但也有显著的区别,具体区别如下:

  • 第一,与相对较小的 LeNet 相比,AlexNet 包含 8 层变换,其中有 5 层卷积和 2 层全连接隐藏层,以及 1 个全连接输出层。
  • 第二,AlexNet 将 Sigmoid 激活函数改成了更加简单的 ReLU 激活函数。
  • 第三,AlexNet 通过丢弃法来控制全连接层的模型复杂度,而 LeNet 并没有使用丢弃法。
  • 第四,AlexNet 引入了大量的图像增广,如翻转、裁剪和颜色变化,从而进一步扩大数据集来缓解过拟合。

VGGNet

VGGNet 模型的名字,来源于论文作者所在的实验室 Visual Geometry Group。与 AlexNet 和 LeNet 一样,VGG 网络由卷积层模块后接全连接层模块构成。VGGNet 网络模型,可以参考论文《Very Deep Convolutional Neural Networks For Large-scale Image Recognition》,VGGNet网络的配置,如下图所示:
CNN-VGG-Conf
VGGNet 探索了卷积神经网络的深度与其性能之间的关系,通过反复堆叠 3×3 的小型卷积核和 2×2 的最大池化层,成功地构筑了 16~19 层深的卷积神经网络。VGGNet 相比之前的网络结构,错误率大幅下降,并取得了 ILSVRC 2014 比赛分类项目的第 2 名和定位项目的第 1 名。
VGGNet 提出,可以通过重复使用简单的基础块来构建深度模型的思路。VGG 块的组成规则是:连续使用数个相同的填充为 1、窗口形状为 3×3 的卷积层后接上一个滑动步长为 2、窗口形状为 2×2 的最大池化层。卷积层保持输入的高和宽不变,而池化层则对其减半。
VGGNet 虽然比 AlexNet 模型层数多,且每轮训练时间会比 AlexNet 更长,但是因为更深的网络和更小的卷积核带来的隐式正则化结果,需要的收敛的迭代次数减小了许多。

GoogLeNet

在 2014 年的 ImageNet 图像识别挑战赛中,一个名叫 GoogLeNet 的网络结构大放异彩。GoogLeNet 吸收了 NiN 中网络串联网络的思想,并在此基础上做了很大改进。
在 GoogLeNet 模型提出之前,主流的网络结构突破大致是网络更深(层数),网络更宽(神经元数)。但是,纯粹的增大网络有很多缺点:参数太多,容易过拟合;网络越大计算复杂度越大,难以应用;网络越深,梯度越往后穿越容易消失(梯度弥散),难以优化模型。
GoogLeNet 中的基础卷积块叫作 Inception 块,Inception 块中可以自定义的超参数是每个层的输出通道数,以此来控制模型复杂度。Inception 块的结构如下图所示:
CNN-GooLeNet-Inception-Block
Inception 块里有 4 条并行的线路:前3条线路使用窗口大小分别是 1×1、3×3和 5×5 的卷积层来抽取不同空间尺寸下的信息,其中中间 2 个线路会对输入先做 1×1 卷积来减少输入通道数,以降低模型复杂度。第四条线路则使用 3×3 最大池化层,后接 1×1 卷积层来改变通道数。4条线路都使用了合适的填充来使输入与输出的高和宽一致。最后我们将每条线路的输出在通道维上连接,并输入接下来的层中去。
GoogLeNet 模型的结构,如下图所示:
CNN-GooLeNet
GoogLeNet 跟 VGGNet 一样,在主体卷积部分使用了 5 个模块(block),每个模块之间使用滑动步长为 2 的 3×3 最大池化层来减小输出高宽。下面分别对 5 个模块进行说明:

  • 第一模块使用一个 64 通道的 7×7 卷积层;
  • 第二模块使用 2 个卷积层;
  • 第三模块串联 2 个完整的 Inception 块;
  • 第四模块更加复杂,它串联了 5 个 Inception块;
  • 第五模块有输出通道数为 256+320+128+128=832 和 384+384+128+128=1024 的两个 Inception 块。

GoogLeNet 模型的计算复杂,而且不如 VGG 那样便于修改通道数。GoogLeNet 将多个设计精细的 Inception 块和其他层串联起来。其中 Inception 块的通道数分配之比是在 ImageNet 数据集上通过大量的实验得来的。GoogLeNet 和它的后继者们一度是 ImageNet 上最高效的模型之一,在类似的测试精度下,它们的计算复杂度往往更低。

ResNet

在实践中,对神经网络模型添加过多的层后,训练误差往往不降反升。即使利用批量归一化带来的数值稳定性能够使训练深层模型更加容易,但该问题仍然存在。针对这一问题,何恺明等人提出了残差网络(ResNet),它在 2015 年的 ImageNet 图像识别挑战赛夺魁,并深刻影响了后来的深度神经网络的设计。
聚焦于神经网络局部,下图虚线框中的部分则需要拟合出有关恒等映射的残差映射 f(x)-x。残差映射在实际中往往更容易优化。我们只需将图中虚线框内上方的加权运算(如仿射)的权重和偏差参数学成 0,那么 f(x) 即为恒等映射。实际中,当理想映射 f(x) 极接近于恒等映射时,残差映射也易于捕捉恒等映射的细微波动。下图是 ResNet 的残差块(Residual Block),在残差块中,输入可通过跨层的数据线路更快地向前传播。残差网络就是将很多个残差块串联起来构成的一个非常深的网络。
CNN-ResNet-Residual-Block
ResNet 模型,可以参考论文《Deep Residual Learning for Image Recognition》,如下图所示:
CNN-ResNet
上图,为了表明残差网络的有效性,ResNet 共使用了三种网络进行实验:其中一种为 VGG19 网络,它是 VGGNet 论文中最深的也是最有效的一种网络结构;另外一种则是基于 VGG 网络思维继续加深其层次而形成的一种 VGG 朴素网络,它共有34个含参层;最后一种则是与上述 34 层朴素网络相对应的 ResNet 网络,它主要由残差单元构成的。

DenseNet

DenseNet 模型的基本思路与 ResNet 一致,但是它建立的是前面所有层与后面层的密集连接(Dense Connection),它的名称也是由此而来。DenseNet 的另一大特色是通过特征在通道(Channel)上的连接来实现特征重用。这些特点让 DenseNet 在参数和计算成本更少的情形下实现比 ResNet 更优的性能,DenseNet 也因此斩获 CVPR 2017 的最佳论文奖。
DenseNet 的主要构建模块是稠密块(Dense Block)和过渡层(Transition Layer),Dense Block 定义了输入和输出是如何连接的,Transition Layer 则用来控制通道数,使之不过大。一个包含 5 层的 Dense Block,如下图所示:
CNN-5-Layer-Dense-Block
图中,每层都以所有之前的特征映射(Feature Map)作为输入。DenseNet 是由多个 Dense Block 组成,将 DenseNet 分成多个 Dense Block 的原因,是希望各个 Dense Block 内部的特征映射(Feature Map)的大小统一,这样在做连接的时候就不会有大小的问题。下图是一个具有 3 个 Dense Block 的 DenseNet:
CNN-DenseNet
DenseNet 的优点是,因为不需要重新学习冗余特征映射,这种密集连接模式相对于传统的卷积网络只需要更少的参数。另外,它缓解了梯度消失的问题,加强了特征传播并鼓励特征重用。

ZFNet

2013 年的冠军是纽约大学 Matthew Zeiler 和 Rob Fergus 设计的网络 ZFNet,错误率 11.2%。ZFNet 模型更像是 AlexNet 模型的微调优化版,但它还是提出了有关优化性能的一些关键想法。还有一个原因,这篇论文写得非常好,论文作者花了大量时间阐释有关卷积神经网络的直观概念,展示了将滤波器和权重可视化的正确方法。ZFNet 模型的结构,如下图所示:
CNN-ZFNet
ZFNet 网络结构类似于 AlexNet,有两点不同:一是将 3、4、5 层变成了全连接,二是卷积核的大小减小。图像预处理和训练过程中的参数设置也和 AlexNet 很像。

CNN 模型及论文对照

最后,为了方便查找各个 CNN 卷积网络模型对应的论文,整理出各个经典 CNN 模型对应的论文名称,如下列表所示:

CNN模型 论文名称
LeNet-5 Gradient-Based Learning Applied to Document Recognition
AlexNet ImageNet Classification with Deep Convolutional Neural Networks
VGGNet Very Deep Convolutional Neural Networks for Large-scale Image Recognition
GoogLeNet Going Deeper with Convolutions
ResNet Deep Residual Learning for Image Recognition
DenseNet Densely Connected Convolutional Networks
ZFNet Visualizing and Understanding Convolutional Neural Networks

参考文献/链接

Creative Commons License

本文基于署名-非商业性使用-相同方式共享 4.0许可协议发布,欢迎转载、使用、重新发布,但务必保留文章署名时延军(包含链接:http://shiyanjun.cn),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>