理解 CNN 与 ResNet

模块化卷积、残差学习与表征范式的转移

概念梳理 · 参考 Colah (2014)、He 等 CVPR 2016(arXiv:1512.03385)

这篇文章想帮你建立什么直觉?

卷积神经网络(CNN)是深度学习在计算机视觉上取得突破的核心构件之一;ResNet则回答了「网络已经很深了,还要继续加深时,优化与表示会发生什么」这一工程上极其现实的问题。本文沿 Christopher Olah 的模块化视角理解 CNN:把一层卷积看成「同一种神经元在输入上多处复用」;再结合 He 等人原始论文中的退化(degradation)现象与恒等映射捷径(identity shortcut),说明残差块为何有效。最后我们会诚实讨论 CNN / ResNet 的归纳偏置与局限,以及为何在自然语言处理与部分视觉主干上,社区的主流选择逐渐转向 Transformer——这并不是说卷积「被淘汰」,而是默认问题表述与训练范式发生了转移。

若你已读过本站《理解 Transformer》,可把本文当作从「网格上的局部滤波器堆叠」到「集合上的全局可组合查询」的对照阅读。

一、模块化视角:CNN 在复用什么?

Olah 在 Conv Nets: A Modular Perspective 中指出:在最朴素的理解里,CNN 使用许多份结构相同的神经元(权值共享),因此可以在保持可学习参数量相对可控的前提下,表达很大的计算图。这与编程里「写一次函数、到处调用」的抽象是同一类思想:减少重复学习与实现错误。

对一维信号,一组神经元 \(A\) 在每个时间局部窗口上计算同样的特征;对二维图像,\(A\) 在每个空间小块(patch)上滑动。我们关心的统计性质往往在不同位置重复出现(例如「某处是否有边缘」),因此让同一组权重扫过全图是合理归纳偏置。

同一模块 A 在多个位置上复用 patch patch patch 共享权重:A(·) 每个位置输出一个特征图通道上的响应

权值共享:一次学习、处处卷积(示意)

二、为何要卷积 + 池化?局部、层次与轻微平移不变性

局部连接:像素与其远邻的统计依赖往往通过多层逐步组合更合理,第一层只看小块即可编码边缘、纹理等低层特征。

层次组合:一层卷积的输出可作为下一层的输入,网络在深度方向上形成从局部到整体的特征层级。

池化(如 max-pooling):Olah 强调其「放大感受野、对微小位移不敏感」的作用——我们往往只关心某特征是否出现在一个区域内,而不关心精确到单个像素的坐标。

Conv Conv Pool FC / Head

典型栈式结构:卷积提取局部模式,池化粗化空间分辨率

三、形式化一瞥:从 patch 到特征图

二维卷积层可抽象为:对每个空间位置 \((n,m)\),取邻域内的输入小块,用同一组权重计算输出。若用 \(A\) 表示该局部非线性变换(实践中常包含仿射变换与 ReLU 等),则思想上可写成:

$$y_{n,m} = A(\text{patch at }(n,m))$$

工程实现上更常用「卷积核 + 步幅 + 填充 + 多通道」的高效形式;但从设计动机看,上式已足够说明 CNN 在假设什么。

四、变深之后:退化问题与 ResNet 的残差形式

Krizhevsky 等人在 ImageNet 上的成功表明:更深、更大、配合 ReLU 与 Dropout 等技巧的 CNN 极具潜力。但把普通「plain」网络一味堆深时,He 等人在 Deep Residual Learning for Image Recognition(CVPR 2016,arXiv:1512.03385)中观察到反直觉现象:在适当深度之后,更深的网络训练误差反而更高——这不是过拟合(验证集也变差),而是优化困难,论文称之为 degradation

若较浅网络已能达到某表示能力,理想情况下更深网络至少应能复制浅层解(例如让新增层近似恒等映射)。实践中的 plain 堆叠并不总能轻松学到这种恒等行为。ResNet 的做法是显式构造残差映射:让堆叠的非线性层去拟合相对恒等路径的修正量 \(\mathcal{F}\),而不是直接拟合完整映射 \(\mathcal{H}\)。

$$ \mathcal{H}(x) = \mathcal{F}(x, \{W_i\}) + x $$

其中 \(x\) 为捷径分支上的恒等映射输入;当输入输出维度不一致时,论文使用1×1 卷积的投影捷径对齐通道与空间尺寸。直觉上:

  • 若最优映射接近恒等,则 \(\mathcal{F}\) 可被推向零附近,比「整个 \(\mathcal{H}\) 都要用非线性层硬凑」更容易优化。
  • 反向传播时,捷径为梯度提供更短、更稳定的路径,缓解随深度增加的信号衰减问题。
\(x\) \(\mathcal{F}\) 卷积 + BN + ReLU … 恒等 / 投影捷径 + 输出

残差块:学习对输入的修正并与捷径相加(示意)

读原论文时建议抓住两条线:一是退化实验所揭示的优化瓶颈;二是恒等路径 + 残差分支如何把「加深」从「更难训」扭转为「可稳定堆叠」。

五、CNN / ResNet 仍要面对的局限

  • 局部性与感受野:标准卷积以邻域为原子;要建立相距很远的像素之间的强依赖,往往需要堆叠很多层、使用空洞卷积、或非局部模块等补丁——不是做不到,而是不天然
  • 对显式几何与网格的依赖:二维 CNN 假设规则像素网格;对点云、图、集合数据需要额外设计(或换主干)。
  • 平移不变性的代价:池化带来对微小平移的鲁棒性,也可能丢掉对任务关键的细粒度空间信息(分割、检测中常用 FPN、空洞卷积等缓解)。
  • 参数与计算仍随分辨率增长:高分辨率图像上,即使有了 ResNet,计算与显存压力仍是系统瓶颈之一。

六、为何 Transformer 在许多赛道上「取代」了默认选择?

NLP:语言是一维离散符号序列,长程依赖与对齐(指代、省略、跨句推理)极其常见。RNN 串行难扩展;CNN 作为序列模型需要多层才能扩大有效感受野(Olah 与后续工作都讨论过这一点)。自注意力在单层内即可让任意两位置建立直接权重连接,且主体计算高度并行,配合大规模预训练,使 Transformer 成为语言建模与理解的事实标准(见本站《理解 Transformer》)。

视觉:ViT 等将图像切块为 patch token,用 Transformer 编码全局关系,在大数据 + 强正则 + 训练配方下可与 CNN 竞争甚至领先;实践中也有 Swin、ConvNeXt 等大量混合或反思卷积归纳偏置的工作。更准确的说法是:研究社区的默认「第一套要试的骨架」从纯 CNN 转向了 Transformer 或混合结构,而卷积仍在移动端、实时检测、嵌入式与许多工业管线中广泛使用。

与 ResNet 的关系:Transformer 层内同样广泛采用残差 + LayerNorm——残差思想超越了「仅用于 CNN」;但从局部滤波到全局 token 混合,改变的是谁先验地假设了结构的局部性

参考文献与链接

ResNet 原文 BibTeX(CVPR 2016)

@inproceedings{he2016deep,
  title={Deep residual learning for image recognition},
  author={He, Kaiming and Zhang, Xiangyu and Ren, Shaoqing and Sun, Jian},
  booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition},
  pages={770--778},
  year={2016}
}