Course 4:经典 CNN 架构
课程简介
LeNet、AlexNet、VGG、ResNet、Inception 等里程碑式架构。
一、经典CNN架构
1.1 LeNet-5 (1998)
Yann LeCun 提出的首个成功应用的卷积神经网络。
结构:Conv(5×5,6)→AvgPool(2×2)→Conv(5×5,16)→AvgPool(2×2)→FC(120)→FC(84)→Softmax(10)
特点:
- 使用Sigmoid/Tanh激活函数
- 平均池化
- 约6万个参数
- MNIST手写数字识别上达到99.2%准确率
1.2 AlexNet (2012)
Alex Krizhevsky 在2012年ImageNet竞赛中以巨大优势夺冠,标志着深度学习时代的到来。
结构:11×11 Conv(96)→5×5 Conv(256)→3×3 Conv(384)→3×3 Conv(384)→3×3 Conv(256)→FC(4096)→FC(4096)→Softmax(1000)
特点:
- 使用ReLU激活函数,比Tanh快数倍
- 使用Dropout防止过拟合(keep_prob=0.5)
- 局部响应归一化(LRN)
- 数据增强(平移、翻转、颜色变化)
- 使用两块GTX 580 GPU训练,花费5-6天
- 约6000万个参数
1.3 VGGNet (2014)
Karen Simonyan 和 Andrew Zisserman 提出,证明增加深度可以提升性能。
特点:
- 全部使用3×3小滤波器(Conv层堆叠)
- 2个3×3卷积堆叠等效于1个5×5卷积(感受野相同,参数更少)
- 3个3×3卷积堆叠等效于1个7×7卷积
- 网络更深(VGG16有16层,VGG19有19层)
- 约1.38亿个参数(计算量很大)
$$ \text{感受野: } 2\times(3-1)+1 = 5 $$
$$ \text{参数: } 2\times(3\times3\times C) = 18C \ll 5\times5\times C = 25C $$
VGG的发现:3×3小滤波器的多层堆叠比直接使用大滤波器更高效,参数更少且非线性更强。
1.4 ResNet (2015)
Kaiming He 提出的残差网络(Residual Network)解决了深层网络的退化问题。
退化问题:网络加深到一定程度后,训练误差反而上升——这不是过拟合,因为训练误差也高。说明深层网络更难优化。
残差块:
$$z^{[l+1]} = a^{[l]}$$
$$a^{[l+1]} = g(z^{[l+1]} + \text{Skip}(a^{[l]}))$$
标准块:$a^{[l+2]} = g(W^{[l+2]}g(W^{[l+1]}a^{[l]} + b^{[l+1]}) + b^{[l+2]})$
残差块:$a^{[l+2]} = g(W^{[l+2]}g(W^{[l+1]}a^{[l]} + b^{[l+1]}) + b^{[l+2]} + a^{[l]})$
$+a^{[l]}$ 就是跳连接(Skip Connection),也叫捷径(Shortcut)。
为什么ResNet有效:跳连接让梯度可以直接传播到浅层,即使中间层的权重很小,梯度也不会消失。残差块学习的是残差$H(x)-x$而不是直接映射$H(x)$,残差通常更容易学习。
$$ \text{如果 } H(x) \approx x \text{,残差 } H(x)-x \approx 0 \text{ 比直接学习 } H(x) \approx x \text{ 更容易}$$
ResNet-152有152层,在ImageNet上达到3.57% top-5错误率,超越人类水平。
1.5 Inception (GoogLeNet, 2014)
Christian Szegedy 提出的Inception网络使用"网中网"思想。
Inception模块:在同一层并行使用1×1、3×3、5×5卷积和3×3最大池化,然后将所有输出在通道维度拼接。
1×1卷积(瓶颈层):先使用1×1卷积减少通道数,再使用3×3或5×5卷积,大幅降低计算量:
$$ \text{直接使用5×5: } 5\times5\times192\times32 \approx 154K \text{ 参数} $$
$$ \text{先1×1降维: } 1\times1\times192\times16 + 5\times5\times16\times32 \approx 16K \text{ 参数} $$
Inception网络约有500万个参数,是AlexNet的1/12。
1.6 架构演进总结
| 网络 | 年份 | 关键创新 | ImageNet top-5错误率 |
|---|---|---|---|
| LeNet-5 | 1998 | CNN基础架构 | - |
| AlexNet | 2012 | ReLU、Dropout、GPU训练 | 16.4% |
| VGG-16 | 2014 | 小滤波器堆叠 | 7.3% |
| GoogLeNet | 2014 | Inception模块 | 6.7% |
| ResNet-152 | 2015 | 残差学习、BatchNorm | 3.57% |
1.7 实用技巧
- 使用预训练模型(ImageNet权重)进行迁移学习
- 微调时使用小学习率(原学习率的1/10)
- 梯度裁剪防止梯度爆炸
- 使用Batch Normalization加速训练
- 合理的数据增强策略
延伸阅读
- 📺 B 站播放列表:Deep Learning Specialization — 深度学习专项课程
- 📚 更多学习资源,请访问 deeplearning.ai 官网