1. 概述
在本篇文章中,我们将介绍 Residual Networks(ResNets) 的核心思想和设计动机。我们将从 CNN 的发展历程说起,分析为什么需要 ResNets,接着讲解其核心组件 残差块(Residual Block),最后通过对比实验说明 ResNet 在训练深度网络时的优势。
2. CNN 简介
2012 年,Krizhevsky 等人提出了 AlexNet,这是深度学习在计算机视觉领域的一次重大突破。如下图所示,AlexNet 包含 5 个卷积层和 3 个全连接层:
✅ AlexNet 是第一个在图像分类任务中显著超越传统方法的深度学习模型,它奠定了 CNN 在视觉任务中的统治地位。
CNN 的核心结构通常由 卷积层 + 激活函数 + 池化层 组成。这种结构能够自动提取图像的层次化特征,从边缘、形状到复杂对象。
3. ResNet 的提出动机
随着研究的深入,人们发现:在网络中堆叠更多卷积层,通常能提升识别准确率。因为每一层都可以看作是在学习某种函数,网络越深,函数表达能力越强。
研究还发现:
- 前几层主要学习边缘(edges)
- 中间层学习形状(shapes)
- 后面层学习复杂对象(objects)
❌ 但堆叠层数并不是越多越好。当网络太深时,会出现 梯度消失(vanishing gradient) 的问题,导致训练困难,模型无法收敛。
⚠️ 更糟糕的是,即使模型能训练,也容易出现 退化(degradation) —— 网络变深后性能反而下降,不是因为过拟合,而是因为优化困难。
于是,ResNet 应运而生,它通过引入 残差连接(skip connection),有效缓解了这些问题。
4. 残差块(Residual Block)
ResNet 的核心组件是 残差块,如下图所示:
✅ 与传统 CNN 块不同的是,残差块中引入了 跳跃连接(skip connection)。输入 $ x $ 直接加到输出 $ F(x) $ 上,形成最终输出 $ F(x) + x $,而没有引入额外参数。
这种结构解决了两个关键问题:
- 缓解梯度消失:跳跃连接让梯度可以直接从后面传到前面,避免了梯度在链式法则中不断衰减。
- 解决退化问题:即使深层网络难以学习复杂函数,也能通过跳跃连接“复制”输入,至少保持性能不下降。
5. ResNet 网络结构
在构建完整网络时,作者将多个残差块串联起来,形成了不同深度的 ResNet 架构。比如 ResNet-18、ResNet-34、ResNet-50 等。
下图展示了 18 层和 34 层的普通 CNN 与其对应的 ResNet 版本的对比:
✅ 转换为 ResNet 的关键就是 插入跳跃连接,其余结构不变。
在 ImageNet 数据集上的训练结果如下图所示:
- 细线代表训练误差,粗线代表验证误差
- ResNet 收敛更快
- 层数更多的 ResNet 表现优于浅层 ResNet 和普通 CNN
6. 总结
本文介绍了 ResNet 的核心思想和优势:
- ✅ ResNet 通过引入残差块,解决了深度 CNN 中的梯度消失和退化问题
- ✅ 残差连接使梯度可以更顺畅地流动,从而支持更深层网络的训练
- ✅ 实验表明,ResNet 不仅训练更快,而且性能更优,尤其适用于深层网络
ResNet 的提出标志着深度学习模型可以做到“越深越好”,是 CNN 发展史上的一个重要里程碑。