卷积神经网络原理
# 卷积神经网络原理
为什么卷积神经网络可以进行图像识别。卷积神经网络实现图像识别的核心逻辑分为两步:
- 特征提取(从简单到复杂逐层提取图像特征)
- 特征连接(将提取的特征映射到具体类别)
本文重点拆解「特征提取」的核心 —— 卷积层的工作原理。
# 卷积层1:提取图像的简单基础特征
一个卷积层包含「多个不同的卷积核」,每个卷积核负责提取一种特定特征;整个卷积层的输出,是所有卷积核提取特征的集合。 以「小猫识别」为例,拆解卷积层 1 的工作逻辑:
单个卷积层 = 多把 “特征检测器” 卷积层1中不会仅用1个卷积核,而是配置几十/上百个不同的卷积核,每个核对应一种专属的 “特征检测器”: 卷积核A:专门识别「竖线」(如猫耳朵的竖边) 卷积核B:专门识别「横线」(如猫脸的轮廓横线) 卷积核C:专门识别「45°斜线」(如猫胡须的斜线) 卷积核D:专门识别「明暗交界」(如猫眼的黑边) ... 更多卷积核:识别不同角度、粗细的线条特征
一个卷积核扫全图,输出一张 “特征图” 每个卷积核会独立在整张图片上滑动扫描,最终输出一张「特征图」(只保留这种特征的位置):
# 卷积核A(竖线检测器)的输出(特征图1):
┌─────────────┐
│ │ │ │ │ # 仅标记竖线位置
│ │ │ │ │
│ │ │ │ │
└─────────────┘
# 卷积核B(横线检测器)的输出(特征图2):
┌─────────────┐
│ ─── ─── ─── │ # 仅标记横线位置
│ ─── ─── ─── │
│ ── ── │
└─────────────┘
2
3
4
5
6
7
8
9
10
11
12
13
- 整个卷积层的输出 = 所有特征图的堆叠 如果卷积层1有 3个卷积核,就会输出32张特征图(每张对应一种特征),这些特征图叠在一起,就是这一层的最终输出:
卷积层1输出 = [特征图1(竖线), 特征图2(横线), 特征图3(斜线), ..., 特征图32(明暗)]
- 后续卷积层:基于上一层的特征,组合成更复杂的特征 到了卷积层 2,它的输入不是原始图片,而是卷积层 1 输出的 32 张特征图。卷积层2里的卷积核,会同时扫描多张特征图,把 “竖线 + 横线” 组合成 “角”,把 “斜线 + 明暗” 组合成 “圆弧”—— 这就是 “从简单特征到复杂特征” 的核心过程。
# 卷积层2 组合简单特征,提取复杂特征
卷积层 2 的输入是「32 张独立的特征图」(不是合并成一张),卷积核会同时跨这 32 张特征图扫描,把分散在不同特征图里的简单特征(竖线、横线)组合成复杂特征(角)。
- 输入形态:用数字明确维度 先定义基础参数:
- 原始图片:3通道(RGB)、尺寸 224×224 → 形状为 [3, 224, 224](通道数 × 高度 × 宽度)
- 卷积层1输出:32个卷积核对应32张特征图,每张尺寸224×224 → 形状为 [32, 224, 224]
卷积层2的输入即为 [32, 224, 224],可理解为 “32页的画册”:每页对应一种简单特征(竖线、横线等),卷积层2需同时分析这32页的内容。
- 3D卷积核:同时扫描多张特征图 卷积层2的每个卷积核,不再是 “2D小窗口”,而是 “3D小窗口”—— 它的维度和输入的通道数匹配(32通道)。以“组合竖线 + 横线成角” 举例:
# 卷积层2的一个卷积核(3D):
┌─────────────────────────┐
│ 通道1(竖线): [1 0 -1] │ # 对竖线特征加权
│ 通道2(横线): [1 0 -1] │ # 对横线特征加权
│ 通道3(斜线): [0 0 0] │ # 斜线无关,权重0
│ ... │
│ 通道32(明暗): [0 0 0] │ # 明暗无关,权重0
└─────────────────────────┘
2
3
4
5
6
7
8
该3D卷积核滑动时会完成两个核心操作:
- 对同一位置的32张特征图(32个通道)分别计算权重;
- 将32个计算结果求和,得到的数值代表 “该位置是否存在目标复杂特征(如角)”。 最终,这个卷积核扫描全图后会输出1张特征图,专门标记 “角” 的位置。
- 核心比喻:32眼放大镜看画册
- 卷积层1输出:32页画册(每页=一种简单特征);
- 卷积层2的卷积核:32眼放大镜(同时看32页);
- 卷积核作用:判断 “这一页有竖线、那一页有横线 → 该位置是角”;
- 卷积层2输出:新画册(如64页),每页 = 一种复杂特征(角、圆弧、小纹理等)。
# 通道数增加的本质:特征类型的丰富化
卷积层2输出64个通道,不是丢掉卷积层1的结果,而是基于它生成更多样的复杂特征;通道数增加,是为了容纳 “不同组合方式” 的复杂特征,让模型能捕捉更丰富的细节。
用「搭积木」比喻拆解核心逻辑:
- 通道数 = 特征类型数:卷积层1输出32通道=32种简单特征(线、边),卷积层2输出64通道= 64种复杂特征(角、圆弧);
- 组合逻辑:1个复杂特征 = 多种简单特征的组合,而 “组合方式” 有很多种,需要更多通道来装不同的组合结果。
- 层级递进:
卷积层1有3个核心特征:
- 通道A:竖线
- 通道B:横线
- 通道C:斜线
卷积层2的卷积核会做这些 “组合操作”:
- 卷积核1:A(竖线)+ B(横线)→ 直角(输出通道 1)
- 卷积核2:A(竖线)+ C(斜线)→ 锐角(输出通道 2)
- 卷积核3:B(横线)+ C(斜线)→ 钝角(输出通道 3)
- 卷积核4:A(竖线)+ B(横线)+ C(斜线)→ 复杂纹理(输出通道 4)
卷积层3:用基础组件拼出 “复杂部件”(眼睛、耳朵)。
如果有64个卷积核,就能生成64种不同的 “简单特征组合”,对应64个通道。
简单说:通道数 = 特征类型数,复杂特征的类型比简单特征多,所以通道数要增加。
- 你可以把这个过程理解为:
- 卷积层1:生产32种 “积木零件”(线、边);
- 卷积层2:用这些零件拼出64种 “基础组件”(角、圆弧);
- 卷积层3:用64种基础组件拼出更多 “复杂部件”(眼睛、耳朵);
全程都是 “基于上一层加工”,零件不会丢,只是被组合成了更复杂的形态。
# 关键补充:卷积核的“选择性组合”
卷积层2的每个卷积核是「选择性组合部分通道」,而非把32个通道的信息无脑揉在一起;
卷积层 2 的每个卷积核是「3D 结构」(比如 32×3×3,对应输入 32 通道、卷积核尺寸 3×3),但它的工作逻辑是「选择性加权组合」,而非 “32 个通道全参与”:
- 乐高积木比喻 将卷积层1的32个通道看作32种乐高零件(竖线、横线、斜线、不同粗细的边...):
- “角检测器”卷积核:仅挑选「竖线零件 + 横线零件」拼角,其余30种零件几乎不用;
- “圆弧检测器”卷积核:仅挑选「斜线零件 + 明暗零件」拼圆弧,其余30种零件几乎不用。
- 技术层面:权重决定 “选哪些通道” 每个3D卷积核内部有可学习的权重,会对32个通道做 “优先级筛选”,示例如下:
# 卷积层2“角检测器”卷积核的权重分布
通道1(竖线):权重=0.9 → 核心参与组合
通道2(横线):权重=0.8 → 核心参与组合
通道3(斜线):权重=0.1 → 几乎不参与
通道4-32:权重≈0 → 完全不参与
2
3
4
5
这个卷积核仅组合通道 1 和 2 的特征生成 “角”,其余通道信息被忽略 —— 这是「选择性组合」的核心,而非 “32 个通道一起拼接”。
- 输出规则:1个卷积核 = 1个输出通道 卷积层2 配置64个3D卷积核,每个核基于32个输入通道 “选部分组合”,最终输出1个通道的复杂特征;64个核对应输出64个通道,每个通道代表一种独特的复杂特征(角、圆弧、小纹理等)。