在实践中,最大池化层通常只有两种形式:一种是F=3, S=2,另一个更常用的是F=2, S=2。对更大感受野进行池化需要的池化尺寸也更大,而且往往对网络有破坏性。
普通池化(General Pooling):除了最大池化,池化单元还可以使用其他的函数,比如平均池化(average pooling)或L-2范式池化(L2-norm pooling)。平均池化历史上比较常用,但是现在已经很少使用了。因为实践证明,最大池化的效果比平均池化要好。池化层的示意图如下图所示:
反向传播:回顾一下反向传播的内容,其中函数的反向传播可以简单理解为将梯度只沿最大的数回传。因此,在向前传播经过汇聚层的时候,通常会把池中最大元素的索引记录下来(有时这个也叫作道岔(switches)),这样在反向传播的时候梯度的路由就很高效。
1.2.3 归一化层在卷积神经网络的结构中,提出了很多不同类型的归一化层,有时候是为了实现在生物大脑中观测到的抑制机制。但是这些层渐渐都不再流行,因为实践证明它们的效果即使存在,也是极其有限的。
1.2.4 全连接层在全连接层中,神经元对于前一层中的所有激活数据是全部连接的,这个常规神经网络中一样。它们的激活可以先用矩阵乘法,再加上偏差。
1.3 常用CNN模型 1.3.1 LeNet这是第一个成功的卷积神经网络应用,是Yann LeCun在上世纪90年代实现,被用于手写字体的识别,也是学习神经网络的“Hello World”。网络结构图如下图所示:
C1层:卷积层,这层包含6个特征卷积核,卷积核的大小为5 * 5,然后可以得到6个特征图,每个特征图的大小为32-5+1=28。
S2层:这是下采样层,使用最大池化进行下采样,池化的尺寸为2x2,因此我们可以得到6个14x14的特征图。
C3层:卷积层,这层包含16个特征卷积核,卷积核的大小依然为5x5,因此可以得到16个特征图,每个特征图大小为14-5+1=10。
S4层:下采样层,依然是2x2的最大池化下采样,结果得到16个5x5的特征图。
C5层:卷积层,这层使用120个5x5的卷积核,最后输出120个1x1的特征图。
之后就是全连接层,然后进行分类。
1.3.2 AlexNetAlexnet的意义重大,他证明了CNN在复杂模型下的有效性,使得神经网络在计算机视觉领域大放异彩。 它由Alex Krizhevsky,Ilya Sutskever和Geoff Hinton实现。AlexNet在2012年的ImageNet ILSVRC 竞赛中夺冠,性能远远超出第二名(16%的top5错误率,第二名是26%的top5错误率)。这个网络的结构和LeNet非常类似,但是更深更大,并且使用了层叠的卷积层来获取特征(之前通常是只用一个卷积层并且在其后马上跟着一个汇聚层)。结构图如下图所示:
每层的详细信息如下图所示:
AlexNet输入尺寸为227x227x3。
第一个卷基层由96个大小为11x11的滤波器,步长为4。输出尺寸为(227 -11)/4 +1 = 55,深度为64。大概有11x11x3x643万5千个参数。
第二层池化的尺寸为3x3,步长为2,所以输出的尺寸为(55-3)/2+1=27。
这是第一次使用ReLU,至少第一次将ReLU发扬光大。
使用现在已经不怎么使用的数据规范化。
使用了很多数据增强。
1.3.3 ZFNetMatthew Zeiler和Rob Fergus发明的网络在ILSVRC 2013比赛中夺冠,它被称为 ZFNet(Zeiler & Fergus Net的简称)。它通过修改结构中的超参数来实现对AlexNet的改良,具体说来就是增加了中间卷积层的尺寸,让第一层的步长和滤波器尺寸更小。他们基于试验做了一些参数的调整。结构图如下图所示:
1.3.4 VGGNet