1. 概述

在本篇文章中,我们将介绍 Residual Networks(ResNets) 的核心思想和设计动机。我们将从 CNN 的发展历程说起,分析为什么需要 ResNets,接着讲解其核心组件 残差块(Residual Block),最后通过对比实验说明 ResNet 在训练深度网络时的优势。

2. CNN 简介

2012 年,Krizhevsky 等人提出了 AlexNet,这是深度学习在计算机视觉领域的一次重大突破。如下图所示,AlexNet 包含 5 个卷积层和 3 个全连接层:

alexnet

AlexNet 是第一个在图像分类任务中显著超越传统方法的深度学习模型,它奠定了 CNN 在视觉任务中的统治地位。

CNN 的核心结构通常由 卷积层 + 激活函数 + 池化层 组成。这种结构能够自动提取图像的层次化特征,从边缘、形状到复杂对象。

3. ResNet 的提出动机

随着研究的深入,人们发现:在网络中堆叠更多卷积层,通常能提升识别准确率。因为每一层都可以看作是在学习某种函数,网络越深,函数表达能力越强。

研究还发现:

  • 前几层主要学习边缘(edges)
  • 中间层学习形状(shapes)
  • 后面层学习复杂对象(objects)

❌ 但堆叠层数并不是越多越好。当网络太深时,会出现 梯度消失(vanishing gradient) 的问题,导致训练困难,模型无法收敛。

⚠️ 更糟糕的是,即使模型能训练,也容易出现 退化(degradation) —— 网络变深后性能反而下降,不是因为过拟合,而是因为优化困难。

于是,ResNet 应运而生,它通过引入 残差连接(skip connection),有效缓解了这些问题。

4. 残差块(Residual Block)

ResNet 的核心组件是 残差块,如下图所示:

residual block

✅ 与传统 CNN 块不同的是,残差块中引入了 跳跃连接(skip connection)。输入 $ x $ 直接加到输出 $ F(x) $ 上,形成最终输出 $ F(x) + x $,而没有引入额外参数。

这种结构解决了两个关键问题:

  • 缓解梯度消失:跳跃连接让梯度可以直接从后面传到前面,避免了梯度在链式法则中不断衰减。
  • 解决退化问题:即使深层网络难以学习复杂函数,也能通过跳跃连接“复制”输入,至少保持性能不下降。

5. ResNet 网络结构

在构建完整网络时,作者将多个残差块串联起来,形成了不同深度的 ResNet 架构。比如 ResNet-18、ResNet-34、ResNet-50 等。

下图展示了 18 层和 34 层的普通 CNN 与其对应的 ResNet 版本的对比:

resnet

✅ 转换为 ResNet 的关键就是 插入跳跃连接,其余结构不变。

在 ImageNet 数据集上的训练结果如下图所示:

error resnet

  • 细线代表训练误差,粗线代表验证误差
  • ResNet 收敛更快
  • 层数更多的 ResNet 表现优于浅层 ResNet 和普通 CNN

6. 总结

本文介绍了 ResNet 的核心思想和优势:

  • ✅ ResNet 通过引入残差块,解决了深度 CNN 中的梯度消失和退化问题
  • ✅ 残差连接使梯度可以更顺畅地流动,从而支持更深层网络的训练
  • ✅ 实验表明,ResNet 不仅训练更快,而且性能更优,尤其适用于深层网络

ResNet 的提出标志着深度学习模型可以做到“越深越好”,是 CNN 发展史上的一个重要里程碑。


原始标题:Residual Networks