正文
本文主要介绍笔者对卷积在数学上的理解,以及其在神经网络中的初步应用。
1. 卷积的数学定义
在数学上,我们定义函数 $f$ 对 $g$ 的卷积为 $f \star g$,其定义式为:
连续形式
$$ (f \star g)(x) = \int_{-\infty}^{\infty} f(\tau) g(x - \tau) \, d\tau $$离散形式
$$ (x \star y)[n] = \sum_{m=-\infty}^{\infty} x[m] y[n-m] $$二维离散形式(深度学习中常用)
$$ (X \star K)[i, j] = \sum_{a=-\infty}^{\infty} \sum_{b=-\infty}^{\infty} K[a, b] X[i-a, j-b] $$其中 $K$ 被称为卷积核或滤波器。
从定义可以看出,数学上的卷积操作通常作用于函数的整个定义域(如 $f(x)$ 的全部取值范围)。但在深度学习中,若对输入图像的每个像素及其所有通道都进行如此完整的数学卷积,其计算成本是难以承受的。即使仅对有限输入进行全连接计算,一张1080×720的图像也可能带来 $10^{10}$ 数量级的运算量。那么,我们如何在保证模型效果的前提下,有效减少计算量呢?
2. 卷积在卷积神经网络(CNN)中的应用
在前文介绍多层感知机(MLP)时,我们所使用的网络层均为全连接层,即输出层每个节点的值都由输入层所有节点的值乘以对应权重后求和得到(此处省略偏置项)。当输入为一维向量且特征数量较少时,这种设计简单有效,权重仅为一个小型矩阵,计算量可控。但当输入变为图像等多维矩阵时,输出层每个节点都需要一组独立的权重,导致权重矩阵的维度迅速膨胀为四维,计算量呈爆炸式增长。为了解决这一问题,卷积核 的概念被引入,卷积神经网络(CNN)应运而生。
2.1. 卷积核
当我们尝试使用多层感知机处理二维输入时,设输入为 $X$,权重为 $W$,则输出 $H$ 可表示为:
$$ H[i, j] = \sum_{k} \sum_{l} W_{i, j, k, l} X[k, l] \qquad(1) $$也可以写为:
$$ H[i, j] = \sum_{a} \sum_{b} W_{i, j, a, b} X[i-a, j-b] \qquad(2) $$在公式 (2) 中,我们用 $i-a$ 和 $j-b$ 替代了 $k$ 和 $l$,将输出 $H[i, j]$ 与输入 $X$ 的关联方式,由基于绝对坐标 $(k, l)$ 转变为基于相对坐标 $(i-a, j-b)$。此时,$H[i, j]$ 的值由 $X$ 上距离 $(i, j)$ 偏移量为 $(a, b)$ 的元素决定。这实际上体现了卷积的一个重要性质——平移不变性。
在此基础上,我们可以进一步限制 $a$ 和 $b$ 的取值范围,使 $H[i, j]$ 的值仅由输入 $X$ 中位于 $(i, j)$ 附近的一个局部区域决定。这不仅大幅减少了计算量,也更符合图像的直观特征(例如,图像左上角的像素点对右下角像素的预测通常贡献不大)。这就是局部性原则,而限定范围的 $W$ 就是卷积核:
$$ a, b \in [-\delta, \delta], \quad \delta \text{ 为一个较小的正整数} $$此时的输出 $H[i,j]$ 为:
$$ H[i, j] = \sum_{a=-\delta}^{\delta} \sum_{b=-\delta}^{\delta} W_{a,b} X_{i-a, j-b} $$2.2. 常用算子示例(图像处理)
以下列举一些传统图像处理中常用的算子及其卷积核(即上文中的 $W$)。有趣的是,在训练卷积神经网络时,浅层网络常常会学习到与这些算子相似的卷积核,这体现了数学理论与工程实践的美妙契合。
2.2.1. 高斯算子(用于图像平滑、降噪)
$$ \frac{1}{16} \times \begin{bmatrix} 1 & 2 & 1 \\ 2 & 4 & 2 \\ 1 & 2 & 1 \end{bmatrix} $$2.2.2. Sobel算子(用于简单边缘检测)
垂直边缘检测
$$ \begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix} $$水平边缘检测
$$ \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} $$2.2.3. 拉普拉斯算子(用于边缘与斑点检测)
变体1
$$ \begin{bmatrix} 0 & -1 & 0 \\ -1 & 4 & -1 \\ 0 & -1 & 0 \end{bmatrix} $$变体2
$$ \begin{bmatrix} -1 & -1 & -1 \\ -1 & 8 & -1 \\ -1 & -1 & -1 \end{bmatrix} $$尾声
- 本文侧重于从数学角度理解卷积,并将其与深度学习中的卷积神经网络相联系。深度学习的实现离不开扎实的数学基础,理解这些核心概念有助于更好地设计和优化模型。笔者仍在学习中,对数学与深度学习的理解尚浅,若文中有疏漏或错误之处,欢迎批评指正!

![[更新中] 深度学习神经网络设计基础 2.卷积的理解](/images/tenshi/tenshi_cool1_1920x1080.jpg)