第二十八讲 · CNN 架构演进

Views: --

CNN 架构史不是“网络越来越深”的排行榜,而是围绕几个反复出现的问题演进:如何扩大感受野、如何控制参数和计算、如何让很深的网络仍能训练、如何让不同尺度的特征交流。

课件从 AlexNet 展开,本篇先用 LeNet 补上历史起点,再沿 AlexNet、VGG、GoogLeNet/Inception、ResNet 与预激活残差网络整理设计逻辑。

一、读架构先看四件事

拿到一张网络结构图,优先检查:

  1. 空间尺寸 H×WH\times W 在哪里下降;
  2. 通道数 CC 在哪里增加;
  3. 哪些操作最耗参数与 FLOPs;
  4. 梯度能否沿短路径回到浅层。

卷积层参数量为

KhKwCinCoutK_hK_wC_{\mathrm{in}}C_{\mathrm{out}}

(忽略偏置),计算量还要再乘输出空间大小。全连接层则不共享空间权重,早期 CNN 的大部分参数往往集中在末端全连接层。

二、LeNet:卷积网络的基本模板

LeNet-5 面向手写数字识别,建立了“卷积提取局部特征—下采样降低分辨率—全连接完成分类”的经典模板。早期版本常用 5×55\times5 卷积和平均池化,网络较浅、输入也小。

它留下的关键思想不是某个固定层数,而是:

  • 局部连接利用图像邻域结构;
  • 权重共享让同一特征可在不同位置检测;
  • 层层下采样扩大有效感受野;
  • 高层特征逐渐从边缘组合成更复杂模式。

三、AlexNet:让深 CNN 在大数据上真正跑起来

AlexNet 在 2012 年 ImageNet 竞赛中的表现推动了深度视觉复兴。它的典型结构包含 5 个卷积层和 3 个全连接层,并组合了当时几项关键工程选择:

  • ReLU 代替饱和的 Sigmoid/Tanh;
  • GPU 并行训练;
  • 数据增强;
  • Dropout 抑制大规模全连接层过拟合;
  • 首层使用较大的 11×1111\times11 卷积和较大步幅快速降采样。

AlexNet 还使用局部响应归一化(LRN),但它后来大多被 BatchNorm 等方法取代。历史架构里的每个组件不一定都要原样继承,重要的是看它当时解决了什么约束。

四、VGG:用重复的 3×33\times3 把设计做规整

VGG 的核心是反复堆叠 3×33\times3 卷积,并在若干阶段后下采样、增加通道。VGG-16、VGG-19 的命名对应带参数层数。

两个步幅为 1 的 3×33\times3 卷积具有 5×55\times5 有效感受野。若输入输出通道都为 CC

2×3×3×C2=18C2,2\times3\times3\times C^2=18C^2,

而一个 5×55\times5 卷积参数量为

25C2.25C^2.

两层小卷积参数更少,还多插入一次非线性。三个 3×33\times3 则可覆盖 7×77\times7 感受野。

VGG 的优点是结构统一、易理解和迁移;缺点是深层高通道卷积与巨大全连接层带来很高计算和参数开销。

课件 VGG 页脚沿用了 AlexNet 论文标题;VGG 对应的论文题目应为 Very Deep Convolutional Networks for Large-Scale Image Recognition,不是 ImageNet Classification with Deep Convolutional Neural Networks

五、GoogLeNet / Inception:同一层看多个尺度

Inception 模块让输入并行经过不同分支,例如:

  • 1×11\times1 卷积;
  • 3×33\times3 卷积;
  • 5×55\times5 卷积;
  • 池化分支。

最后在通道维拼接各分支输出。不同卷积核看到不同尺度,网络不必预先只选一种感受野。

若直接让所有输入通道进入大卷积,计算会非常贵。1×11\times1 卷积先把通道数压低,再做 3×33\times35×55\times5,充当 bottleneck:

Cin1×1CmidK×KCout.C_{\mathrm{in}} \xrightarrow{1\times1} C_{\mathrm{mid}} \xrightarrow{K\times K} C_{\mathrm{out}}.

它也在每个像素位置混合通道并增加非线性。GoogLeNet 还用全局平均池化显著减少末端全连接参数。

六、网络更深为什么反而可能更差

假设一个较浅网络已经学得不错,给它后面再加若干恒等层,理论上新网络至少可以复制旧网络性能。但普通深网络实际会出现 degradation:训练误差反而更高。这里不是经典“测试集过拟合”,因为连训练集都没有优化好。

问题在于,让多层非线性变换精确学成恒等映射并不容易;梯度也必须穿过全部层。残差网络改变了每个块要学习的目标。

七、ResNet:让块学习残差

残差块写成

y=F(x;W)+x.y=F(x;W)+x.

若最合适的映射接近恒等,只要把残差分支 FF 学到接近零即可。反向传播有

yx=I+Fx,\frac{\partial y}{\partial x} =I+\frac{\partial F}{\partial x},

梯度至少拥有一条不经过残差分支内部所有非线性的恒等路径。

当输入输出形状不一致时,捷径不能直接相加,可用步幅卷积和 1×11\times1 投影:

y=F(x;W)+Wsx.y=F(x;W)+W_sx.

浅层残差块常用两个 3×33\times3 卷积;更深 ResNet 使用 1×11\times1 降维、3×33\times3 处理、1×11\times1 升维的 bottleneck,以控制计算量。

八、残差网络的“集成视角”

课件从 ensemble 角度理解 ResNet:每个残差块都提供“经过 FF”和“走捷径”两种路径,许多块组合后形成大量不同长度的前向路径。删除或扰动某些块时,其他路径仍可能工作。

这个视角有助于理解优化鲁棒性,但不能把 ResNet 等同于许多彼此独立训练、最后显式平均输出的模型。所有路径共享权重和中间表示,它更准确地说是具有多路径结构的单一网络。

九、原始残差块与预激活残差块

原始残差块通常把卷积、BatchNorm、ReLU 放在残差分支内,并在相加后再激活。预激活 ResNet 把顺序改成

BNReLUConv,\text{BN}\rightarrow\text{ReLU}\rightarrow\text{Conv},

让捷径从输入到相加节点更接近纯恒等映射,不被相加后的 ReLU 截断。这样信息和梯度可以沿主干更直接传播,特别适合非常深的网络。

课件还提到 Highway Networks 与残差网络的历史讨论。两者都用捷径改善深网训练,但 Highway Network 通过可学习门控制信息通过,ResNet 使用简单加法;不能仅凭结构相似就把两者当作同一个公式。

十、现代卷积网络延续了哪些原则

后续 CNN 名字很多,但常见改进仍可归到几条线:

  • 减少空间卷积成本:深度可分离卷积先逐通道做空间卷积,再用 1×11\times1 混合通道;
  • 重新标定通道:注意力或 squeeze-excitation 根据全局信息调整通道权重;
  • 平衡深度、宽度和分辨率:不是只把某一维无限放大;
  • 保留残差与规范化:让更大模型仍可优化;
  • 吸收 Transformer 训练经验:更大卷积核、LayerNorm、GELU 和现代化 stage 设计可重新组合成 ConvNeXt 一类网络。

这些内容是从课件架构主线向现代 CNN 的延伸。判断新结构时仍应回到参数量、FLOPs、内存访问、感受野和优化路径,而不是只看论文给出的模型名。

十一、架构对比

架构主要设计解决的问题代价或局限
LeNet卷积加下采样建立局部连接与共享权重模板深度与任务规模较小
AlexNetReLU、GPU、增强、Dropout大规模数据上训练更深 CNN大卷积和全连接层昂贵
VGG重复堆叠 3×33\times3结构规整、用深度扩大感受野参数与计算量大
Inception多尺度并行、1×11\times1 bottleneck兼顾尺度与效率分支结构较复杂
ResNet恒等捷径、残差学习缓解深网 degradation形状变化需投影
Pre-activation ResNetBN-ReLU-Conv 在卷积前让捷径和梯度路径更干净需按正确顺序实现

十二、复习与常见误区

  • VGG 用多个小卷积,不只是为了少参数,还为了插入更多非线性。
  • 1×11\times1 卷积会混合通道,不等于“什么都没看”。
  • degradation 指更深网络连训练误差都变差,不是普通过拟合。
  • 残差块要求两分支形状一致;不一致时必须降采样或投影。
  • ResNet 的捷径提供短梯度路径,但不会让任何深度都自动稳定。
  • ensemble 视角是解释,不等于实际训练了独立模型集合。
  • 架构优劣必须在相近训练配方、数据、参数量或计算预算下比较。

评论