卷积神经网络介绍(CNN)-2

winterSky 2024-03-17 AM 685℃ 0条

2024-03-16T20:01:04.png

The Pooling Step(池化)

空间池化(也称为子采样或下采样)减少了每个特征图的维度,但保留了最重要的信息。空间池可以有不同的类型:Max、Average、Sum 等。

在最大池化的情况下,我们定义一个空间邻域(例如,2×2 窗口)并从该窗口内的校正特征图中获取最大元素。我们也可以取该窗口中所有元素的平均值(平均池化)或总和,而不是取最大的元素。在实践中,最大池化已被证明效果更好。
2024-03-16T20:02:22.png

我们将 2 x 2 窗口滑动 2 个单元格(也称为“步幅”)并获取每个区域中的最大值。如图 10所示,这减少了特征图的维数。

在图 11所示的网络中 , 池化操作分别应用于每个特征图(请注意,因此,我们从三个输入图得到三个输出图)。
2024-03-16T20:02:58.png
2024-03-16T20:03:14.png

池化的功能是逐步减小输入表示的空间大小[ 4 ]。特别是,汇集

  • 使输入表示(特征维度)更小且更易于管理
  • 减少网络中的参数和计算量,从而控制过拟合 [ 4 ]
  • 使网络对输入图像中的小变换、扭曲和平移保持不变(输入中的小扭曲不会改变池化的输出——因为我们采用局部邻域中的最大值/平均值)。
  • 帮助我们获得图像的几乎比例不变的表示(确切的术语是“等变”)。这是非常强大的,因为我们可以检测图像中的对象,无论它们位于何处

2024-03-16T20:05:13.png

2024-03-16T20:07:36.png

2024-03-16T20:12:22.png
到目前为止,我们已经了解了卷积、ReLU 和池化的工作原理。重要的是要了解这些层是任何 CNN 的基本构建块。如图 13所示,我们有两组卷积层、ReLU 层和池化层 - 第二个卷积层使用六个滤波器对第一个池化层的输出执行卷积,总共产生六个特征图。然后将 ReLU 单独应用于所有这六个特征图。然后,我们对六个校正后的特征图分别执行最大池化操作。

这些层一起从图像中提取有用的特征,在我们的网络中引入非线性并减少特征维度,同时旨在使特征在缩放和平移方面具有一定的等变性。


全连接层

全连接层是传统的多层感知器,在输出层中使用 softmax 激活函数(也可以使用 SVM 等其他分类器,但在本文中将坚持使用 softmax)。术语“完全连接”意味着前一层中的每个神经元都连接到下一层中的每个神经元。

卷积层和池化层的输出代表输入图像的高级特征。全连接层的目的是使用这些特征根据训练数据集将输入图像分类为各种类别。例如,我们要执行的图像分类任务有四种可能的输出,如下图 14所示(请注意,图 14 没有显示全连接层中节点之间的连接)
2024-03-16T20:13:59.png
除了分类之外,添加全连接层也是学习这些特征的非线性组合的(通常)廉价方法。卷积层和池化层的大多数特征可能有利于分类任务,但这些特征的组合可能会更好[ 11 ]。

全连接层的输出概率之和为1。这是通过在全连接层的输出层中使用Softmax作为激活函数来确保的。Softmax 函数采用任意实值分数的向量,并将其压缩为由 0 到 1 之间的值组成且总和为 1 的向量。


综合起来——使用反向传播进行训练

如上所述,卷积+池化层充当输入图像的特征提取器,而全连接层充当分类器。

注意,在下面的图15中 ,由于输入图像是一艘船,因此Boat类的目标概率为1,其他三个类的目标概率为0,即

  • 输入图像 = 船
  • 目标向量 = [0, 0, 1, 0]

2024-03-16T20:17:56.png

卷积网络训练过程总结

步骤1:初始化

  • 使用随机值初始化所有过滤器和参数/权重。

步骤2:前向传播

  • 网络将训练图像作为输入,执行前向传播步骤(卷积、ReLU 和池化操作以及全连接层中的前向传播),并找到每个类别的输出概率。
  • 例如,如果一幅船的图像的输出概率是 [0.2, 0.4, 0.1, 0.3],由于第一个训练示例的权重是随机分配的,因此输出概率也是随机的。

步骤3:误差计算

  • 计算输出层的总误差(所有4个类别的总和)。
  • 总误差 = Σ ½ (目标概率 – 输出概率)²

步骤4:反向传播和权重更新

  • 使用反向传播计算网络中所有权重的误差梯度,并使用梯度下降法更新所有滤波器值/权重和参数值,以最小化输出误差。
  • 根据它们对总误差的贡献按比例调整权重。
  • 当再次输入相同的图像时,输出概率现在可能是 [0.1, 0.1, 0.7, 0.1],这更接近于目标向量 [0, 0, 1, 0]。这意味着网络已经通过调整其权重/滤波器来正确分类该特定图像,从而减少输出误差。
  • 过滤器数量、过滤器大小、网络架构等参数在步骤1之前已全部固定,并且在训练过程中不会更改 - 仅更新过滤器矩阵和连接权重的值。

步骤5:重复所有训练图像

  • 对训练集中的所有图像重复步骤2-4。
  • 完成上述步骤后,卷积网络(ConvNet)的所有权重和参数现在都已经过优化,可以正确地对训练集中的图像进行分类。

当新的(未见过的)图像输入到ConvNet时,网络将经过前向传播步骤并输出每个类别的概率(使用经过优化以正确分类的权重计算)。如果我们的训练集足够大,网络将能够很好地推广到新图像并将它们分类到正确的类别。

注1:上述步骤过于简化,并且避免了数学细节,旨在为训练过程提供直观的理解。请参阅相关文献以了解数学公式和深入理解。

注2:在上述示例中,我们使用了两组交替的卷积层和池化层。但请注意,这些操作可以在单个ConvNet中重复任意多次。实际上,一些当今性能最佳的ConvNet拥有数十个卷积层和池化层!此外,每个卷积层之后并不一定需要有一个池化层。在进行Pooling操作之前,可以连续进行多个Convolution + ReLU操作。


2024-03-16T20:24:16.png

2024-03-16T20:26:02.png

标签: none

非特殊说明,本博所有文章均为博主原创。

评论啦~