卷积神经网络中的卷积运算原理
卷积神经网络(CNN)中的卷积运算,是借鉴数学中 “卷积” 的思想并结合图像处理需求优化后的操作,核心目的是高效提取图像的局部特征(如边缘、纹理、形状等)。与数学中严格的卷积(带核翻转)略有不同,CNN 中通常使用 “互相关”(不翻转核),但习惯上仍称为 “卷积”。以下从原理、计算过程、核心特性三方面详细讲解:
一、CNN 卷积的核心目的:捕捉局部相关性
图像的特征具有局部相关性(例如,“边缘” 由相邻像素的亮度变化构成,“纹理” 由局部重复的图案构成)。卷积运算通过滑动窗口(卷积核) 对图像的局部区域进行计算,从而提取这些局部特征,同时通过 “参数共享” 大幅减少计算量。
二、卷积运算的基本要素
在 CNN 中,卷积运算涉及 4 个核心要素:
-
输入特征图(Input Feature Map)通常是二维图像(或上一层输出的特征图),形状记为 \(H \times W \times C\),其中:
- H:高度(像素数),W:宽度(像素数),C:通道数(如 RGB 图像的 3 个通道)。
-
卷积核(Kernel/Filter)一个小型矩阵(如 \(3 \times 3\)、\(5 \times 5\)),是特征提取的 “模板”,形状记为 \(kH \times kW \times C\),其中:
- kH:核的高度,kW:核的宽度(通常远小于输入的 H 和 W);
- 通道数 C 必须与输入特征图的通道数一致(每个通道对应一个子核);
- 核的每个元素是可学习的权重(类似 “模板” 的数值)。
-
步长(Stride)卷积核在输入特征图上每次滑动的像素数,记为 S(通常取 1、2)。步长越大,输出特征图尺寸越小。
-
填充(Padding)在输入特征图的边缘补 0 的层数,记为 P(通常取 0、1)。目的是控制输出特征图的尺寸(如保持与输入同尺寸)。
三、卷积运算的计算过程(以单通道输入为例)
假设输入是单通道图像 \(5 \times 5\)(\(H=5, W=5, C=1\)),卷积核是 \(3 \times 3\)(\(kH=3, kW=3, C=1\)),步长 \(S=1\),无填充(\(P=0\)),具体步骤如下:
步骤 1:对齐卷积核与输入的局部区域
将卷积核的左上角与输入图像的左上角对齐,覆盖输入的一个 \(3 \times 3\) 局部区域(如左上角第 1-3 行、第 1-3 列)。
步骤 2:计算 “元素相乘求和”
卷积核的每个元素与输入对应位置的像素值相乘,然后将所有乘积相加,得到输出特征图的第一个像素值。
例如:输入局部区域为:\(\begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix}\)卷积核为:\(\begin{bmatrix} w_1 & w_2 & w_3 \\ w_4 & w_5 & w_6 \\ w_7 & w_8 & w_9 \end{bmatrix}\)则第一个像素值为:\(\text{out}_1 = 1 \cdot w_1 + 2 \cdot w_2 + 3 \cdot w_3 + 4 \cdot w_4 + 5 \cdot w_5 + 6 \cdot w_6 + 7 \cdot w_7 + 8 \cdot w_8 + 9 \cdot w_9\)
步骤 3:滑动卷积核,重复计算
按步长 \(S=1\) 向右滑动卷积核,每次滑动 1 个像素,直到无法覆盖输入的 \(3 \times 3\) 区域(共滑动 \(5 - 3 + 1 = 3\) 次,得到第一行 3 个像素)。
然后向下滑动 1 个像素,重复上述过程,直到覆盖输入的所有局部区域。
步骤 4:得到输出特征图
最终输出特征图的尺寸计算公式为:\(\text{输出高度} = \frac{H - kH + 2P}{S} + 1, \quad \text{输出宽度} = \frac{W - kW + 2P}{S} + 1\)上述例子中,输出尺寸为 \(\frac{5 - 3 + 0}{1} + 1 = 3\),即 \(3 \times 3\) 的特征图。
四、多通道输入的卷积运算
当输入是多通道(如 RGB 图像,\(C=3\))时,卷积核也需对应 \(C=3\) 个通道(每个通道一个子核),计算过程变为:
- 每个通道的子核与输入对应通道的局部区域做 “元素相乘求和”,得到该通道的中间结果;
- 将所有通道的中间结果相加(叠加),得到输出特征图的一个像素值。
例如,输入 \(5 \times 5 \times 3\),卷积核 \(3 \times 3 \times 3\),则输出的一个像素是 3 个通道的子核计算结果之和。
五、CNN 卷积的核心特性(与全连接层对比)
- 局部感受野:卷积核只关注输入的局部区域(而非全局),符合图像局部特征的特性;
- 参数共享:同一个卷积核在输入上滑动时,权重不变(即所有位置的计算共享同一组核参数),大幅减少参数数量(例如,\(3 \times 3\) 核仅需 9 个参数,而全连接层对 \(5 \times 5\) 输入需 25 个参数);
- 平移不变性:同一特征(如边缘)在图像的不同位置,会被同一个卷积核检测到(因参数共享)。
六、与数学卷积的细微区别
数学中的卷积定义为 “翻转核后再滑动相乘求和”,而 CNN 中通常不翻转核(直接滑动相乘求和),这种操作严格来说是 “互相关(Cross-Correlation)”。但由于核的权重是可学习的(翻转后可通过学习调整权重补偿),实际效果等价,因此 CNN 中仍称为 “卷积”。
总结
CNN 中的卷积运算,本质是通过滑动的卷积核对输入的局部区域进行 “加权求和”,核心是利用 “局部感受野” 和 “参数共享” 高效提取图像的局部特征。这一机制使 CNN 在图像处理任务(如图像分类、目标检测)中远超传统全连接网络,成为计算机视觉的核心工具。