卷积神经网络 — 深度卷积模型

1. 经典的卷积网络

本节,吴恩达教授介绍了几种经典的神经网络模型,分别是LeNet、AlexNet、VGGNet,并且提到了后面要介绍的ResNet(残差网络)和Google的Inception。接下来对本节介绍的网络分别做一个简单的介绍。

(1)LeNet-5:

如图1 所示。LeNet-5主要针对灰度设计,所以其输入尺寸比较小,大小为32×32×1(灰度图像没有三维的RGB)。

1520257750879198.jpg

图1

从图中可以看出,在LeNet的经典模式中:随着网络深度增加,图像的大小在缩小,但是通道却在增加;每个卷积层后面连接一个池化层。

(2)AlexNet:

如图2所示,该网络用语对彩色的图片进行处理。注意,虽然源论文中不是采用227×227×3,但在实际测试中,该尺寸效果更好。

1520257774775352.jpg

图2

与前面的LeNet类似,但是该网络结构更复杂,参数也更多,相应的表现也更加好。该网络使用了RELU,使用了多个GPU。

(3)VGG-16:

VGG卷积层和池化层具有相同的大小,都是3×3,步长stride=1,SAME的卷积核为2×2,步长为2的池化结构,其结构如图3所示:

1520257857205197.jpg

图3

(4)ResNet(残差网络)

残差网络是由残差块构建的网络。那么什么是残差块呢?下面来做一个解释。

下面是一个普通的的神经网络块传输(暂时无视a[l]到a[l+2]的这条线)

1520257805882694.jpg

图4

其前向传播过程分别是一个线性、RELU、线性、RELU的过程。而残差块则是增加了一个将a[l]直接连接到a[l+2]的过程,如图5所示,这个过程称为short cut或者skip connection。

1520257872939773.jpg

图5

完整的残差块结构如图3所示。务必注意,这个连接在RELU activation function之前

多个残差块连接起来就构成了ResNet网络。(注意,在论文中,普通的神经网络被称为Plain Network

在学习神经网络的时候就提到了,ResNet对于中间的激活函数来说,有助于能够达到更深的网络,解决梯度消失和梯度爆炸的问题

为什么残差网络表现能很好呢?

假设我们有一个Big NN,其输入为x,输出为a[l],如果我们想增加网络深度的话,同时也给其增加一个残差块:

1520257890727981.jpg

图6

假设网络中我们都是用RELU activation function,那么最后的输出a≥0,这里的a[l+2]我们可以知道为:

a[l+2]=g(z[l+2]+ a[l])=g(W[l+2] a[l+1]+ b[l+2]+ a[l])

如果使用L-2正则化或者权重衰减,就会压缩W和b的值,如果W[l+2]=0同时b[l+2]=0,那么

a[l+2]=g(z[l+2]+ a[l])=g(a[l])=relu(a[l])= a[l]

因此我们可以看到,对于残差块来说学习上面这个恒等的函数是很容易的。所以在增加了残差块后更深网络的性能也不差于plain network。同时,如果增加的网络结构能够学习到一些有用信息,那么就会提升网络的性能。

2. 1×1卷积

什么是1×1卷积呢?

就是卷积核是一个1×1的元素。虽然说看起来这种卷积似乎没什么作用,但实际上作用非常大。

在二维上,这种卷积相当于图片每个元素与这个卷积核数字相乘。但是在三维上,与1×1×nc的卷积核进行卷积,就相当于三维图像上的1×1×nc的切片,也就是nc个点乘卷积数值权重,通过RELU函数输出对应结果。而不同的卷积核则相当于不同的隐层神经元节点与切片上的点一一连接。所以本质上这个卷积核相当于对一个切片上nc个单元都应用了一个全连接的神经网络。

1520257912117229.jpg

图7

最后得到了一个相同长宽但第三维度变成卷积核个数的图片。

应用:维度压缩和增加非线性。

3. Inception Network

Inception Network 的作用就是使我们无需去考虑在构建深度卷积神经网络时,使用多大的卷积核以及是否添加池化层等问题。

Inception主要结构:

1520257931725545.jpg

图8

在上面的Inception结构中,应用了不同的卷积核,以及带padding的池化层。在保持输入图片大小不变的情况下,通过不同运算结果的叠加,增加了通道的数量。

计算成本的问题:

对于上面的5×大小卷积核计算成本:

1520257946113573.jpg

图9

1 filters:5×5×192;

32 个 filters;

总的计算成本:28×28×32×5×5×192=120M

对于1×1×1大小卷积核用作过渡的计算成本,也将下面的中间的层叫做“bottleneck layer”:

1×1×1卷积层计算成本:28×28×16×1×1×192=2.4M

5×5×5卷积层计算成本:28×28×32×5×5×16=10.0M

总的计算成本:2.4M+10.0M=12.4M

1520257973102235.jpg

图10

所以1×1×1卷积核作为bottleneck layer”的过渡层能够有效减小卷积神经网的计算成本。事实证明,只要合理地设置“bottleneck layer”,既可以显著减小上层的规模,同时又能降低计算成本,从而不会影响网络的性能。

Inception的单个单元结构和总体结构如图11和图12所示。

1520257986105667.jpg

图11

1520258011527791.jpg

图12

4. 迁移学习

此部分不再累述。

5. 数据扩充

方法:镜像旋转、随机剪裁、色彩转换(PCA颜色增强)等。

本笔记部分参考了http://blog.csdn.net/koala_tree/article/details/78531398,对原作者表示感谢。