卷积神经网络中的卷积步骤是做什么的?

机器算法验证 神经网络 深度学习 卷积神经网络 卷积
2022-01-23 22:35:33

我正在研究卷积神经网络 (CNN),因为它们在计算机视觉中的应用。我已经熟悉标准的前馈神经网络,所以我希望这里的一些人可以帮助我在理解 CNN 方面迈出额外的一步。以下是我对 CNN 的看法:

  1. 在传统的前馈 NN 中,我们有训练数据,其中每个元素都包含一个特征向量,我们在“输入层”中输入到 NN,因此对于图像识别,我们可以让每个像素成为一个输入。这些是我们的特征向量。或者,我们可以手动创建其他(可能更小)特征向量。
  2. CNN 的优势在于它可以生成更强的特征向量,这些特征向量对图像失真和位置更加不变。如下图所示(来自本教程),CNN 生成特征图,然后将其馈送到标准神经网络(因此实际上这是一个巨大的预处理步骤)。

在此处输入图像描述

  1. 我们获得那些“更好”特征的方法是交替卷积和子采样。我了解子采样的工作原理。对于每个特征图,只取像素的一个子集,或者我们可以平均出像素的值。

但我主要困惑的是卷积步骤是如何工作的。我熟悉概率论中的卷积(两个随机变量之和的密度),但它们在 CNN 中是如何工作的,为什么它们有效?

我的问题与类似,但特别是,我不确定为什么第一个卷积步骤有效。

2个回答

我将首先尝试分享 CNN 背后的一些直觉,然后评论您列出的特定主题。

CNN 中的卷积和子采样层与普通 MLP 中的隐藏层没有什么不同,即它们的功能是从输入中提取特征。然后将这些特征提供给下一个隐藏层以提取更复杂的特征,或者直接提供给标准分类器以输出最终预测(通常是 Softmax,但也可以使用 SVM 或其他任何方法)。在图像识别的上下文中,这些特征是图像处理,如下层中的笔划图案和上层中的对象部分。

在自然图像中,这些特征往往在所有位置都是相同的。识别图像中间的某个笔画图案与识别它靠近边界一样有用。那么为什么我们不复制隐藏层并在输入图像的所有区域连接它的多个副本,以便可以在任何地方检测到相同的特征呢?这正是 CNN 所做的,但以一种有效的方式。在复制(“卷积”步骤)之后,我们添加了一个子样本步骤,它可以通过多种方式实现,但无非是一个子样本。从理论上讲,这一步甚至可以删除,但在实践中,这对于让问题保持可控是必不可少的。

因此:

  1. 正确的。
  2. 如上所述,CNN 的隐藏层是与常规 MLP 一样的特征提取器。交替的卷积和子采样步骤是在训练和分类期间完成的,因此它们不是在实际处理“之前”完成的。我不会称它们为“预处理”,就像 MLP 的隐藏层不这样称呼一样。
  3. 正确的。

有助于理解卷积的好图像是 ULFDL 教程中的 CNN 页面。考虑一个具有单个神经元的隐藏层,该神经元经过训练可以从3×3补丁。如果我们将这个单一的学习特征卷积在一个5×5图片,这个过程可以用下面的gif来表示:

在此处输入图像描述

在这个例子中,我们在特征提取层中使用了一个神经元,我们生成了9卷积特征。如果我们在隐藏层中有更多的单元,就很清楚为什么需要在这之后的子采样步骤。

随后的卷积和子采样步骤基于相同的原理,但计算的是在前一层提取的特征,而不是原始图像的原始像素。

我不知道“为什么第一个卷积步骤有效”是什么意思。为了使 CNN 成功,它需要有很多层。CNN 和许多其他深度学习方法背后的基本思想之一是,可以通过可以稀疏表示的较小部分的空间相关性来识别较大的信号。换句话说,图像可能看起来很复杂,但它们是由几个基本部分组合而成的。对于计算机视觉,图像中的基线结构通常由边和角组成。CNN 试图通过寻找常见的局部结构来利用图像中结构的稀疏性。这就是 CNN 的第一层试图确定的内容。将卷积视为匹配过滤器,它正在寻找与特定模板匹配的信号。它的效果如何取决于手头的数据。幸运的是,这个世界充满了小规模的重复,因此 CNN 非常适合计算机视觉任务。