在这些应用领域中,卷积通常作为滤波器使用,将信号和像素转换为更理想的数值。
在高性能计算中,卷积模式通常被称为模板计算。卷积通常会对每个数据元素执行大量的算术运算。每个输出数据元素都可以独立计算,这是并行计算的一个理想特性。另一方面,输出数据元素之间存在大量的输入数据共享,且边界条件较为复杂。这使得卷积成为复杂分块方法和输入数据调度方法的一个重要应用场景。
卷积是一种数组运算,其中每个输出数据元素都是相邻输入元素集合的加权和。加权求和计算中使用的权重由输入掩码数组定义,通常称为卷积核。我们将这些掩码数组称为卷积掩码。通常,数组的所有元素都使用相同的卷积掩码
下面展示了一个一维数据的卷积示例,其中将5元卷积掩码数组 M 应用于7元输入数组 N。
在图像处理和计算机视觉中,输入数据通常是二维数组,像素位于 x‑y 平面。因此图像卷积为二维卷积。掩码不必是方形数组。
1.从一维卷积到二维卷积
你知道一维卷积:
- 输入: 一维数组(例如
[x0, x1, x2, ...]) - 卷积核: 小型一维数组(例如
[w0, w1, w2]) - 操作:滑动内核并计算加权和。
对于图像,输入是二维的(高度 × 宽度),因此:
- 像素矩阵,形状为
H × W - 内核: 小型矩阵,例如
3 × 3或5 × 5 - 操作: 将内核在图像的每个
3 × 3图像块上滑动,逐元素相乘并求和 → 得到一个输出像素。
这和你已经知道的想法完全一样,但是:
- 数组 → 二维数组(矩阵)。
- 相邻的“元素” → 二维中的相邻像素。
2.多个通道(例如,RGB)
真实图像不仅仅是二维的,它们通常具有通道:
- 形状:
H × W × C(例如,C = 3表示 R、G、B)。 - 然后,一个核也具有深度
C:- 形状:
kH × kW × C。
- 形状:
卷积步骤:
- 对于一个位置,你取一个小立方体:
kH × kW × C。 - 与核
kH × kW × C逐元素相乘。 - 将所有值相加 → 1 个数值(该位置处的输出通道值)。
因此,从概念上讲:对空间和通道进行3D卷积,但仍然只是“邻域的加权求和”。
3.滤波器(核)与特征图
在卷积神经网络中,并非只使用一个卷积核,而是使用多个:
- 假设你使用了
F个不同的卷积核。 - 每个卷积核的形状为
kH × kW × C_in。 - 每个卷积核生成一个输出通道,称为特征图。
因此,如果输入形状为:
H × W × C_in,
如果你使用 F 内核,输出形状将变为:
H_out × W_out × F
每个 F 输出通道捕捉不同类型的模式:
- 一个内核可能学会检测边缘,另一个检测角点,还有一个检测纹理,等等。
思考: “CNN层 = 对输入应用多种不同的卷积(滤波器)。”
4.步长和填充
两个与数组相关的细节:
- 步长: 内核在每一步移动的距离。
- 步长1:每次移动1像素 → 密集输出。
- 步幅2:跳过每个像素 → 输出更小。
- 填充: 在图像周围添加零。
- 没有填充,输出会变小。
- 使用填充,您可以保持相同的高度/宽度。
从数学角度来看,它仍然是滑动窗口和点积,但可以通过以下方式实现控制:
- 你滑得多远(迈步)。
- 你是否丢失了边框信息(填充)。
5.非线性:添加激活函数
到目前为止,一切都是线性的:加权求和。CNN层增加了非线性:
- 卷积后,逐元素应用激活函数 (例如,
ReLU(x) = max(0, x))。
因此,单个卷积层是:
- 卷积(线性加权求和)。
- 激活(非线性)。
这种组合使卷积神经网络能够学习复杂的非线性映射。
6.堆叠层 → 深层特征层次
一个完整的 CNN 仅仅是许多层的:
- 卷积 → 激活(→ 有时池化)。
直觉:
- 早期层:检测简单的特征(如边缘、斑点)。
- 中间层:将它们组合成纹理和形状。
- 后续层:将形状组合成物体部件和物体。
所有这些仍然基于你理解的那个原始元素构建: “取局部邻域并计算加权和。”
7.连接到全连接(稠密)层
全连接层也只是加权求和:
- 一维向量。
- 输出单位 = (权重 × 输入) + 偏置。
差异
- 全连接层:每个输出单元都使用所有输入元素。
- 卷积层:每个输出单元仅使用一个局部邻域(稀疏连接),并在位置上共享权重。
因此可以将CNN视为:
- 一种巧妙运用卷积操作的方法,可以得到:
- 局部性(邻近像素具有更高权重)。
- 权重共享(在所有位置使用相同的卷积核)。
- 比在完整图像上使用的密集层参数更少。
结论:从简单操作到强大网络
"At each position, take neighbors and compute a weighted sum with a kernel,"
那么已经站在CNN核心思想的基础上。
卷积神经网络采用这种简单的构建模块,并:
- 将一维数组扩展至二维/三维张量。
- 并行应用多种不同的卷积核以生成丰富的特征图。
- 添加非线性因素,以摆脱纯粹线性。
- 堆叠许多这样的层,使得每一阶段“看到”更抽象的结构。
CNN 的魔力并非全新数学,而是将大量小尺度、局部的卷积操作组合成深层结构,从而学习出强大的视觉表征。