← 返回题目列表

卷积神经网络(CNN)的基本原理是什么?卷积操作在做什么?

高频 中等 第 6 / 25 题 更新于 2026/07/28
卷积神经网络CNN卷积原理

简化版

CNN 是专门处理图像等网格结构数据的神经网络,核心是卷积操作:用一个小的卷积核(filter)在图像上滑动,每到一处就和局部区域做「对应相乘再求和」,提取出这个局部的特征(如边缘、纹理),扫完整张图得到一张特征图(feature map)。多个卷积核提取多种特征、多层卷积把低级特征(边缘)逐层组合成高级特征(纹理→部件→物体)。CNN 靠局部连接、权值共享大幅减少参数,还具有平移等变性与经聚合得到的近似不变性(同一物体在图像哪个位置都能被识别)。典型结构:卷积层 + 激活 + 池化层 堆叠做特征提取,最后接全连接层做分类。

详细版

卷积操作:

卷积核(如 3×3)在输入图上滑动,每个位置:
  输出 = Σ(卷积核 ⊙ 覆盖的局部区域) + 偏置    (对应元素相乘再求和)
滑遍全图 → 一张特征图(feature map)

CNN 典型结构:

输入图像 → [卷积层 → 激活(ReLU) → 池化层] × N → 展平 → 全连接层 → 输出
           └──── 特征提取(自动学特征)────┘        └── 分类 ──┘

三大核心特性:

特性含义好处
局部连接每个神经元只连接局部区域参数少、抓局部特征
权值共享同一卷积核在全图共用一套权重参数大减、提供平移等变归纳偏置
层次特征逐层组合:边缘→纹理→部件→物体自动学习特征

完整版教学

一、CNN 为什么存在——全连接处理图像的困境

图像是网格结构的数据(如 224×224×3 的彩色图有约 15 万个像素)。如果直接用全连接网络处理:

  • 参数爆炸:把图像展平成向量接全连接,第一层就要 15 万 × 隐藏单元数个权重,参数量巨大、极易过拟合、算不动。
  • 丢失空间结构:展平后像素的二维空间关系(谁挨着谁)被破坏了。
  • 没有平移等变性与经聚合得到的近似不变性:同一个物体出现在图像左上角和右下角,全连接网络会当成完全不同的输入。

CNN 就是为解决这些问题而生——它用卷积操作保留空间结构、大幅减少参数、获得平移等变性与经聚合得到的近似不变性,成为图像任务的标准架构。

二、卷积操作:卷积核在图上滑动提特征

CNN 的核心是卷积操作。它用一个小的卷积核(filter/kernel,如 3×3) 在输入图像上滑动,每滑到一个位置,就把卷积核和它覆盖的局部区域做「对应元素相乘再全部求和」(加上偏置),得到一个输出值:

局部区域        卷积核         输出这一点
┌─────┐      ┌─────┐
│1 0 1│      │1 0 1│        = 1·1+0·0+1·1+
│0 1 0│  ⊙   │0 1 0│  求和    0·0+1·1+0·0+    = 某个数
│1 0 1│      │1 0 1│          1·1+0·0+1·1
└─────┘      └─────┘

卷积核扫遍整张图,每个位置产生一个输出,这些输出组成一张特征图(feature map)——它反映了「这个卷积核对应的特征(如某方向的边缘)在图像各处的响应强度」。

关键:卷积核里的数值就是要学习的权重。训练中网络自动学出「什么样的卷积核能提取有用特征」——不用人工设计特征,这是 CNN「自动学习特征」的体现。

三、多核、多层:从边缘到物体的层次特征

  • 一个卷积核提取一种特征(如水平边缘)。一层里用多个卷积核,就能同时提取多种特征(水平边缘、垂直边缘、颜色块……),输出多张特征图(多个通道)。
  • 多层卷积逐层抽象:这是 CNN 最精彩的地方——
    • 浅层卷积提取低级特征:边缘、颜色、简单纹理。
    • 中层把低级特征组合成中级特征:纹理、局部形状、部件(眼睛、轮子)。
    • 深层再组合成高级语义特征:物体的整体(人脸、汽车)。

就像搭积木,低级特征层层组合成高级概念。这种层次化的特征学习让 CNN 能理解复杂图像。

四、典型结构:卷积-激活-池化-全连接

一个典型 CNN 的结构:

输入图像
  → 卷积层(提特征) → 激活 ReLU(非线性)→ 池化层(下采样、降维)
  → 卷积层 → ReLU → 池化   (重复若干次,特征越来越抽象)
  → 展平(Flatten)
  → 全连接层(综合特征做决策)
  → 输出层(分类 softmax / 回归)
  • 卷积层 + 激活:提取特征、引入非线性。
  • 池化层:下采样,缩小特征图、减少计算、增强平移等变性与经聚合得到的近似不变性(详见池化专题)。
  • 全连接层:把提取好的特征综合起来做最终分类。
  • 现代架构(ResNet 等)用全局平均池化替代部分全连接,参数更少。

五、三大核心特性(CNN 高效的根本)

1. 局部连接(Local Connectivity):每个卷积神经元只连接输入的一个局部区域(卷积核大小),而非全图。因为图像的有用信息往往是局部的(边缘、纹理是局部模式)。局部连接让参数大减、专注抓局部特征。

2. 权值共享(Weight Sharing)同一个卷积核在整张图的所有位置共用同一套权重。一个 3×3 卷积核不管滑到哪都是那 9 个权重。这带来两个巨大好处:

  • 参数急剧减少:整张图共用一个小核,参数量和图像大小无关(详见参数计算专题)。
  • 平移等变性与经聚合得到的近似不变性:同一个卷积核能在图像任何位置检测同一个特征——物体移到哪都能被识别。

3. 层次特征学习:多层卷积自动学出从低级到高级的层次特征(见第三节)。

这三点让 CNN 在图像上参数少、显式利用局部结构,并提供平移等变归纳偏置,在典型图像任务上通常比同规模全连接更高效(详见 CNN vs 全连接专题)。

局部连接让单个输出只依赖邻域,权重共享让同一模式检测器复用于多个空间位置,多通道卷积再把不同特征汇总成新表示。这些约束减少参数并引入适合图像的归纳偏置,但不代表任何视觉任务都必须用 CNN。普通卷积在理想条件下提供平移等变性,分类级的不变性还需要池化、全局聚合、数据增强和训练共同形成。

六、手算一次互相关,并区分等变与不变

深度学习框架里的“卷积”通常实际执行互相关,即卷积核不翻转。对输入 [[1,2,0],[0,1,3],[2,1,0]] 和核 [[1,0],[0,-1]] 做 valid、步长 1 的互相关,输出为 [[0,-1],[-1,1]]。第一格等于 1×1+2×0+0×0+1×(-1)=0

input 3×3  *  kernel 2×2  ->  output 2×2
[[1,2,0],    [[1, 0],         [[ 0,-1],
 [0,1,3],     [0,-1]]          [-1, 1]]
 [2,1,0]]
性质含义是否由普通卷积直接保证
局部连接只看邻域
权重共享各位置复用同一核
平移等变输入移位,特征相应移位理想条件下近似成立,边界会影响
分类平移不变输入移位,类别不变否,需聚合、数据增强等

严格术语是“卷积特征对平移等变”,不是“每一层卷积对平移不变”;padding 和 stride 还会破坏精确等变。

七、常见误区与追问

  • 误区:CNN 的每层输出天然平移不变。 普通卷积更接近平移等变,特征位置会随输入一起移动。
  • 误区:框架中的 Conv2d 一定做数学卷积。 主流实现通常做不翻转卷积核的互相关,但训练可学习到所需核。
  • 追问:卷积为什么适合图像? 它利用局部相关、共享模式和规则网格结构,参数效率较高。
  • 追问:padding 为什么会影响等变性? 边界填充值随位置改变,移动到边缘的模式看到的上下文不同。
  • 追问:输出通道数由什么决定? 由卷积核组数也就是 C_out 决定,每个输出通道汇总每组输入通道。

八、加强记忆

CNN 专为图像等网格数据设计,核心是卷积操作卷积核在图上滑动、每处与局部区域「对应相乘求和」提取局部特征,扫完整图得特征图;卷积核的值是学出来的(自动学特征)。多核提多种特征,多层逐级抽象:浅层边缘→中层纹理/部件→深层物体语义。典型结构:[卷积+激活ReLU+池化]×N → 全连接 → 输出。三大核心特性:局部连接(只连局部、抓局部特征、省参数)、权值共享(同一卷积核全图共用一套权重→参数大减 + 平移等变性与经聚合得到的近似不变性)、层次特征学习。相比普通全连接,CNN 参数少、显式保留空间布局,并具有平移等变归纳偏置,是图像任务标准架构。