第4章:卷积神经网络(CNN)
4.1 卷积运算与池化
1. 卷积运算的基本概念
卷积(Convolution)是CNN的核心操作,其本质是通过滑动窗口(卷积核)对输入数据进行局部特征提取。数学上定义为两个函数的乘积积分,但在图像处理中通常表示为离散形式的加权求和:
其中:
- 为输入矩阵(如图像像素矩阵)
- 为卷积核(滤波器)
- 为输出特征图
关键特性:
- 局部连接:每个输出神经元仅与输入层的局部区域连接
- 参数共享:同一卷积核在整张图像上滑动复用
- 平移不变性:无论特征出现在图像哪个位置都能被检测到
2. 卷积操作的超参数
| 参数 | 说明 | 典型值 |
|---|---|---|
| 卷积核大小 | 决定感受野大小(如3×3, 5×5) | 3×3最常见 |
| 步长(Stride) | 滑动步长,影响输出尺寸 | 1或2 |
| 填充(Padding) | 边界处理方式("valid"不填充/"same"保持尺寸) | 常用zero-padding |
| 输入/输出通道 | 多通道卷积实现特征组合 | 依网络设计而定 |
3. 池化操作(Pooling)
池化层用于降维和保持平移不变性,常见类型:
最大池化(Max Pooling)
- 保留区域最显著特征
- 对微小位移具有鲁棒性
平均池化(Average Pooling)
- 平滑特征响应
- 常用于网络末端
特性对比:
| 类型 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 最大池化 | 保留纹理特征 | 丢失细节信息 | 浅层特征提取 |
| 平均池化 | 保持整体特征分布 | 模糊重要特征 | 全局特征聚合 |
4. 计算示例(3×3卷积)
假设输入为5×5矩阵,3×3卷积核,stride=1,padding=0:
输入矩阵: 卷积核: 输出计算:
[[1 1 1 0 0] [[1 0 1] (1*1 + 1*0 + 1*1 + 0*0 + 1*1 + 0*0 + 1*1 + 0*0 + 1*1) = 4
[0 1 0 0 1] [0 1 0] 后续位置同理...
[1 0 1 1 1] [1 0 1]]
[0 1 1 0 0] 最终输出3×3特征图
[1 1 0 1 0]]
5. 可视化理解

(图示:3×3卷积核在5×5输入上的滑动过程)
6. 工程实践建议
- 卷积核选择:浅层常用小尺寸核(3×3)提取基础特征
- 步长设计:大步长(如2)可替代池化实现降采样
- 空洞卷积:通过dilation参数增大感受野而不增加参数量
- 1×1卷积:用于通道维度上的特征重组和降维
注:现代CNN架构(如ResNet)常使用"卷积+BN+ReLU"的标准模块组合
这个内容包含数学原理、可视化示例和工程实践要点,可作为教材或技术文档的基础内容。需要扩展时可添加:
1. 不同padding方式的详细计算示例
2. 转置卷积(反卷积)的说明
3. 各框架中的具体API实现对比