第4章:卷积神经网络(CNN)
经典CNN模型之LeNet与AlexNet
1. LeNet-5:卷积神经网络的先驱
背景与意义
- 由Yann LeCun等人于1998年提出,最早成功应用于手写数字识别(MNIST数据集)
- 奠定了CNN的基本架构:卷积层、池化层、全连接层的堆叠
核心结构
# 典型LeNet-5架构(简化版)
Input(32x32) →
Conv1(6@5x5, stride=1) → AvgPool(2x2) →
Conv2(16@5x5) → AvgPool(2x2) →
FC(120) → FC(84) → Output(10)
- 关键特点:
- 使用平均池化(现多改用最大池化)
- 激活函数为Sigmoid/Tanh(现代网络常用ReLU)
- 参数量仅约60k(极轻量级)
历史局限性
- 仅支持灰度小尺寸图像输入
- 未采用现代正则化技术(如Dropout)
2. AlexNet:深度学习的里程碑
突破性贡献
- 2012年ImageNet竞赛冠军(Top-5错误率15.3%,远超第二名26.2%)
- 首次证明深度CNN在大规模图像识别中的有效性
创新设计
# AlexNet架构(双GPU实现版)
Input(227x227x3) →
Conv1(96@11x11, stride=4) → MaxPool → LocalRespNorm →
Conv2(256@5x5, pad=2) → MaxPool → LRN →
Conv3(384@3x3, pad=1) →
Conv4(384@3x3, pad=1) →
Conv5(256@3x3, pad=1) → MaxPool →
FC(4096) → Dropout → FC(4096) → Dropout → Output(1000)
- 关键技术:
- ReLU激活函数:解决梯度消失问题
- Dropout:全连接层使用0.5丢弃率防止过拟合
- 重叠池化(3x3窗口,stride=2)
- 数据增强:随机裁剪、水平翻转、PCA颜色扰动
硬件依赖
- 首次使用双GPU并行训练(受当时显存限制)
- 参数量约60M,训练时间5-6天(GTX 580)
3. 对比分析与现代启示
| 特性 | LeNet-5 | AlexNet |
|---|---|---|
| 输入尺寸 | 32x32灰度 | 227x227 RGB |
| 参数量 | ~60k | ~60M |
| 激活函数 | Sigmoid/Tanh | ReLU |
| 正则化 | 无 | Dropout + LRN |
| 应用领域 | 手写数字识别 | 通用图像分类 |
后续影响
- 推动GPU在深度学习中的普及
- 启发VGG/ResNet等更深的网络设计
- 证明大数据+深度模型的有效性范式
代码实践建议
使用PyTorch复现AlexNet时,现代实现通常会:
- 移除LRN层(后续研究证明效果有限)
- 将全连接层替换为卷积层(如FC→1x1 Conv)以适应可变输入尺寸
# 现代简化版AlexNet
model = nn.Sequential(
nn.Conv2d(3, 96, 11, stride=4),
nn.ReLU(),
nn.MaxPool2d(3, stride=2),
# ... 后续层省略
)
