跳到正文
AI 知识地图 0.18 · 2026-07-30
关于与纠错文字目录 / Search
理解原理

卷积神经网络 CNN:让同一个局部检测器扫遍空间

从离散卷积、权重共享和输出形状,到感受野、采样混叠、平移等变与现代视觉骨干。

核心命题 CNN 用局部连接和权重共享把同一模式检测器应用于所有位置,以较少参数建立平移等变归纳偏置。多层堆叠把边缘组合成纹理、部件和对象;但下采样会丢位置与高频,全局关系需要深层、空洞、注意力或多尺度路径
读完你应该能:手算一次二维卷积;计算输出尺寸和参数量;区分等变与不变;推导感受野并识别下采样混叠。
  1. 局部窗口进入共享卷积核
  2. 通道内积产生特征图
  3. 非线性堆叠扩大感受野
  4. 下采样形成多尺度层级
  5. 任务头聚合或恢复空间输出
  6. 以变换、尺度和边界切片验收

1卷积是滑动窗口上的共享内积核心机制

卷积层要解决的核心问题,是让同一个局部模式检测器能够在输入的不同空间位置上重复工作。输入是特征图 X,输出是特征图 Y。对于输出位置 (i,j) 和输出通道 o,计算为:

Y[i,j,o] = Σᵤ,ᵥ,𝚌 K[u,v,c,o] × X[i+u,j+v,c] + b[o]

这里,i、j 指定输出中的空间位置,o 指定输出通道;u、v 枚举卷积核窗口内的位置,c 枚举输入通道。计算时先从 X 中取出以当前位置为基准的局部窗口,再把窗口内每个元素与核 K 中对应的权重逐项相乘,最后跨窗口位置和全部输入通道求和,并加上该输出通道的偏置 b[o]。因此,一个输出值就是“当前局部窗口与某个核有多匹配”的带符号响应。

关键机制是权重共享:同一组 K 不会随着 i、j 改变,而是在所有空间位置重复使用;它只区分输入通道 c 和输出通道 o。局部连接避免每个输出都连接整张输入,权重共享又避免为每个位置学习一套独立参数。于是,当相同局部模式从图像的一处移动到另一处时,同一个核仍会检测它,响应的位置也随之移动。

以 3×3 灰度图 X = [[1,2,0],[0,3,1],[2,1,0]] 和 2×2 核 K = [[1,0],[0,−1]] 为例,采用步幅 1、无填充。核会依次覆盖输入中的每个 2×2 局部窗口;每到一个位置,都执行同样的逐项相乘与求和。核中的 1 强调窗口左上角,−1 抑制右下角,两个 0 表示另外两个位置不直接贡献。因此输出的正负表示该局部结构相对于核的响应方向,绝对值反映响应强度,但不能仅凭正负值就断言它对应某个具有固定名称的对象。

许多深度学习库实际执行的是不翻转核的互相关运算,但惯例上仍称为卷积。理解卷积层时,重要的是局部窗口、逐项乘加和空间共享这三件事,而不是核是否在计算前翻转。

Y[i,j,o]=Σu,v,cK[u,v,c,o]X[i+u,j+v,c]+b[o]

2四个窗口得到一张 2×2 特征图手算

对 3×3 输入使用 2×2 核、步幅 1 且不填充时,核在水平方向和垂直方向各能停留两个位置,因此一共形成四个局部窗口,输出是一张 2×2 特征图。核 K = [[1,0],[0,−1]] 只比较每个窗口的左上角与右下角:左上角乘 1,右下角乘 −1,另外两个位置乘 0,所以每个内积都可写成“左上角数值 − 右下角数值”。

四个窗口的计算依次为:

输出位置输入窗口内积
(0,0)[[1,2],[0,3]]1 − 3 = −2
(0,1)[[2,0],[3,1]]2 − 1 = 1
(1,0)[[0,3],[2,1]]0 − 1 = −1
(1,1)[[3,1],[1,0]]3 − 0 = 3

把这些结果按窗口的空间位置排列,就得到:

Y = [[1−3, 2−1],[0−1, 3−0]] = [[−2,1],[−1,3]]

这张特征图保留了核在各个位置的响应分布。正值表示窗口左上角比右下角更亮,负值表示右下角比左上角更亮,绝对值越大说明两者差异越明显。例如右下输出 3 来自 3 − 0,表示该窗口沿这条对角线存在较强的正向亮度差;左上输出 −2 来自 1 − 3,表示差异方向相反。

这些数值只描述输入局部结构与当前核之间的关系,不能直接解释为“发现了某个对象”。实际训练会依据任务损失学习许多不同的核,再把它们产生的响应经过非线性变换和后续层组合,逐步形成更复杂的表示。

Y=[[1−3, 2−1],[0−1, 3−0]]=[[-2,1],[-1,3]]

3步幅、填充和膨胀决定输出几何形状

卷积层的输出尺寸由输入长度、核宽度、填充、步幅和膨胀共同决定。沿任意一个空间轴,输出长度为:

out = ⌊(in + 2p − d(k−1) − 1) ÷ s⌋ + 1

其中,in 是输入长度,out 是输出长度,k 是核宽度,p 是两侧的填充量,s 是步幅,d 是膨胀率。d(k−1)+1 是膨胀后卷积核的有效覆盖宽度;输入两侧各填充 p 后,可用长度变成 in+2p;步幅 s 决定相邻窗口起点之间的距离。向下取整表示末端不足以满足规则的窗口不会被计入。

例如,对 32×32 输入采用 k=3、p=1、s=2、d=1 的卷积,每个空间轴的长度为:

out = ⌊(32 + 2 − 2 − 1) ÷ 2⌋ + 1 = 16

因此输出空间尺寸是 16×16。这个计算必须在网络结构设计时精确匹配,因为残差相加等操作要求参与运算的张量形状一致;任一空间轴差一格,都无法直接逐元素相加。

填充 p 在输入边缘补入额外位置,可以保留更多边缘信息,也常用于控制输出尺寸,但填充值会引入原始输入中不存在的人工边界。所谓 same padding 通常指步幅 s=1 时使输出尺寸保持不变;当卷积核宽度为偶数或 s>1 时,左右两侧需要的填充可能不对称,不同框架的具体分配规则也可能不同,不能只凭“same”推断每一侧的填充量。

步幅 s 控制窗口每次移动的距离。增大步幅会缩小输出,实现下采样,但也可能造成混叠或丢失小目标。膨胀率 d 则在核元素之间拉开采样间隔,在不直接增大核参数表的情况下扩大覆盖范围;代价是采样点可能形成稀疏栅格,从而出现栅格效应。三者分别控制边界、采样间隔和核内间隔,但最终都通过改变有效窗口落点来决定输出几何。

参数主要作用常见风险
padding p保留边缘/尺寸引入人工边界
stride s下采样混叠、小目标丢失
dilation d扩大覆盖栅格效应
out=⌊(in+2p−d(k−1)−1)/s⌋+1

4通道决定参数量,不由图片面积决定参数

卷积层的参数量由卷积核尺寸以及输入、输出通道数决定,而不由特征图的空间面积决定。一个输出通道需要一组覆盖全部输入通道的卷积核,因此核权重数为 kₕ×k𝓌×Cᵢₙ;如果每个输出通道还带一个偏置,则总参数量为:

参数量 = (kₕ×k𝓌×Cᵢₙ + 1) × Cₒᵤₜ

其中,kₕ、k𝓌 是核的高和宽,Cᵢₙ 是输入通道数,Cₒᵤₜ 是输出通道数。以 3×3 卷积把 64 个输入通道变换为 128 个输出通道为例:

(3×3×64 + 1) × 128 = 73,856

括号中的 3×3×64 是一个输出通道所需的全部核权重,额外的 1 是该输出通道的偏置,再乘 128 是因为要产生 128 个不同的输出通道。

这 73,856 个参数会在所有空间位置共享。无论输入特征图是 16×16 还是 256×256,核的参数数量都不变。不过,较大的特征图包含更多输出位置,同一组参数必须在更多窗口上执行乘加运算,所以计算量会随着输出空间面积增长。参数量不变并不意味着运行成本不变。

不同卷积形式改变的是空间混合和通道混合的组织方式。1×1 卷积的窗口只有一个空间位置,因此不混合相邻位置,只在每个位置上组合各输入通道。Depthwise 卷积则让每个输入通道单独使用自己的空间核,随后再用 pointwise 卷积混合通道。这样的分解通常能显著降低计算量,但减少了空间卷积阶段的通道交互;实际速度还受硬件执行效率影响,不能只根据理论计算量判断。

参数=(kₕk𝓌Cᵢₙ+1)Cₒᵤₜ=(3×3×64+1)×128=73,856

5原创图:共享核产生平移等变响应可视化

共享卷积核在每个空间位置执行同一种局部检测,因此输入中的图案向右移动一格后,核对该图案的强响应也应向右移动一格。输入发生平移,输出特征的位置以相同方式平移,这种对应关系称为平移等变。

图 1 展示了这条因果链:同一个卷积核先扫描原始图案,在图案所在位置产生响应;当图案移动后,卷积核本身不变,仍以相同规则扫描整张输入,于是在新的图案位置产生相应的响应。权重共享保证了检测规则不会因为空间位置不同而改变,局部窗口则让响应的位置能够跟随被检测的局部结构移动。

平移等变描述的是“输入移到哪里,特征也移到哪里”,并不等于分类结果对平移完全不变。分类不变要求输入移动后最终类别输出保持不变,通常还需要全局池化、数据增强或其他聚合机制,把随位置移动的特征整合成对位置不敏感的结果。因此,卷积的共享核提供了等变响应,但不能单独保证整个模型获得平移不变性。

输入 A共享竖边核所有位置同一 K响应 A输入右移 1 格响应也右移 1 格F(TδX)=TδF(X)(忽略边界与采样)
图 1 平移等变意味着特征位置随输入一起移动;分类不变还需全局池化、增强或其他聚合。

6感受野按跳距逐层增长层级

感受野表示某一层的一个单元在原始输入上理论上能够受到多大区域的影响。它不会简单地等于当前卷积核大小,因为网络逐层叠加后,上层的一个核位置可能已经对应原输入中的一片区域。计算时需要同时跟踪感受野边长 r 和相邻单元映回原输入后的跳距 j:

rₗ = rₗ₋₁ + (kₗ−1) × jₗ₋₁ jₗ = jₗ₋₁ × sₗ

其中,l 是层编号,rₗ 是第 l 层单元在原输入上的理论感受野边长,jₗ 是第 l 层相邻单元中心映回原输入时的距离,kₗ 是该层核宽,sₗ 是该层步幅。输入层从 r₀=1、j₀=1 开始,表示一个输入单元只对应自身,相邻输入单元的距离为 1。

三层 3×3、步幅均为 1 的卷积可逐层计算为:

k/s跳距 j感受野 r
输入11
conv13/113
conv23/115
conv33/117

第一层把感受野从 1 扩展到 3;第二层在原跳距 1 上再增加两个位置,扩展到 5;第三层同理扩展到 7。因此第三层一个单元的理论感受野是 7×7。

步幅会改变后续层扩张感受野的速度。如果第二层的步幅为 2,那么第二层之后的跳距会变大,上层卷积核相邻位置映回原输入时跨越的距离也更大;此后每增加一个核位置,就会覆盖更远的输入区域。

理论感受野只说明可能覆盖的最大范围,不代表范围内每个位置对输出的实际贡献相同,梯度往往更集中在中心区域。对于检测和分割等既需要深层语义又需要精确空间细节的任务,通常需要多尺度特征,把高分辨率细节与深层表示连接起来。

rₗ=rₗ₋₁+(kₗ−1)jₗ₋₁, jₗ=jₗ₋₁sₗ

7下采样前不过滤会产生混叠采样边界

步幅卷积或池化会减少特征图中的采样点,相当于降低空间采样率。若输入中存在相对于新采样率过快变化的细节,这些高频结构就无法被正确表示,会折叠成较低频的伪影,这种现象称为混叠。棋盘纹理缩小后出现原图中不存在的条纹或块状图案,就是高频细节被错误解释后的结果。

新奈奎斯特频率是降采样后能够无歧义表示的最高空间频率。超过这一上限的纹理如果在降采样前没有被削弱,离散采样得到的数值可能与另一种更慢变化的图案相同,于是模型看到的是伪造出来的低频结构,而不是原来的细节。因果链是:降低采样率 → 可表示的最高频率下降 → 过高频率发生折叠 → 输出出现伪影。

最大池化在每个局部区域保留最大响应,可以让小范围位置变化不易改变结果,从而带来一定局部稳定性;但它也可能把偶然的噪声峰值保留下来。平均或低通处理先抑制变化过快的成分,再执行降采样,通常更能抵抗混叠。这里的过滤不是凭空恢复信息,而是在减少采样点之前主动舍弃新采样率无法可靠表示的高频部分。

下采样还可能直接抹去小目标。若一个目标小于一个下采样单元,它可能没有机会在保留下来的采样位置形成稳定响应,因而完全消失。因此,更小的特征图不是没有代价的压缩:它节省空间和计算的同时,也改变了可保留的细节范围。

选择下采样方式和频率时,需要结合任务中的真实变化进行切片测试,包括目标尺寸、旋转、缩放、边界位置和压缩噪声。只有分别检查这些条件,才能判断观察到的性能是否来自有效的尺度压缩,还是被混叠和细节丢失掩盖。

8等变、不变与数据增强不能混为一谈归纳偏置

CNN 并不会天然对所有几何变换都不敏感。需要区分“特征随输入一起变化”的等变性与“输出在变换后保持不变”的不变性,也要区分网络结构提供的性质和训练数据教出的行为。

性质含义普通卷积是否天然具备
平移等变输入移动时,特征响应也相应移动近似具备,但边界处理和步幅会破坏
分类平移不变输入移动后,最终类别不变不直接具备,需要聚合与训练
旋转或尺度不变输入旋转或缩放后,输出保持不变不具备,需要数据增强或专门结构

普通卷积在不同空间位置共享同一个核,因此局部模式平移时,特征响应通常会随之平移,这接近平移等变。但这种关系并非无条件成立:图案移到边界附近时会遇到不同的填充内容,步幅采样也可能使移动前后的窗口落点不再一一对应。

分类平移不变则是另一层要求。它希望输入位置变化后,最终类别结果不变,而不是特征图跟着移动。要从随位置移动的特征得到稳定类别,还需要聚合机制以及相应训练。旋转和尺度变化更不会自动遵守普通卷积的共享规则,因为旋转后的局部排列或缩放后的空间范围已经改变,原来的核未必产生相同响应。

数据增强的作用,是通过训练样本明确告诉模型哪些输入变换不应改变标签。它能帮助模型学习期望的不变性,但前提是变换确实保持任务语义。如果把数字 6 旋转 180° 后仍强制使用原标签,就可能把已经改变语义的样本当作等价样本,向模型注入错误的不变性。因此,增强策略必须依据标签在相应变换下是否仍成立来设计。

9CNN 与 ViT 的局部—全局建模差异选型边界

注意力机制出现后,卷积仍被广泛使用,是因为 CNN 与 ViT 对局部模式和全局内容关系的处理路径不同。选择骨干网络时,不能只比较模型类别,最终结论应来自与目标数据、分辨率和运行环境一致的实测。

CNN 通过局部连接和权重共享,让同一组卷积核在不同空间位置重复检测邻近模式。多层堆叠逐步扩大感受野,因此全局关系需要经过多层局部组合。ViT 则把图像划分为 patch token,并用自注意力让 token 直接汇聚其他位置的内容,从而更直接地建立全局内容关系。

比较维度CNNViT
基本连接方式局部连接与空间权重共享token 间自注意力
建立较远位置关系通过多层局部组合逐步汇聚在注意力层中直接汇聚其他位置内容
选择边界在目标场景实测在目标场景实测

这张对照表描述机制差异,不预先宣告哪类结构必然更好。实际结果还取决于具体训练设置与运行环境,因此应在相同目标数据、输入分辨率和评测条件下实测,再决定采用 CNN 还是 ViT。

12把因果链连起来综合

CNN 从局部输入到任务输出的完整机制,可以沿一条可验证的因果链理解。输入首先被划分为滑动的局部窗口,同一组卷积核在不同空间位置重复使用。每个窗口与卷积核跨通道做内积,得到对应位置和输出通道的响应,这些响应按空间位置排列成特征图。

特征图经过非线性变换并逐层堆叠后,上层单元能够组合更复杂的局部响应,其感受野也逐渐扩大。网络由此从较小范围的输入关系,过渡到覆盖更大区域的表示。下采样进一步减小空间尺寸并形成多尺度层级,但同时可能丢失细节,因此它既是计算和层级组织手段,也是需要验证的信息瓶颈。

得到多层特征后,任务头根据目标决定如何使用它们。需要整体判断的任务会聚合空间特征,形成最终输出;需要保留位置的任务则要恢复或结合空间信息,产生对应位置的预测。于是整条链条可写成:

局部窗口 → 共享卷积核 → 通道内积 → 特征图 → 非线性堆叠与感受野扩大 → 下采样形成多尺度层级 → 任务头聚合或恢复空间输出

每一步都会引入可以单独检查的行为。共享核是否产生预期的移动响应,需要在输入变换下观察特征位置;感受野和下采样是否保留任务所需信息,需要按目标尺度检查;边界填充是否改变结果,需要比较目标位于中心与边缘时的表现。最终验收应针对变换、尺度和边界位置进行切片,而不能只看一个整体指标。这样才能把结构设计、内部响应与实际任务结果连接起来。