章四 CNN 第2节 深度卷积模型案例研究

第2节 深度卷积模型案例研究

1.1 Why look at case studies

主要介绍几个典型的CNN案例

典型的CNN模型包括:

  • LeNet-5
  • AlexNet
  • VGG

除了这些性能良好的CNN模型之外,我们还会介绍Residual Network(ResNet)。其特点是可以构建很深很深的神经网络(目前最深的好像有152层)。

另外,还会介绍Inception Neural Network。

1.2 经典网络

LeNet-5

LeNet-5模型是Yann LeCun教授于1998年提出来的,它是第一个成功应用于数字识别问题的卷积神经网络。在MNIST数据中,它的准确率达到大约99.2%。

Untitled

该LeNet模型总共包含了大约6万个参数。值得一提的是,当时Yann LeCun提出的LeNet-5模型池化层使用的是average pool,而且各层激活函数一般是Sigmoid和tanh。现在,我们可以根据需要,做出改进,使用max pool和激活函数ReLU。

AlexNet

AlexNet模型与LeNet-5模型类似,只是要复杂一些,总共包含了大约6千万个参数。同样可以根据实际情况使用激活函数ReLU。原作者还提到了一种优化技巧,叫做Local Response Normalization(LRN)。 而在实际应用中,LRN的效果并不突出。

Untitled

VGG-16

VGG-16模型更加复杂一些,一般情况下,其CONV layer和POOL layer设置如下:

  • CONV = 3x3 filters, s = 1, same
  • MAX-POOL = 2x2, s = 2

Untitled

1.3 ResNets

我们知道,如果神经网络层数越多,网络越深,源于梯度消失和梯度爆炸的影响,整个模型难以训练成功。解决的方法之一是人为地让神经网络某些层跳过下一层神经元的连接,隔层相连,弱化每层之间的强联系。这种神经网络被称为Residual Networks(ResNets)。

Untitled

a[l]直接隔层与下一层的线性输出相连,与z[l+2]共同通过激活函数(ReLU)输出a[l+2]。

该模型由Kaiming He, Xiangyu Zhang, Shaoqing Ren和Jian Sun共同提出。

由多个Residual block组成的神经网络就是Residual Network。实验表明,这种模型结构对于训练非常深的神经网络,效果很好。另外,为了便于区分,我们把非Residual Networks称为Plain Network。

Untitled

Untitled

1.4 Why ResNets Work

Untitled

也就是说,太深了之后,梯度消失,a[l+2]=a[l]了,就相当于identity function.从效果来说,相当于直接忽略了a[l]之后的这两层神经层,实现隔层线性传递。而且从性能上来说,这两层额外的Residual blocks也不会降低Big NN的性能。

如果维度不同,还可以通过矩阵运算解决.矩阵可以通过训练或者截断或者补0来完成

Untitled

ResNets同类型层之间,例如CONV layers,大多使用same类型,保持维度相同。如果是不同类型层之间的连接,例如CONV layer与POOL layer之间,如果维度不同,则引入矩阵Ws。

1.5 1x1 Convolutions

Min Lin, Qiang Chen等人提出了一种新的CNN结构,即1x1 Convolutions,也称Networks in Networks。这种结构的特点是滤波器算子filter的维度为1x1。对于单个filter,1x1的维度,意味着卷积操作等同于乘积操作。

1x1 Convolutions可以用来缩减输入图片的通道数目。方法如下图所示

Untitled

1.6 Inception Network Motivation

之前我们介绍的CNN单层的滤波算子filter尺寸是固定的,1x1或者3x3等。而Inception Network在单层网络上可以使用多个不同尺寸的filters,进行same convolutions,把各filter下得到的输出拼接起来。除此之外,还可以将CONV layer与POOL layer混合,同时实现各种效果。但是要注意使用same pool

Inception Network在提升性能的同时,会带来计算量大的问题。

Untitled

通常我们把该1x1 Convolution称为“瓶颈层”(bottleneck layer)。引入bottleneck layer之后,总共需要的计算量为:28x28x16x192+28x28x32x5x5x16=12.4m。明显地,虽然多引入了1x1 Convolution层,但是总共的计算量减少了近90%,效果还是非常明显的。由此可见,1x1 Convolutions还可以有效减少CONV layer的计算量。

1.7 Inception Network

Untitled

Untitled

1.9 Transfer Learning(略)

1.10 数据增强

常用的Data Augmentation方法是对已有的样本集进行Mirroring和Random Cropping。

镜像\随即裁剪

另一种Data Augmentation的方法是color shifting。color shifting就是对图片的RGB通道数值进行随意增加或者减少,改变图片色调。

除了随意改变RGB通道数值外,还可以更有针对性地对图片的RGB通道进行PCA color augmentation,也就是对图片颜色进行主成分分析,对主要的通道颜色进行增加或减少,可以采用高斯扰动做法。这样也能增加有效的样本数量。具体的PCA color augmentation做法可以查阅AlexNet的相关论文。

1.11 State of Computer Vision

Untitled

值得一提的是hand-engineering是一项非常重要也比较困难的工作。很多时候,hand-engineering对模型训练效果影响很大,特别是在数据量不多的情况下。