游乐游手机版
首页/AI热点日报/热点详情

深度学习各种卷积原理解析全面解读

类型:热点整理2026-07-16
卷积几乎是深度学习领域无法回避的核心概念,但真正透彻理解它的人并不多——不仅要掌握其基本定义,还要厘清那些层出不穷的变种究竟如何运作。研究者Kunlun Bai曾撰写过一篇条理清晰的综述,用直观的方式拆解了深度学习中常见的卷积类型。如果你曾被2D卷积、3D卷积、1×1卷积、转置卷积、扩张卷积、空间可

卷积几乎是深度学习领域无法回避的核心概念,但真正透彻理解它的人并不多——不仅要掌握其基本定义,还要厘清那些层出不穷的变种究竟如何运作。研究者Kunlun Bai曾撰写过一篇条理清晰的综述,用直观的方式拆解了深度学习中常见的卷积类型。如果你曾被2D卷积、3D卷积、1×1卷积、转置卷积、扩张卷积、空间可分卷积、深度可分卷积、平展卷积、分组卷积以及混洗分组卷积这些术语搞得晕头转向,那么本文恰好能帮你梳理它们的工作逻辑与适用场景。

以下是文章的核心脉络,先列出目录,方便后续对照查阅:

目录
1.卷积与互相关
2.3D卷积
3.转置卷积(去卷积)
4.扩张卷积(Atrous卷积)
5.可分卷积(空间可分卷积,深度可分卷积)
6.分组卷积

卷积与互相关

在信号处理、图像处理以及其他工程科学领域中,卷积是一项基础技术。深度学习中的卷积神经网络(CNN)之所以得名,正是因为它引入了卷积操作。不过严格来说,深度学习里实际使用的运算是信号/图像处理中的互相关(cross-correlation),两者之间有一个细微但关键的差别。

在信号/图像处理中,卷积的定义是:将两个函数中的一个反转并平移后,再与另一个函数相乘并求积分。下面这张图可以直观展示这一过程:

信号处理中的卷积:过滤器g先被反转,然后沿水平轴滑动。在每个位置,计算f与反转后的g相交区域的面积,该面积即为该位置的卷积值。

而互相关则是直接对两个函数做滑动点积或滑动内积,过滤器无需反转,直接滑过函数f。下图清晰对比了两者的区别:

信号处理中卷积与互相关的差异

在深度学习中,卷积操作中的过滤器并不反转。从数学角度看,这本质上是互相关——我们执行的是逐元素相乘再求和。但业界习惯称之为“卷积”,因为过滤器的权重是在训练过程中学习出来的:如果反转才是正确的操作,那么训练完成的过滤器自然就会呈现出反转后的形态。因此,训练前无需多此一举去反转过滤器。

3D卷积

前面提到,通常所说的2D卷积实际上是对一个3D体积(高×宽×通道)进行卷积,但过滤器只沿高度和宽度两个方向移动,输出是一张2D图像(单通道)。

真正的3D卷积是2D卷积的扩展:过滤器的深度小于输入层的通道数,因此它可以在高度、宽度、通道三个方向上滑动。在每个位置,逐元素乘法和加法得到一个数值,由于过滤器扫过的是3D空间,输出自然地排布成3D数据。

3D卷积:过滤器在所有三个方向上移动,输出也是3D数据

2D卷积擅长捕捉二维空间中的结构关系,而3D卷积则能描述三维空间中的空间关系。这在生物医学影像(如CT、MRI)中尤其有价值——像血管这类目标在三维空间里蜿蜒曲折,用3D卷积进行分割或重构,效果远非2D可及。

转置卷积(去卷积)

许多网络架构需要执行与普通卷积相反的变换——将特征图放大,即上采样。典型场景包括生成高分辨率图像,或者语义分割中将低维特征图映射回原始尺寸,以便对每个像素进行分类。

传统上,上采样依赖插值或人工规则。但神经网络更倾向于让模型自行学习如何完成这一任务,转置卷积正是为此而生。它也被称为“去卷积”或fractionally strided convolution。不过需要澄清:“去卷积”这个名称并不准确,因为信号处理中的去卷积是卷积的逆运算,而转置卷积并非如此。有人强烈反对这种叫法,但因其简洁易用,许多人仍沿用。从实现角度看,“转置卷积”这个名称更为贴切。

转置卷积完全可以用标准卷积来实现。例如下面这个例子:在2×2的输入周围添加2×2的零填充,用3×3的核以步长为1执行转置卷积,输出为4×4:

将2×2输入上采样为4×4输出

调整填充和步长,同样的2×2输入可以映射成不同的输出尺寸。下面这个例子在输入之间插入零,输出变为5×5:

将2×2输入上采样为5×5输出

从这些例子可以建立直观理解,但要真正领会“转置”的含义,最好通过矩阵乘法来看待。在普通卷积中,设C为卷积核,Large为输入,Small为输出,则有:C × Large = Small。这个矩阵乘法将大图像下采样为小图像。下面的例子展示了具体过程:将输入展平为16×1的矩阵,卷积核转为稀疏矩阵(4×16),做乘法后得到4×1矩阵,再reshape为2×2输出。

卷积的矩阵乘法:将4×4输入转为2×2输出

如果等式两边都乘以转置矩阵Cᵀ,利用“矩阵与其转置相乘得单位矩阵”的性质,就得到Cᵀ × Small = Large。见下图:

转置卷积的矩阵乘法:将2×2输入转为4×4输出

这下就清楚了:从小图像到大图像的转换,正是通过卷积核的转置来实现的。“转置卷积”也因此得名。更详细的数学推导可参考论文《A guide to convolution arithmetic for deep learning》(arXiv:1603.07285)。

扩张卷积(Atrous卷积)

扩张卷积由两篇论文引入(arXiv:1412.7062;arXiv:1511.07122)。标准离散卷积的公式如下:

扩张卷积则变为:

当扩张率l=1时,扩张卷积就是标准卷积。直观上,它通过在核元素之间插入空格来“膨胀”核。参数l控制膨胀程度,通常是在核元素间插入l-1个空格。下图展示了l=1,2,4时的核大小:

扩张卷积的感受野:注意红点表示输出图像大小为3×3像素。虽然三个输出尺寸相同,但感受野差别巨大——l=1时感受野为3×3,l=2时变为7×7,l=3时直接跃升至15×15。关键是,参数数量保持不变!也就是说,无需额外参数成本,就能“看到”更大的范围。这在多个扩张卷积层堆叠时尤为有用。

论文《Multi-scale context aggregation by dilated convolutions》的作者构建了一个网络,每层扩张率按指数增长,使得感受野随层数指数扩大,而参数仅线性增加。这种设计能够系统地聚合多尺度的上下文信息,同时不损失分辨率,显著提升了当时(2016年)语义分割的准确度。

可分卷积

可分卷积有两种类型:空间可分卷积和深度可分卷积。MobileNets等轻量网络大量使用了后者。

1. 空间可分卷积

空间可分卷积将2D卷积拆分为两个独立步骤:先沿一个方向做卷积,再沿另一个方向做。例如,3×3的Sobel核可以分解成一个3×1核和一个1×3核:

Sobel核分解为3x1和1x3核

使用分解后的两个核,仅需6个参数(3+3),而原来的3×3核需要9个。乘法次数也更少。具体计算:对5×5图像做3×3卷积(步幅1,无填充),标准卷积需要81次乘法(9个位置×每个位置9次乘法)。空间可分卷积先做3×1:水平5个位置×垂直3个位置=15个位置,每个位置3次乘法,共45次;得到3×5中间结果后,再做1×3:水平3个位置×垂直3个位置=9个位置,每个位置3次乘法,共27次。总计72次,比标准卷积少。

标准卷积(单通道)

空间可分卷积(单通道)

推广到一般情况:对N×N图像使用m×m核(步幅1,无填充),标准卷积需(N-2)²×m²次乘法,空间可分卷积需N×(N-2)×m + (N-2)²×m次。两者比值约为2/m(当N远大于m时)。也就是说,3×3核可节省约1/3的计算量,5×5核节省3/5,7×7核节省5/7。

但深度学习领域很少使用空间可分卷积,因为并非所有核都能分解成两个更小的核。如果强制替换,会限制训练过程中可搜索的核空间,得到的模型往往是次优的。

2. 深度可分卷积

深度可分卷积则更为常用(MobileNet、Xception都是典型应用)。它分为两步:深度卷积 + 1×1卷积。

先回顾标准2D卷积。假设输入为7×7×3,使用128个3×3×3的滤波器,输出为5×5×128(空间维度缩小,通道数增加)。

单个过滤器的2D卷积得到5×5×1输出

128个过滤器得到5×5×128输出

现在用深度可分卷积实现相同的变换:

第一步,深度卷积。不使用3×3×3的单一过滤器,而是分开使用3个3×3×1的核,每个只与输入的一个通道卷积。这样得到3个5×5×1的映射图,堆叠成5×5×3。空间维度缩小了,但深度未变。

深度可分卷积第一步:深度卷积

第二步,用1×1卷积扩展深度。将5×5×3的输入与128个1×1×3的核分别卷积,得到128个5×5×1的映射图,再堆叠成5×5×128。

深度可分卷积第二步:1×1卷积

整个过程可参考下图:

深度可分卷积完整过程

效率优势非常明显。标准2D卷积需要128×3×3×3×5×5=86400次乘法。深度可分卷积第一步:3×3×3×1×5×5=675次;第二步:128×1×1×3×5×5=9600次,总计10275次,仅为标准卷积的12%!

推广到一般情况:输入为H×W×D,使用Nc个h×h×D的核做2D卷积,总乘法次数为Nc×h²×D×(H-h+1)×(W-h+1)。深度可分卷积为D×h²×1×(H-h+1)×(W-h+1) + Nc×1×1×D×(H-h+1)×(W-h+1) = (h²+Nc)×D×(H-h+1)×(W-h+1)。两者比值约为1/h²(当Nc >> h时)。因此使用3×3滤波器,深度可分卷积比标准卷积快约9倍;使用5×5则快约25倍。

代价是什么呢?参数数量大幅减少。对于小模型,直接替换可能导致模型容量下降,性能变差。但如果运用得当——例如在大模型或平衡良好的架构中——深度可分卷积能在不牺牲准确率的前提下大幅提升效率。

分组卷积

分组卷积最早出现在2012年的AlexNet论文中。当时两个GPU各只有1.5GB内存,为了在双GPU上训练,AlexNet将大部分卷积层分为两条独立的路径。下图展示了这种并行结构:

来自AlexNet论文的图

分组卷积的工作方式非常直观。标准2D卷积中,输入层Hin×Win×Din通过Dout个h×w×Din的核变换为Hout×Wout×Dout。分组卷积则将过滤器分成若干组,每组只负责输入的一部分通道。例如下图展示了两组的情况:

两个过滤器分组的分组卷积

每组里的过滤器深度只有标准的一半(Din/2),每组有Dout/2个过滤器。第一组(红色)与输入的前一半通道卷积,第二组(橙色)与后一半通道卷积。最终两组输出堆叠起来,通道数正好为Dout。

分组卷积与深度卷积的关系:如果分组数等于输入通道数,那么每组的过滤器深度就是1,这与深度卷积类似。但区别在于,每组包含Dout/Din个过滤器,输出深度为Dout,而深度卷积不改变通道数(深度可分卷积需依赖后面的1×1卷积来扩展)。

分组卷积具有多个优点。首先是训练效率:不同组可在不同GPU上并行计算,实现模型并行化。与数据并行化(将数据分批次)相比,模型并行化在处理超大模型时更具优势,因为过小的batch size会使梯度下降收敛变慢。ResNeXt论文中,分组卷积对训练极深网络起到了关键作用。

来自ResNeXt论文

第二个优点是参数效率。标准2D卷积有h×w×Din×Dout个参数,两组分组卷积只有(h×w×Din/2×Dout/2)×2个参数,直接减半。

第三个优点有些反直觉:分组卷积有时能带来比标准卷积更好的模型。原因与稀疏过滤器的关系有关。下面这张图展示了相邻层过滤器的相关性矩阵,可以看到相关性是稀疏的:

在CIFAR10上训练的Network-in-Network模型中,相邻层过滤器的相关性矩阵(高相关亮,低相关暗)。图片来自:https://blog.yani.io/filter-group-tutorial

当使用不同数量的过滤器分组(1,2,4,8,16)训练时,相关性矩阵的变化如下:

图片来自同一博客

博客作者推断:“过滤器分组的效果是在通道维度上学习块对角结构的稀疏性……高相关性的过滤器通过分组被更结构化地学习。那些不必学习的过滤器关系不再被参数化,从而减少参数数量,降低过拟合风险,产生类似正则化的效果,让优化器学到更准确高效的网络。”

此外,每个过滤器分组似乎会学习数据的不同表征。AlexNet的作者发现,第一个卷积层的过滤器被结构性地分成了两组——一组偏向黑白,一组偏向彩色:

来自AlexNet论文

至此,我们遍历了深度学习中几种核心卷积类型的原理与特点。从基础定义到各种创新变种,每一种都在特定场景下发挥着不可替代的作用。如果你还有其他想深入了解的卷积变体,或者在应用中遇到过有趣的案例,欢迎继续探讨。

来源:https://m.elecfans.com/article/2159654.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。