卷积神经网络

Convolutional neural networks

这种对卷积神经网络的直观理解是否正确: 1. 卷积基本上匹配图像的局部部分与卷积的相似程度 kernel/filter 2. kernel/filter 就像一个特征检测器。重要的是,它是 学习的 并通过 SGD

自动更改和优化

对 "how similar" 的 veeeeeeeeeeeery 粗略理解确实如此。如果您将 点积 的计算视为衡量相似性,那么答案是肯定的。为什么我个人有疑问?因为它在很大程度上取决于向量(或矩阵)的范数。让我们考虑图像

1 1 1
2 2 2
1 1 1

和内核

1 1 1
2 2 2
1 1 1

我们对它们进行卷积得到

1 + 1 + 1 + 2*2 + 2*2 + 2*2 + 1 + 1 + 1 = 18

现在让我们拍照

2 2 2
2 2 2
2 2 2

我们得到

2 + 2 + 2 + 2*2 + 2*2 + 2*2 + 2 + 2 + 2 = 24

我会说第一张图像比另一张图像更 与内核相似 ,但卷积说的是别的东西。因此这并不是那么简单,卷积只是图像的基本线性滤波,对信号进行卷积,将点积应用于子样本,但是称它为 "a similarity search" 有点过分了。然而,它是一个特征检测器,一个非常具体的检测器。

您在描述中遗漏的关于卷积的关键是这些检测器的共同性质,事实上,您学习 一组局部图像过滤器,应用于图像的每个 "spot",从而实现了一种位置不变性并大大减少了模型的参数化。

您提供的解释大致正确,但可以从一些详细说明中获益。

考虑卷积神经网络的一种方式是 location-independent 以分层方式堆叠的模式识别器。卷积运算通过在输入 space 的每个位置应用内核来影响 location-independence。

每个卷积层将识别特定特征(从训练中学习)。输出可以被认为是存在哪些特征以及在哪个位置的映射。

堆叠卷积层允许后续层识别更复杂的特征(您可以将体系结构中的每个卷积层视为识别特征,这些特征本身是前一层学习到的特征的组合)。

为了有效地训练这些网络,我们通常希望在接近输出分类器时 "funnel" 降低数据维度(在网络中从左向右移动)。这通常是通过 sub-sampling(通过池化操作(通常是最大,有时是平均)或通过卷积跨步,这涉及在抽取的卷积输出的评估)来牺牲一些空间信息的粒度可能输出位置的子集)。

一致地,卷积和池化操作学习输入的非线性投影 space。用数学术语来说,网络的 "deep" 卷积部分学习了从非常 highly-dimensional 输入 space(例如图像中的 RGB 像素)到 lower-dimensional 输出,它基本上传达了一组学习特征的发生率和位置(通常是原始空间或时间分辨率的一小部分)。

一旦我们有了这样的 low-dimensional 表示,这通常会被展平并馈送到 "traditional" fully-connected 网络中,该网络能够有效地在 ( comparatively) low-dimensional 由卷积层产生的抽象特征集。

从历史上看,许多分类方法依赖于复杂的 "feature engineering" 来执行与卷积层正在学习的内容类似的操作,以便轻松有效地训练分类器(可以是神经网络、随机森林、SVM 或任意数量的其他算法)。 ConvNets 的强大之处在于它们能够消除对特征工程的需求,并将特征学习任务与分类器的训练完全结合起来。