1 卷积神经网络的结构
卷积神经网络主要由卷积层、下采样层(Pooling层/池化层) 和 全连接层3种网络层构成。上述3种网络层经过排列组合,就可以构建一个完整的卷积神经网络,如下图所示。
下面举个例子对卷积神经网络结构进行说明。
假设上图中的输入图像为灰度图 A ,对应图像矩阵表示为,1表示单通道, 和 对应输入图像的长和高。首先把灰度图 A 输入到输入层,然后接一个卷积层。第一个卷积层对输入的图像进行卷积操作后,得到3个特征图(Feature Map),每个特征图对应一个卷积核,此时网络模型中的数据存储结构变成 。因此3个特征图组成的矩阵也被称为“特征矩阵”,这里的3代表特征矩阵的深度。值得注意的是,卷积层操作产生多少个特征图是自由设定的,也被称为超参数(HyperParameters)。
第一个卷积层后接的是下采样层(下采样层一般称为Pooling层),Pooling层对输入的3个特征图(特征矩阵)进行下来样操作,得到3个更小的特征矩阵。一般来说,对图像进行下来样操作得到的特征图为输入Pooling层特征图的一半。
接下来到第二个卷积层,卷积操作之后产生5个特征图。然后再接一个Pooling层,对5个特征图进行下采样操作,得到5个更小的特征图。
在第二个Pooling层后面接的是两个全连接层。第一个全连接层的每个神经元与上一层的5个特征图中每个神经元(每个像素)进行全连接。下一个全连接层同样与上一层的每个神经元进行全连接。
在整个网络的最后一层是输出层(Softmax层),对全连接后的特征向量进行计算,得到分类预测值。与普通神经网络类似,卷积神经网络模型中的卷积核都是通过对输入数据集经过梯度下降算法训练得到的。
通过上述例子介绍卷积神经网络,我们了解到卷积神经网络最简单的架构方式以及其数据的传递方式。输入一张图像到卷积神经网络中,经过若干卷积层和Pooling层,对图像进行计算操作得到特征图后传递给下一层,最后经过全连接网络输出该图像的分类预测结果。
下面我们逐层展开介绍卷积神经网络的网络结构,下图是对上图的网络模型进行展开:输入层 → 卷积层 → Pooling 层 → 卷积层 →Pooling层 → 全连接层 → 全连接层 → Softmax层。
1.1 输入层
输入图像,假设输入图像为[1, 32, 32] 的灰度图,当然也可以输入彩色图。
1.2 卷积层
对输入卷积层的图像或者特征图进行卷积操作, 输出卷积后的特征图。上图图4-7 中定义了第一个卷积层有3个卷积核,因此卷积操作后得到的特征矩阵为[3, 32, 32] ;定义第二个卷积层有5个卷积核,同理卷积操作后得到的特征矩阵为[5 , 32, 32] 。
1.3 Pooling层
Pooling层对传入的图像在空间维度上进行下采样操作,使得输入的特征图长和宽均变为原来的一半,本例中第一次卷积层后得到 [3, 32, 32] 大小的特征矩阵作为Pooling层的输入,输出 [3, 16, 16] 大小的特征矩阵,再经过第二个 Pooling 层后输出则变成 [5, 8, 8] 大小的特征矩阵。
1.4 全连接层
全连接层与普通神经网络一样,每个神经元都与输入的所有神经元相互连接,然后经过激活函数进行计算。上图中最后Pooling层得到[5, 8, 8] 大小的特征向量,即一共有5 8 8=320个神经元,假设全连接层的神经元为100,那么全连接产生320 100=32000 条连接线,后面的全连接层与 ANN 类似。
1.5 输出层
输出层有时也被称为分类层,因为在最后输出时,将会计算每一类别的分类预测值。假设输出的图像分类选项为(鸡扒, 鸡腿, 鸡翅),那么输出层的输出为[1, 3] 大小的矩阵,最终的输出结果为 [0.9, 0.1, 0.2],输出层选择概率最高的“鸡扒”作为本次卷积神经网络的图像分类任务的预测结果(对应类别的预测概率)。从上述的网络结构可以看出,卷积神经网络模型逐层对图像的每一个像素值进行计算ÿ