第二十八讲 · CNN 架构演进
CNN 架构史不是“网络越来越深”的排行榜,而是围绕几个反复出现的问题演进:如何扩大感受野、如何控制参数和计算、如何让很深的网络仍能训练、如何让不同尺度的特征交流。
课件从 AlexNet 展开,本篇先用 LeNet 补上历史起点,再沿 AlexNet、VGG、GoogLeNet/Inception、ResNet 与预激活残差网络整理设计逻辑。
一、读架构先看四件事
拿到一张网络结构图,优先检查:
- 空间尺寸 在哪里下降;
- 通道数 在哪里增加;
- 哪些操作最耗参数与 FLOPs;
- 梯度能否沿短路径回到浅层。
卷积层参数量为
(忽略偏置),计算量还要再乘输出空间大小。全连接层则不共享空间权重,早期 CNN 的大部分参数往往集中在末端全连接层。
二、LeNet:卷积网络的基本模板
LeNet-5 面向手写数字识别,建立了“卷积提取局部特征—下采样降低分辨率—全连接完成分类”的经典模板。早期版本常用 卷积和平均池化,网络较浅、输入也小。
它留下的关键思想不是某个固定层数,而是:
- 局部连接利用图像邻域结构;
- 权重共享让同一特征可在不同位置检测;
- 层层下采样扩大有效感受野;
- 高层特征逐渐从边缘组合成更复杂模式。
三、AlexNet:让深 CNN 在大数据上真正跑起来
AlexNet 在 2012 年 ImageNet 竞赛中的表现推动了深度视觉复兴。它的典型结构包含 5 个卷积层和 3 个全连接层,并组合了当时几项关键工程选择:
- ReLU 代替饱和的 Sigmoid/Tanh;
- GPU 并行训练;
- 数据增强;
- Dropout 抑制大规模全连接层过拟合;
- 首层使用较大的 卷积和较大步幅快速降采样。
AlexNet 还使用局部响应归一化(LRN),但它后来大多被 BatchNorm 等方法取代。历史架构里的每个组件不一定都要原样继承,重要的是看它当时解决了什么约束。
四、VGG:用重复的 把设计做规整
VGG 的核心是反复堆叠 卷积,并在若干阶段后下采样、增加通道。VGG-16、VGG-19 的命名对应带参数层数。
两个步幅为 1 的 卷积具有 有效感受野。若输入输出通道都为 :
而一个 卷积参数量为
两层小卷积参数更少,还多插入一次非线性。三个 则可覆盖 感受野。
VGG 的优点是结构统一、易理解和迁移;缺点是深层高通道卷积与巨大全连接层带来很高计算和参数开销。
课件 VGG 页脚沿用了 AlexNet 论文标题;VGG 对应的论文题目应为 Very Deep Convolutional Networks for Large-Scale Image Recognition,不是 ImageNet Classification with Deep Convolutional Neural Networks。
五、GoogLeNet / Inception:同一层看多个尺度
Inception 模块让输入并行经过不同分支,例如:
- 卷积;
- 卷积;
- 卷积;
- 池化分支。
最后在通道维拼接各分支输出。不同卷积核看到不同尺度,网络不必预先只选一种感受野。
若直接让所有输入通道进入大卷积,计算会非常贵。 卷积先把通道数压低,再做 或 ,充当 bottleneck:
它也在每个像素位置混合通道并增加非线性。GoogLeNet 还用全局平均池化显著减少末端全连接参数。
六、网络更深为什么反而可能更差
假设一个较浅网络已经学得不错,给它后面再加若干恒等层,理论上新网络至少可以复制旧网络性能。但普通深网络实际会出现 degradation:训练误差反而更高。这里不是经典“测试集过拟合”,因为连训练集都没有优化好。
问题在于,让多层非线性变换精确学成恒等映射并不容易;梯度也必须穿过全部层。残差网络改变了每个块要学习的目标。
七、ResNet:让块学习残差
残差块写成
若最合适的映射接近恒等,只要把残差分支 学到接近零即可。反向传播有
梯度至少拥有一条不经过残差分支内部所有非线性的恒等路径。
当输入输出形状不一致时,捷径不能直接相加,可用步幅卷积和 投影:
浅层残差块常用两个 卷积;更深 ResNet 使用 降维、 处理、 升维的 bottleneck,以控制计算量。
八、残差网络的“集成视角”
课件从 ensemble 角度理解 ResNet:每个残差块都提供“经过 ”和“走捷径”两种路径,许多块组合后形成大量不同长度的前向路径。删除或扰动某些块时,其他路径仍可能工作。
这个视角有助于理解优化鲁棒性,但不能把 ResNet 等同于许多彼此独立训练、最后显式平均输出的模型。所有路径共享权重和中间表示,它更准确地说是具有多路径结构的单一网络。
九、原始残差块与预激活残差块
原始残差块通常把卷积、BatchNorm、ReLU 放在残差分支内,并在相加后再激活。预激活 ResNet 把顺序改成
让捷径从输入到相加节点更接近纯恒等映射,不被相加后的 ReLU 截断。这样信息和梯度可以沿主干更直接传播,特别适合非常深的网络。
课件还提到 Highway Networks 与残差网络的历史讨论。两者都用捷径改善深网训练,但 Highway Network 通过可学习门控制信息通过,ResNet 使用简单加法;不能仅凭结构相似就把两者当作同一个公式。
十、现代卷积网络延续了哪些原则
后续 CNN 名字很多,但常见改进仍可归到几条线:
- 减少空间卷积成本:深度可分离卷积先逐通道做空间卷积,再用 混合通道;
- 重新标定通道:注意力或 squeeze-excitation 根据全局信息调整通道权重;
- 平衡深度、宽度和分辨率:不是只把某一维无限放大;
- 保留残差与规范化:让更大模型仍可优化;
- 吸收 Transformer 训练经验:更大卷积核、LayerNorm、GELU 和现代化 stage 设计可重新组合成 ConvNeXt 一类网络。
这些内容是从课件架构主线向现代 CNN 的延伸。判断新结构时仍应回到参数量、FLOPs、内存访问、感受野和优化路径,而不是只看论文给出的模型名。
十一、架构对比
| 架构 | 主要设计 | 解决的问题 | 代价或局限 |
|---|---|---|---|
| LeNet | 卷积加下采样 | 建立局部连接与共享权重模板 | 深度与任务规模较小 |
| AlexNet | ReLU、GPU、增强、Dropout | 大规模数据上训练更深 CNN | 大卷积和全连接层昂贵 |
| VGG | 重复堆叠 | 结构规整、用深度扩大感受野 | 参数与计算量大 |
| Inception | 多尺度并行、 bottleneck | 兼顾尺度与效率 | 分支结构较复杂 |
| ResNet | 恒等捷径、残差学习 | 缓解深网 degradation | 形状变化需投影 |
| Pre-activation ResNet | BN-ReLU-Conv 在卷积前 | 让捷径和梯度路径更干净 | 需按正确顺序实现 |
十二、复习与常见误区
- VGG 用多个小卷积,不只是为了少参数,还为了插入更多非线性。
- 卷积会混合通道,不等于“什么都没看”。
- degradation 指更深网络连训练误差都变差,不是普通过拟合。
- 残差块要求两分支形状一致;不一致时必须降采样或投影。
- ResNet 的捷径提供短梯度路径,但不会让任何深度都自动稳定。
- ensemble 视角是解释,不等于实际训练了独立模型集合。
- 架构优劣必须在相近训练配方、数据、参数量或计算预算下比较。