卷积神经网络基础

CNN最初提出是为了避免图像识别时复杂的特征工程,降低图像预处理的难度。
因为CNN可以直接处理原始像素,CNN训练的网络对缩放、平移、旋转等畸形变换具有不变形,泛化能力好。另外,卷积权值共享可以减少网络的参数量,降低模型的复杂度,同时还能在一定程度防止过拟合。

1.CNN如何提取特征?

第一个卷积层直接处理输入的像素点,每个卷积或者滤波器只处理一小块图像,提取其中最有效的特征。
卷积神经网络基础
步长为1时处理过程:

卷积神经网络基础
这里可以可视化:Convolution Visualizer

输入图像经过卷积核处理后尺寸变化计算:x=(dk)/s+1x = (d - k)/s + 1
d为原来的尺寸,k为卷积核尺寸,s为步长
对于不是dxd尺寸的输入,非kxk尺寸卷积核尺寸同样适用。

上述为一个通道时的卷积过程,对于多核多通道的输入,卷积计算如下:
卷积神经网络基础

2.感受野

图像在空间上是有组织结构的,每一个像素在空间上与周围的像素有紧密联系,但是当两个像素距离很远时,两个像素大概率是无关联的。所以每次只需要处理一小块图像,然后将所有局部的信息合并成全局信息。

3.权值共享

对于一幅图像,使用一个卷积核对全图处理就能够得到一幅新的经过处理(滤波)的图像,也就是说新的图像中每个像素都来自同一个卷积核,这就是所谓的权值共享。

4. 局部连接和权值共享如何降低参数量?

当输入图像尺寸为1000x1000时,如果使用全连接层连接一个100万像素的隐含层,那么参数达1万亿。假设感受野为10x10,此时的连接为1亿(10x10x100万)。这里的连接指的是局部连接,即原图像10x10的区域与隐含层的一个单元相连。当这种局部连接的方式改为使用卷积核,根据上述权值共享的含义,需要调整的参数只是一个卷积核的参数,参数量为卷积核的大小。所以当此时卷积核大小取10x10,那么无论输入的图像大小和隐含层大小,需要训练的参数也只有100个。

5. 为什么使用多个卷积核?

一个卷积核只能提取一种图片特征,称之为一个feature map。
使用多个卷积核能够提取各种的点和边特征,可以抽象出高阶的特征。
使用多个卷积核会增加网络参数量,选择合适的卷积核数量对模型的大小有直接影响。

6. 为什么使用多个卷积层?

使用多个卷积层能够在一个卷积层提取的feature map上进一步抽象出更高阶的特征,使网络的表达能力更强,同时能进一步压缩参数,提高效率。

7. 池化层的作用

池化操作:指定核尺寸,有平均池化和最大池化两种。如下图,使用2x2的核,从左到右,然后上下,默认间隔为前进方向上的长度。最大池化取选中范围内最大的值,平均池化对取选中范围内值的均值。平均池化对背景的保留效果好,而最大池化可以更好地提取纹理信息。
卷积神经网络基础
降低输出参数量,池化操作本质是下采样;
增加模型的形变容忍性;提高泛化能力;