「学习内容总结自 udacity 和 coursera 的深度学习课程」
一张图片在计算机中是以三个独立的矩阵存储的,对应于下图中的红色,绿色和蓝色通道。三个矩阵与图像大小相同,例如,下图中猫的图像的分辨率是64×64,三个矩阵(RGB)分别是64×64的大小。
其中单元格中的值表示将用于创建 N 维的特征向量的像素强度。在模式识别和深度学习中,特征向量代表一个对象,在著名的猫识别的例子中,表示是猫或者不是猫。要创建一个特征向量,像素强度值将被“展开”或“重塑”成每种颜色。所以图片输入特征向量的维数就可以表示为 Nx = 64×64×3 = 12288,如下图所示。
特征向量
由上面可知,多层神经网络的每一层的连接都是全连接的方式。而一张仅仅64×64大小的图片就能产生12288维的输入数据,就会造成整个网络参数的数量非常巨大,这样计算成本也会随之增大,会耗费很多的计算资源。另外在使用多层神经网络学习图片特征的时候,因为图片矩阵被转换成一维的向量,会损失图片的二维空间信息。然而这些二维的空间信息是理解图片信息的关键,也是反映像素之间规律的重要信息。这也是多层神经网络在图片识别中的缺点。下面是MLP和CNN的对比:
而卷积神经网络的出现,成功解决了多层神经网络在图片识别方面的问题。卷积神经网络是以稀疏连接的方式连接的且以图片矩阵直接作为输入,这样就避免产生巨大的参数数量和损失图片中重要的二维信息。卷积神经网络中包含卷积层、池化层(也称为下采样层)和全连接层这三种网络层的结构,常见的结构如下图所示。
对于 CNN 能够映射这么少参数的原因有以下两点:
卷积层是卷积神经网络中的隐藏层,也是一种提取特征的网络层。卷积层通过局部连接和权重共享的方法,来模拟具有局部感受野的简单细胞,提取一些初级特征的过程。局部连接体现在卷积层上的神经元与前一层特征图中的固定区域的神经元连接,而不是和所有的神经元连接;权重共享是指同一个特征图中的神经元用一组相同的连接参数与前一层进行连接。因此,基于这两个方面卷积神经网络能够大大地减少参数的数量。
为了清楚的描述卷积计算过程,首先对图中图片的每个像素进行编号,用 Xi,j 表示图像的第 i 行第 j 列元素;对滤波器内的每个权重进行编号,用 Wm,n 表示第 m 行第 n 列权重,用 b 表示滤波器内的偏置项;对特征图的每个元素进行编号,用 ai,j 表示特征图中的第 i 行第 j 列元素;用 f 表示激活函数。然后,使用下列公式计算卷积:
对于第一个特征值的求解过程如下,此时假设滤波器移动的步长(stride)为 1,偏置项为 0。如下图所示,使用滤波器在输入图像上,以 1 为步长移动,以滤波器的大小框出输入图片的局部视野,然后利用上述公式求解特征值。之后的每一步的特征值计算过程以此类推。
卷积计算过程
当填充的选项为“same”时,输出的特征图长宽分别如下两个公式所示:
池化层(Pooling Layer)的主要作用是对特征图进行下采样(subsampling),去掉特征图中一些不重要的样本,进一步减小网络规模和参数数量。该过程是将初级特征筛选为更高级,更抽象的特征的过程。池化的方法有很多种,最常采用的方法是最大池化法。具体过程为:在一个池化滤波器窗口中选取样本的最大值,如下图所示,在一个2×2的窗口中,选取所框选的特征中的最大值,左上角选出最大值为6;右上角选出最大值为8;左下角选出最大值3;右下角选出最大值4。除了最大池化的方法,还有平均池化的方法,即在一个池化窗口中取平均值,最后输出采样后的特征图。
最大池化法
全连接层,即该层的每一个神经元与前一层的神经元均进行连接,以提升网络的非线性映射能力。全连接层的计算和之前的全连接神经网络的计算过程一样。常常在卷积神经网络的最后几层采用全连接层结构。 在图像分类或者其他分类问题上,构建卷积神经网络模型后会在全连接层的后面加上一层 softmax 层用于多分类问题。softmax 函数用于多分类过程中,它将多个神经元的输出,映射到[0, 1]区间内,可以看成概率来理解,从而进行多个类别的分类。softmax 函数的公式如下所示:
参考: [1]. 技术向:一文读懂卷积神经网络CNN [2]. 深度学习笔记(六) cnn 卷积神经网络 [3]. 陈耀丹, 王连明. 基于卷积神经网络的人脸识别方法[J]. 东北师大学报(自然科学), 2016, 48(2): 70-76.