一、经典CNN架构:从LeNet到ResNet的设计思想与演进
大家好,我是你们的老朋友。今天咱们聊聊CNN的“祖宗们”——LeNet、AlexNet、VGGNet、ResNet。说实话,这些架构虽然“老”,但它们的核心思想至今还在用。我当年刚入行时,就是靠啃这些经典才真正理解了深度学习。
核心观点:CNN的演进史,就是一部“如何更高效地提取特征”的历史。从5层到152层,不是简单堆叠,而是设计思想的革命。
1.1 LeNet-5:开山鼻祖(1998年)
LeNet是Yann LeCun的手写数字识别网络。说实话,现在看它很简陋,但该有的组件全有了:卷积、池化、全连接、非线性激活。
结构速览:
- 输入:32×32灰度图
- C1:6个5×5卷积核 → S2:2×2平均池化
- C3:16个5×5卷积核 → S4:2×2平均池化
- C5:120个5×5卷积核(实际是全连接)
- F6:84个神经元 → 输出:10类(softmax)
我个人习惯把LeNet看作“特征提取器+分类器”的雏形。卷积层负责提取局部特征,池化层做降维,全连接层做分类。这个范式,至今没变。
避坑指南:我曾经在复现LeNet时踩过一个坑——输入尺寸必须是32×32,不是28×28。因为LeNet的卷积设计刚好把32×32缩放到1×1。如果你用28×28,最后一层卷积的输出尺寸会不对。
1.2 AlexNet:深度学习的“引爆点”(2012年)
AlexNet在ImageNet上碾压传统方法,直接引爆了深度学习热潮。它比LeNet深不了多少(8层 vs 5层),但做了几个关键改进。
核心创新:
- ReLU激活函数:解决了Sigmoid的梯度消失问题。训练速度快了好几倍。
- Dropout:随机丢弃神经元,防止过拟合。我刚开始用的时候总觉得不靠谱,后来发现真香。
- 数据增强:随机裁剪、翻转、颜色变换。说白了就是“无中生有”地扩充数据。
- GPU并行训练:两块GTX 580,把网络拆成两半分别训练。
你想想看,AlexNet的参数量高达6000万,比LeNet多了两个数量级。为什么没严重过拟合?就是因为Dropout和数据增强这两招。
注意:AlexNet用了11×11的大卷积核和4×4的大步长。这在今天看来有点“粗暴”,但在当时算力有限的情况下,大卷积核能快速扩大感受野。不过,大卷积核也意味着参数量爆炸——这也是后来VGG改用小卷积核的原因。
1.3 VGGNet:小卷积核的胜利(2014年)
VGG的核心思想很简单:用多个3×3小卷积核堆叠,替代大卷积核。比如,两个3×3卷积堆叠,感受野等于一个5×5;三个堆叠等于一个7×7。
为什么小卷积核更好?
- 参数量更少:3个3×3卷积(27个参数) vs 1个7×7卷积(49个参数)
- 更多非线性:每层卷积后都有ReLU,堆叠3层就有3次非线性变换,表达能力更强
- 更深的网络:VGG16有16层,VGG19有19层。深度增加带来了更好的特征抽象能力
我记得在项目中用VGG做迁移学习时,发现它的特征提取能力非常稳定。虽然现在有更轻量的网络,但VGG的“规整结构”让它特别适合做特征提取的baseline。
VGG的“规整”体现在:所有卷积层都用3×3、padding=1、stride=1;所有池化层都用2×2、stride=2。这种一致性让网络设计变得“无脑”,但也限制了灵活性。
1.4 ResNet:残差学习的革命(2015年)
ResNet解决了深度学习史上最大的难题——网络退化。按理说,网络越深应该越好,但实际发现56层网络的错误率比20层还高。这不是过拟合,而是优化困难。
残差块的核心思想:
传统映射:H(x) = F(x)
残差映射:H(x) = F(x) + x
说白了,就是让网络学习“残差”而不是直接学习“映射”。如果恒等映射是最优的,网络只需要把残差部分学成0就行,比从头学一个恒等映射容易得多。
为什么残差学习有效?
- 梯度直通:反向传播时,梯度可以通过“捷径连接”直接传到浅层,避免了梯度消失
- 网络退化缓解:即使深层网络学不到新特征,至少能保留浅层特征
- 易于优化:残差块的梯度范数更稳定,训练更顺畅
个人经验:我曾经在训练一个50层的网络时,不加残差连接,loss死活降不下去。加上残差连接后,训练曲线瞬间“丝滑”了。嗯,这就是残差学习的魔力。
1.5 架构演进的核心逻辑
从LeNet到ResNet,我总结出三条演进主线:
| 维度 | LeNet | AlexNet | VGGNet | ResNet |
|---|---|---|---|---|
| 深度 | 5层 | 8层 | 16-19层 | 50-152层 |
| 卷积核 | 5×5 | 11×11, 5×5, 3×3 | 3×3 | 3×3, 1×1 |
| 激活函数 | Sigmoid | ReLU | ReLU | ReLU |
| 核心创新 | CNN范式 | ReLU+Dropout | 小卷积核堆叠 | 残差学习 |
| 参数量 | 6万 | 6000万 | 1.38亿 | 2500万(ResNet50) |
你发现没有?深度越来越深,但参数量反而可以更少。ResNet50比VGG16深3倍,参数量却只有后者的1/5。这就是设计思想的进步——用更高效的结构提取特征,而不是简单堆叠参数。
一句话总结:LeNet定义了CNN范式,AlexNet证明了深度学习的潜力,VGGNet规范了卷积设计,ResNet突破了深度瓶颈。这四个架构,是每个深度学习工程师的必修课。
1.6 本章知识体系图
下面我用一张SVG图来展示这四大架构的演进关系。你可以看到,每个架构都在前人的基础上解决了特定问题。
这张图清晰地展示了四个架构的演进脉络。从LeNet到ResNet,每个架构都在前人的基础上解决了特定问题。我个人建议初学者按照这个顺序去理解,你会发现深度学习的发展其实很有逻辑。
学习建议:不要只看,一定要动手复现。我当年花了一周时间手写LeNet的前向传播,虽然代码写得稀烂,但对卷积、池化的理解深入骨髓。嗯,有些坑只有自己踩过才记得住。
好了,经典CNN架构就聊到这里。这四个架构是深度学习大厦的基石,理解它们的设计思想,对你后续学习MobileNet、EfficientNet、Vision Transformer等新架构会很有帮助。