转载自:http://shiyanjun.cn/archives/1974.html

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

1 经典的CNN网络结构

1.1 LeNet-5

LeNet-5是第一个由Yann LeCun提出的卷积神经网络,它也是最基础的一个卷积神经网络,网络结构可以参考论文《Gradient-Based Learning Applied To Document Recognition》,如下图所示:

深度学习 – 经典的卷积神经网络(CNN)模型结构-StubbornHuang Blog

LeNet-5是一个8层CNN网络(包含输入层),其中包含卷积层块和全连接层块两个部分。卷积层用来识别图像里的空间模式,如线条和物体局部,之后的最大池化层则用来降低卷积层对位置的敏感性,卷积层块由两个这样的基本单位重复堆叠构成。当卷积层块的输出传入全连接层块时,全连接层块会将小批量中每个样本变平(Flatten)。

1.2 AlexNet

AexNet模型的名字来源于论文第一作者Alex Krizhevsky的名字,使用了8层卷积神经网络,并以很大的优势赢得了ImageNet 2012图像识别挑战赛。AlexNet网络模型,可以参考论文《Imagenet Classification With Deep Convolutional Neural Networks》,如下图所示:

深度学习 – 经典的卷积神经网络(CNN)模型结构-StubbornHuang Blog

AlexNet与LeNet的设计理念非常相似,但也有显著的区别,具体区别如下:

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

1.3 VGGNet

VGGNet模型的名字,来源于论文作者所在的实验室Visual Geometry Group。与AlexNet和LeNet一样,VGG网络由卷积层模块后接全连接层模块构成。VGGNet网络模型,可以参考论文《Very Deep Convolutional Neural Networks For Large-scale Image Recognition》。

VGGNet网络的配置,如下图所示:

深度学习 – 经典的卷积神经网络(CNN)模型结构-StubbornHuang Blog

VGGNet探索了卷积神经网络的深度与其性能之间的关系,通过反复堆叠3 x 3的小型卷积核和2 x 2的最大池化层,成功地构筑了16~19层深的卷积神经网络。VGGNet相比之前state-of-the-art的网络结构,错误率大幅下降,并取得了ILSVRC 2014比赛分类项目的第2名和定位项目的第1名。

VGGNet提出,可以通过重复使用简单的基础块来构建深度模型的思路。VGG块的组成规则是:连续使用数个相同的填充为1、窗口形状为3 x 3的卷积层后接上一个滑动步长为2、窗口形状为2 x 2的最大池化层。卷积层保持输入的高和宽不变,而池化层则对其减半。

VGGNet虽然比AlexNet模型层数多,且每轮训练时间会比AlexNet更长,但是因为更深的网络和更小的卷积核带来的隐式正则化结果,需要的收敛的迭代次数减小了许多。

1.4 GoogLeNet

在2014年的ImageNet图像识别挑战赛中,一个名叫GoogLeNet的网络结构大放异彩。GoogLeNet吸收了NiN中网络串联网络的思想,并在此基础上做了很大改进。

在GoogLeNet模型提出之前,主流的网络结构突破大致是网络更深(层数),网络更宽(神经元数)。但是,纯粹的增大网络有很多缺点:参数太多,容易过拟合;网络越大计算复杂度越大,难以应用;网络越深,梯度越往后穿越容易消失(梯度弥散),难以优化模型。

GoogLeNet中的基础卷积块叫作Inception块,Inception块中可以自定义的超参数是每个层的输出通道数,以此来控制模型复杂度。Inception块的结构如下图所示:

深度学习 – 经典的卷积神经网络(CNN)模型结构-StubbornHuang Blog

Inception块里有4条并行的线路:前3条线路使用窗口大小分别是1 x 1、3 x 3和5 x 5的卷积层来抽取不同空间尺寸下的信息,其中中间2个线路会对输入先做1 x 1卷积来减少输入通道数,以降低模型复杂度。第四条线路则使用3 x 3最大池化层,后接1 x 1卷积层来改变通道数。4条线路都使用了合适的填充来使输入与输出的高和宽一致。最后我们将每条线路的输出在通道维上连接,并输入接下来的层中去。

GoogLeNet模型的结构,如下图所示:

深度学习 – 经典的卷积神经网络(CNN)模型结构-StubbornHuang Blog

GoogLeNet跟VGGNet一样,在主体卷积部分使用了5个模块(block),每个模块之间使用滑动步长为2的3 x 3最大池化层来减小输出高宽。下面分别对5个模块进行说明:

  • 第一模块使用一个64通道的7 x 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上最高效的模型之一,在类似的测试精度下,它们的计算复杂度往往更低。

1.5 ResNet

在实践中,对神经网络模型添加过多的层后,训练误差往往不降反升。即使利用批量归一化带来的数值稳定性能够使训练深层模型更加容易,但该问题仍然存在。针对这一问题,何恺明等人提出了残差网络(ResNet),它在2015年的ImageNet图像识别挑战赛夺魁,并深刻影响了后来的深度神经网络的设计。
聚焦于神经网络局部,下图虚线框中的部分则需要拟合出有关恒等映射的残差映射f(x)-x。残差映射在实际中往往更容易优化。我们只需将图中虚线框内上方的加权运算(如仿射)的权重和偏差参数学成0,那么f(x)即为恒等映射。实际中,当理想映射f(x)极接近于恒等映射时,残差映射也易于捕捉恒等映射的细微波动。下图是ResNet的残差块(Residual Block),在残差块中,输入可通过跨层的数据线路更快地向前传播。残差网络就是将很多个残差块串联起来构成的一个非常深的网络。

深度学习 – 经典的卷积神经网络(CNN)模型结构-StubbornHuang Blog

ResNet模型,可以参考论文《Deep Residual Learning for Image Recognition》,如下图所示:

深度学习 – 经典的卷积神经网络(CNN)模型结构-StubbornHuang Blog

上图,为了表明残差网络的有效性,ResNet共使用了三种网络进行实验:其中一种为VGG19网络,它是VGGNet论文中最深的也是最有效的一种网络结构;另外一种则是基于VGG网络思维继续加深其层次而形成的一种VGG朴素网络,它共有34个含参层;最后一种则是与上述34层朴素网络相对应的ResNet网络,它主要由残差单元构成的。

1.6 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)模型结构-StubbornHuang Blog

图中,每层都以所有之前的特征映射(Feature Map)作为输入。DenseNet是由多个Dense Block组成,将DenseNet分成多个Dense Block的原因,是希望各个Dense Block内部的特征映射(Feature Map)的大小统一,这样在做连接的时候就不会有大小的问题。下图是一个具有3个Dense Block的DenseNet:

深度学习 – 经典的卷积神经网络(CNN)模型结构-StubbornHuang Blog

DenseNet的优点是,因为不需要重新学习冗余特征映射,这种密集连接模式相对于传统的卷积网络只需要更少的参数。另外,它缓解了梯度消失的问题,加强了特征传播并鼓励特征重用。

1.7 ZFNet

2013年的冠军是纽约大学Matthew Zeiler和Rob Fergus设计的网络ZFNet,错误率11.2%。ZFNet模型更像是AlexNet模型的微调优化版,但它还是提出了有关优化性能的一些关键想法。还有一个原因,这篇论文写得非常好,论文作者花了大量时间阐释有关卷积神经网络的直观概念,展示了将滤波器和权重可视化的正确方法。

ZFNet模型的结构,如下图所示:

深度学习 – 经典的卷积神经网络(CNN)模型结构-StubbornHuang Blog

ZFNet网络结构类似于AlexNet,有两点不同:一是将3、4、5层变成了全连接,二是卷积核的大小减小。图像预处理和训练过程中的参数设置也和AlexNet很像。

2 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 链接