将《设计人工智能:基础与应用》拆分为 38 个 Markdown 文件, 按 11 个部分(上篇6部分+下篇5部分)+ 3 个附录组织。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
4.4 KiB
学习目标
理解CNN的核心思想:局部连接与权重共享
掌握卷积、激活、池化三大组件
了解CNN与MLP的区别和联系
为什么需要CNN
MLP的问题
将图像展平成一维向量输入MLP:
28×28``图像`` → 784``维向量`` → MLP
问题: 1. 参数量巨大:784×1000 = 784,000个参数 2. 忽略空间结构:相邻像素的关系被破坏 3. 缺乏平移不变性:物体移位后需要重新学习
CNN的解决方案
特性 说明 优势
局部连接 每个神经元只连接局部区域 符合图像局部相关性
权重共享 同一卷积核扫描全图 大幅减少参数
层次化特征 低层→高层特征抽象 自动学习特征表达
CNN三大组件
1. 卷积层 (Convolution)
卷积操作:用卷积核(Filter)在图像上滑动,计算局部特征
输入图像`` ``卷积核`` ``特征图
┌─────────┐ ┌─────┐ ┌─────────┐
│ 1 2 3 │ │ 1 0 │ │ 8 10 │
│ 4 5 6 │ ⊗ │ 0 -1 │ = │ 14 16 │
│ 7 8 9 │ │ │ │ │
└─────────┘ └─────┘ └─────────┘
计算示例:
输出``(1,1) = 1×1 + 2×0 + 4×0 + 5×(-1) = 1 - 5 = -4
多通道卷积:
RGB``图像`` (3``通道``) + ``卷积核`` (3×3×3) → ``特征图`` (``单通道``)
2. 激活层 (Activation)
通常使用ReLU:
output ``=`` ``max``(``0``, ``feature_map``)
作用:引入非线性,使网络能学习复杂模式
3. 池化层 (Pooling)
最大池化 (Max Pooling):
2×2``窗口`` → ``取最大值
┌─────┐ ┌───┐
│3 1 │ │ 3 │
│2 5 │ → │ │
└─────┘ │ 5 │
└───┘
作用: - 降低维度,减少计算量 - 增强平移不变性 - 扩大感受野
CNN架构示例
LeNet-5 (经典架构)
输入``(32×32) → ``卷积层`` → ``池化层`` → ``卷积层`` → ``池化层
↓
``全连接层`` → ``输出
VGG-16 (深层架构)
输入`` → [Conv×3 + Pool] ×2 → [Conv×3 + Pool] ×3
→ [Conv×3 + Pool] ×3 → FC×3 → ``输出
CNN vs MLP
特性 MLP CNN
连接方式 全连接 局部连接
权重 每个连接独立 同层共享
空间结构 忽略 保留
参数量 大 小
适用任务 结构化数据 图像/语音
经典网络架构演进
LeNet`` (1998) → ``首次定义``CNN``结构
↓
AlexNet`` (2012) → ``深度学习爆发,``ReLU``激活
↓
VGG (2014) → ``更深网络,``3×3``小卷积核
↓
GoogLeNet`` (2014) → Inception``模块,多尺度
↓
ResNet`` (2015) → ``残差连接,``152``层
↓
EfficientNet`` (2019) → ``复合缩放,高效
思考与练习
1.为什么卷积核通常选择奇数尺寸(3×3, 5×5)?
2.感受野如何随着网络深度增加?
3.设计一个简单的CNN用于手写数字识别
关键术语
中文 英文 说明
卷积核 Kernel/Filter 用于特征提取的小矩阵
步幅 Stride 卷积核滑动的步长
填充 Padding 边缘补零以保持尺寸
感受野 Receptive Field 神经元响应的输入区域
通道 Channel 图像的颜色维度或特征图数量
延伸阅读
CS231n: Convolutional Neural Networks
Understanding CNNs # 02.2 目标检测