一、CNN 是什么
直觉解释:卷积神经网络 CNN 是一种特别适合处理图像的神经网络。它像一个会移动的小探测器:先在局部区域中找边缘、角点、纹理,再逐层组合成眼睛、轮廓、物体等更复杂的模式。
和普通全连接神经网络 MLP 的区别:MLP 通常把图片摊平成一长串数字,位置关系容易被打散;CNN 保留图片的二维空间结构,用卷积核在局部区域上重复扫描。
为什么图像不能只依赖 MLP?
- 图像像素有强烈的空间关系:相邻像素常共同构成边缘、纹理和局部形状。
- 把图片拉平成向量后,上下左右的邻近关系不再明显。
- 全连接层参数量很大,容易计算量高、过拟合。
图像中的局部结构
- 边缘:亮暗变化明显的位置,如物体轮廓。
- 纹理:重复出现的小模式,如布料纹路、草地纹理。
- 形状:由多个边缘和纹理组合出的局部或整体结构。
二、卷积操作的直观理解
直觉解释:卷积核是一个小矩阵,例如 3×3。它覆盖输入图片的一小块区域,把对应元素相乘后求和,得到输出特征图中的一个值。然后卷积核向右或向下滑动,重复这个过程。
5×5 输入矩阵与 3×3 卷积核滑动
当前窗口位置:第 1 行,第 1 列。这个 3×3 区域就是一个局部感受野。
一次窗口计算如何得到一个输出值
局部感受野:某个输出值只“看见”输入中的一个局部区域。这里 3×3 窗口就是该输出值的感受野。
三、卷积核如何提取局部特征
直觉解释:不同卷积核会学习不同特征。一个核可能对竖直边缘敏感,另一个核可能对水平边缘敏感,还有的核会对纹理、角点或颜色变化敏感。
边缘、亮暗变化、简单纹理。
角点、局部形状、重复结构。
物体部件、整体轮廓、语义类别。
Feature map 是什么?
某个卷积核扫完整张图后,会得到一张新的二维结果图,这张图叫 feature map。它记录“这个卷积核要找的模式在各个位置出现得多强”。
多个卷积核会怎样?
如果一个卷积层有 16 个卷积核,就会产生 16 张 feature maps。每张图关注一种特征,最后堆叠成输出的 16 个通道。
四、输出尺寸计算
直觉解释:输出尺寸取决于卷积核能在输入上放多少个合法位置。输入越大,位置越多;卷积核越大,位置越少;padding 会让边界变宽;stride 越大,跳得越远,位置越少。
输入尺寸
卷积核尺寸
每侧补零数量
滑动步长
输出尺寸
四类必会例题
输入 I = 32,卷积核 K = 3,padding P = 0,stride S = 1。
直觉:3×3 卷积核在 32 个位置长度上,最多从第 1 个格子放到第 30 个格子。
输入 I = 32,卷积核 K = 3,padding P = 1,stride S = 1。
直觉:左右各补 1 个格子后,3×3 卷积保持原尺寸,这常被称为 same convolution。
输入 I = 32,卷积核 K = 3,padding P = 0,stride S = 2。
结果不是整数,说明标准整齐滑动时参数不匹配。若框架向下取整,则输出为 floor(15.5) = 15。
输入 I = 32,卷积核 K = 3,padding P = 1,stride S = 2。
结果仍不是整数。若框架向下取整,则输出为 floor(16.5) = 16;考试中要先指出不整除。
五、Padding
直觉解释:padding 就是在输入边缘周围补一圈或多圈数值,最常见是补 0。它像给图片加边框,让卷积核也能更充分地覆盖边缘像素。
为什么需要 padding?
- 保留边缘信息:边缘像素不再只被少量窗口看到。
- 控制输出尺寸:选择合适 P 可以让输出变大、变小或保持不变。
- 防止尺寸下降太快:深层网络连续卷积时更稳定。
Valid vs Same
| 类型 | 含义 |
|---|---|
| valid convolution | 通常 P = 0,不补边,输出尺寸会变小。 |
| same convolution | 选择合适 P,使 S = 1 时输出尺寸与输入相同。 |
5×5 输入加 P = 1 后变成 7×7
六、Stride
直觉解释:stride 是卷积核每次移动的步长。stride = 1 表示一步一格;stride = 2 表示每次跳两格。跳得越远,能放置窗口的位置越少,输出尺寸越小。
I = 28,K = 5,P = 0,S = 1。
I = 28,K = 5,P = 0,S = 2。
七、Pooling
直觉解释:pooling 是对局部区域做摘要。max pooling 取最大值,保留最强响应;average pooling 取平均值,保留整体水平。
Pooling 的作用
- 降低空间尺寸。
- 减少后续计算量。
- 保留主要特征响应。
- 提高一定程度的位置鲁棒性。
是否有可学习参数?
通常 pooling 没有可学习参数。它不像卷积核那样通过训练学习权重,而是按固定规则取最大值或平均值。
4×4 矩阵做 2×2 max pooling,stride = 2
八、CNN 为什么适合图像
1. 局部连接
图像中局部像素关系强。CNN 每个神经元只连接一小块局部区域,符合边缘和纹理的形成方式。
2. 参数共享
同一个卷积核在整张图上重复使用。无论边缘出现在左上角还是右下角,都用同一组参数检测。
3. 平移等变性
物体位置改变时,feature map 中的响应位置也随之移动,特征仍能被检测到。
参数数量对比
| 模型方式 | 例子 | 参数量 | 含义 |
|---|---|---|---|
| MLP 全连接 | 32×32×3 图片连接到 100 个神经元 | 32×32×3×100 + 100 = 307,300 | 每个神经元都连接所有像素,参数很多。 |
| CNN 卷积 | 一个 3×3 卷积核处理 RGB 三通道,产生 1 张 feature map | 3×3×3 + 1 = 28 | 卷积核小,并在整张图共享参数。 |
| CNN 多 filter | 若有 100 个 3×3 filter | (3×3×3 + 1)×100 = 2,800 | 仍远少于同例 MLP 的 307,300。 |
九、考试重点:输出尺寸题
做题步骤固定三步:先写公式,再代入 I、K、P、S,最后判断结果是否为整数。
十、交互式输出尺寸计算器
输入参数后自动计算 O。二维图像做题时,高和宽分别用这个计算器算一次;若高宽相同,只算一次即可。
十一、CNN 总结表
| 概念 | 考试可用解释 |
|---|---|
| convolution | 卷积是用卷积核在输入上滑动,对局部窗口逐元素相乘并求和,从而提取局部特征的操作。 |
| kernel | 卷积核是一个小的权重矩阵,可学习某类局部模式,如边缘、纹理或角点。 |
| feature map | feature map 是某个卷积核扫描输入后得到的响应图,表示该特征在不同位置的强弱。 |
| padding | padding 是在输入边缘补值,用于保留边缘信息、控制输出尺寸、防止尺寸过快变小。 |
| stride | stride 是卷积核每次移动的步长;stride 越大,输出空间尺寸通常越小。 |
| pooling | pooling 对局部区域做最大值或平均值摘要,用于降低尺寸、减少计算并保留主要特征。 |
| channel | channel 是输入或输出的通道维度,例如 RGB 图片有 3 个输入通道。 |
| filter | filter 通常指一组跨所有输入通道的卷积核权重;一个 filter 产生一张输出 feature map。 |
十二、最后复习清单
- 我能解释卷积核如何通过局部窗口提取边缘、纹理、形状等局部特征。
-
我能熟练使用公式
O = (I - K + 2P) / S + 1计算输出尺寸。 - 我能解释 padding、stride、pooling 的含义、作用和对尺寸的影响。
- 我能说明 CNN 为什么适合图像:局部连接、参数共享、平移等变性。
- 我能完成常见考试计算题,并能写出完整代入过程。
考前速记版
1. 输出尺寸公式:O = (I - K + 2P) / S + 1。先算分子,再除以
stride,最后 +1。
2. padding:补边。P 越大,输出越大;P = 0 常叫 valid;K = 3, S = 1, P = 1 常可保持尺寸。
3. stride:步长。S 越大,窗口跳得越远,输出越小。
4. pooling:通常无参数,max pooling 取最大值,average pooling 取平均值,用于降尺寸和保留主要特征。
5. CNN 适合图像:局部连接看局部结构,参数共享减少参数,滑动卷积能在不同位置检测同一特征。
6. 不整除:考试中先写“结果不是整数,参数可能不匹配”;若题目说明按框架默认,则常见处理是向下取整。