对卷积神经网络中卷积层、**层、池化层、全连接层的理解

卷积神经网络

举一个卷积神经网络识别汽车的例子如下:
对卷积神经网络中卷积层、**层、池化层、全连接层的理解
其中数据输入的是一张图片(输入层),CONV表示卷积层,RELU表示激励层,POOL表示池化层,Fc表示全连接层

输入层

在图片输入到神经网络之前,一般在输入层进行图像处理,有以下三种常见的图像处理的方式:

  1. 均值化:把输入数据各个维度都中心化到0,所有样本求和求平均,然后用所有的样本减去这个均值样本就是去均值。
  2. 归一化:数据幅度归一化到同样的范围,对于每个特征而言,范围最好是[-1,1]。
  3. PCA/白化:用PCA降维,让每个维度的相关度取消,特征和特征之间是相互独立的。白化是对数据每个特征轴上的幅度归一化。
    对卷积神经网络中卷积层、**层、池化层、全连接层的理解
    对卷积神经网络中卷积层、**层、池化层、全连接层的理解

卷积层

卷积层的作用就是提取特征。

图片具有局部关联性质,一个图片的像素点影响最大的是它周边的像素点,而距离这个像素点比较远的像素点二者之间关系不大。这个性质意味着每一个神经元我们不用处理全局的图片了(和上一层全连接),我们的每一个神经元只需要和上一层局部连接,相当于每一个神经元扫描一小区域,然后许多神经元(这些神经元权值共享)合起来就相当于扫描了全局,这样就构成一个特征图,n个特征图就提取了这个图片的n维特征,每个特征图是由很多神经元来完成的。

例如3通道的卷积操作如下:
对卷积神经网络中卷积层、**层、池化层、全连接层的理解

卷积的计算公式如下:
对卷积神经网络中卷积层、**层、池化层、全连接层的理解

激励层

激励层的作用可以理解为把卷积层的结果做非线性映射。

对卷积神经网络中卷积层、**层、池化层、全连接层的理解
上图中的f表示激励函数,常用的激励函数几下几种:

对卷积神经网络中卷积层、**层、池化层、全连接层的理解

池化层

池化层:降低了各个特征图的维度,但可以保持大分重要的信息。池化层夹在连续的卷积层中间,压缩数据和参数的量,减小过拟合,池化层并没有参数,它只不过是把上层给它的结果做了一个下采样(数据压缩)。下采样有两种常用的方式:
Max pooling:选取最大的,我们定义一个空间邻域(比如,2x2 的窗口),并从窗口内的修正特征图中取出最大的元素,最大池化被证明效果更好一些。
Average pooling:平均的,我们定义一个空间邻域(比如,2x2 的窗口),并从窗口内的修正特征图算出平均值。

我们要注意一点的是:pooling在不同的depth上是分开执行的,也就是depth=5的话,pooling进行5次,产生5个池化后的矩阵,池化不需要参数控制。池化操作是分开应用到各个特征图的,我们可以从五个输入图中得到五个输出图。

对卷积神经网络中卷积层、**层、池化层、全连接层的理解

全连接层

在全连接层中所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。当前面卷积层抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。 通常卷积网络的最后会将末端得到的长方体平摊成一个长长的向量,并送入全连接层配合输出层进行分类。比如,在下面图中我们进行的图像分类为四分类问题,所以卷积神经网络的输出层就会有四个神经元。
对卷积神经网络中卷积层、**层、池化层、全连接层的理解

全连接层之前的在做特征提取,而全连接层在做分类。