卷积神经网络
虽然可以对任何类型的机器学习使用深度学习模型,但它们对于处理由大量数值数组(如图像)组成的数据特别有用。 与图像配合使用的机器学习模型是一种称为 计算机视觉的区域人工智能的基础,深度学习技术近年来一直负责推动这一领域的惊人进步。
深度学习在这一领域的成功的核心是一种称为 卷积神经网络或 CNN的模型。 CNN 通常通过从图像中提取特征,然后将这些功能馈送到完全连接的神经网络中来生成预测。 网络中的特征提取层会影响将特征数从可能巨大的单个像素值数组减少到支持标签预测的较小特征集。
CNN 中的层
CNN 由多个层组成,每个层在提取特征或预测标签时执行特定任务。
卷积层
主体层类型之一是 卷积 层,用于提取图像中的重要特征。 卷积层的工作原理是将筛选器应用于图像。 筛选器由由权重值的矩阵组成的 内核 定义。
例如,3x3 筛选器可能定义如下:
1 -1 1
-1 0 -1
1 -1 1
图像也只是像素值的矩阵。 若要应用筛选器,请将其“覆盖”在图像上,并计算筛选器内核下相应图像像素值的 加权和 。 然后,将该结果分配给新的值矩阵中等效于 3x3 像素块的中心单元格,这个新矩阵的大小与图像相同。 例如,假设 6 x 6 图像具有以下像素值:
255 255 255 255 255 255
255 255 100 255 255 255
255 100 100 100 255 255
100 100 100 100 100 255
255 255 255 255 255 255
255 255 255 255 255 255
将滤波器应用到图像左上角的 3x3 区域时,效果如下:
255 255 255 1 -1 1 (255 x 1)+(255 x -1)+(255 x 1) +
255 255 100 x -1 0 -1 = (255 x -1)+(255 x 0)+(100 x -1) + = 155
255 100 100 1 -1 1 (255 x1 )+(100 x -1)+(100 x 1)
结果将分配给新矩阵中的相应像素值,如下所示:
? ? ? ? ? ?
? 155 ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
现在,筛选器沿着(卷积)移动,通常使用的步长大小为 1(即向右移动一个像素),然后计算下一个像素的值
255 255 255 1 -1 1 (255 x 1)+(255 x -1)+(255 x 1) +
255 100 255 x -1 0 -1 = (255 x -1)+(100 x 0)+(255 x -1) + = -155
100 100 100 1 -1 1 (100 x1 )+(100 x -1)+(100 x 1)
因此,现在我们可以填写新矩阵的下一个值。
? ? ? ? ? ?
? 155 -155 ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
此过程将会重复进行,直到将筛选器应用到图像的所有 3x3 像素块上,从而生成如下所示的新的值矩阵:
? ? ? ? ? ?
? 155 -155 155 -155 ?
? -155 310 -155 155 ?
? 310 155 310 0 ?
? -155 -155 -155 0 ?
? ? ? ? ? ?
由于筛选器内核的大小,我们无法计算边缘像素的值;因此,我们通常只应用 填充 值(通常为 0):
0 0 0 0 0 0
0 155 -155 155 -155 0
0 -155 310 -155 155 0
0 310 155 310 0 0
0 -155 -155 -155 0 0
0 0 0 0 0 0
卷积的输出通常传递给激活函数,该函数通常是 整顿线性单元 (ReLU)函数,可确保负值设置为 0:
0 0 0 0 0 0
0 155 0 155 0 0
0 0 310 0 155 0
0 310 155 310 0 0
0 0 0 0 0 0
0 0 0 0 0 0
生成的矩阵是特征值 的特征图 ,可用于训练机器学习模型。
注意:特征图中的值可以大于像素(255)的最大值,因此,如果要将特征图可视化为图像,则需要将特征值 规范化 为 0 到 255。
卷积过程显示在下面的动画中。
- 图像传递到卷积层。 在这种情况下,图像是一个简单的几何形状。
- 图像由一个像素数组组成,其值介于 0 和 255 之间(对于颜色图像,这通常是一个三维数组,其值为红色、绿色和蓝色通道)。
- 筛选器内核通常使用随机权重进行初始化(在此示例中,我们选择了值来突出显示筛选器可能对像素值产生的效果;但在实际 CNN 中,初始权重通常从随机高斯分布生成)。 此筛选器将用于从图像数据中提取特征映射。
- 该筛选器在图像中卷积,通过应用权重之和乘以每个位置的相应像素值来计算特征值。 此过程中应用了一个修正线性单元 (ReLU) 激活函数,以确保将负值设置为 0。
- 卷积后,特征图包含提取的特征值,这些值通常强调图像的关键视觉属性。 在这种情况下,特征图突出显示图像中三角形的边缘和角。
通常,卷积层应用多个筛选器内核。 每个筛选器都会生成不同的特征图,所有特征映射都传递到网络下一层。
池化层
从图像中提取特征值后,使用 池 化(或 向下采样)层减少特征值的数量,同时保留提取的关键区分功能。
最常见的池化类型之一是最大池化,它将滤波器应用于图像,并且仅保留滤波区域内的最大像素值。 因此,例如,将 2x2 池化核应用到以下图像块将产生结果 155。
0 0
0 155
请注意,2x2 池筛选器的效果是将值数从 4 减少到 1。
与使用卷积层一样,池化层的工作原理是将筛选器应用于整个特征图。 以下动画展示了一个图像映射的最大池化示例。
- 卷积层中的筛选器提取的特征图包含特征值的数组。
- 池化内核用于减少特征值的数量。 在这种情况下,内核大小为 2x2,因此它将生成一个数组,其中包含四分之一的特征值数。
- 池化内核会在特征图中进行卷积,从而只保留每个位置中的最大像素值。
删除层
CNN 中最难解决的问题之一就是避免出现过度拟合。在过度拟合的情况下,生成的模型对训练数据表现良好,但不能很好地泛化到它没有接受过训练的新数据上。 一种可以用来减轻过拟合的技术是将训练过程随机消除(或“删除”)特征图的层包括在内。 这似乎是适得其反的,但它是确保模型不学会过度依赖训练图像的有效方法。
可用于缓解过度拟合的其他技术包括随机翻转、镜像或倾斜训练图像,以生成在不同训练周期中变化的数据。
平展层
使用卷积层和池层提取图像中的突出特征后,生成的特征映射是像素值的多维数组。 平展层用于将特征图展平为一个数值向量,该向量可用作全连接层的输入。
完全连接层
通常,CNN 以完全连接的网络结尾,其中特征值通过一个或多个隐藏层传递到输入层,并在输出层中生成预测值。
基本 CNN 体系结构可能如下所示:
CNN 由卷积层、池化层、舍弃层、平展层和全连接层组成
- 图像被馈送到卷积层中。 在这种情况下,有两个筛选器,因此每个图像生成两个特征映射。
- 特征图被传递到池化层,其中 2x2 的池化核会减小特征图的大小。
- 删除层会随机删除某些特征图,以帮助防止过拟合。
- 平展层利用剩余的特征图数组,并将它们平展为向量。
- 矢量元素将馈送到完全连接的网络中,从而生成预测。 在这种情况下,网络是一个分类模型,用于预测三个可能的图像类(三角形、方块和圆)的概率。
训练 CNN 模型
与任何深度神经网络一样,CNN 通过多个轮次传递一批批的训练数据,并根据每个轮次计算的损失调整权重和偏差值。 对于 CNN,调整后权重的反向传播包括卷积层中使用的筛选器内核权重以及完全连接层中使用的权重。