ResNet 教程:理解并实现针对 CIFAR-10 的残差网络

本教程提供了关于残差网络(ResNet)的全面指南,这是一种革命性的深度学习架构,改变了图像分类任务。我们将涵盖残差学习理论、ResNet 架构、在 PyTorch 中针对 CIFAR-10 数据集的实现,以及训练和调试的实用建议。本教程适合初学者和高级实践者,包含详细的解释和代码。


1. ResNet 简介

1.1 什么是 ResNet?

ResNet 由何凯明等人在 2015 年的论文 “Deep Residual Learning for Image Recognition” 中提出,解决了训练非常深的神经网络的挑战。传统深层网络面临梯度消失退化问题(随着深度增加,准确率饱和或下降)。ResNet 通过残差学习解决了这些问题,使得具有数百甚至上千层的网络成为可能。

1.2 深层网络的问题

随着神经网络加深:

  • 梯度消失:反向传播过程中梯度变得过小,导致学习减慢或停止。
  • 退化问题:更深的网络可能比浅层网络表现更差,这不是因为过拟合,而是优化变得更困难。

ResNet 通过引入快捷连接缓解了这些问题,使网络能够学习残差函数而非直接映射。

1.3 残差学习

在传统网络中,层堆栈学习映射 H(x)H(x)H(x),其中 xxx 是输入,H(x)H(x)H(x) 是期望输出。ResNet 将其重新定义为学习残差函数
H(x)=F(x)+xH(x) = F(x) + xH(x)=F(x)+x

  • F(x)F(x)F(x):由层(例如几个卷积层)学习的残差映射。
  • xxx:通过快捷连接添加的输入。
  • H(x)H(x)H(x):最终输出,计算为残差加上输入。

如果最优映射接近于恒等函数(H(x)≈xH(x) \approx xH(x)x),F(x)F(x)F(x) 学习小的扰动(F(x)≈0F(x) \approx 0F(x)0)比传统层直接学习恒等函数更容易。这使得训练更深的网络更简单且更有效。

1.4 快捷连接

  • 恒等快捷连接:直接将输入 xxx 添加到输出,无需额外参数(H(x)=F(x)+xH(x) = F(x) + xH(x)=F(x)+x)。
  • 投影快捷连接:当输入和输出的尺寸不同(例如通道数或空间尺寸)时,使用 1x1 卷积匹配尺寸。

1.5 ResNet 的优势

  • 优化更简单:残差连接促进梯度流动,缓解梯度消失问题。
  • 提高准确率:更深的 ResNet(例如 ResNet-50、ResNet-101)比浅层网络具有更高的准确率。
  • 可扩展性:能够训练非常深的网络(高达 1000 多层)。
  • 泛化性:广泛应用于图像分类、目标检测、分割等领域。

2. ResNet 架构

ResNet 有多种深度(例如 ResNet-18、ResNet-50、ResNet-101)。我们将重点介绍通用结构,并实现一个适合 CIFAR-10(32x32 RGB 图像,10 个类别)的较小 ResNet。

2.1 构建模块

ResNet 由残差块组成,每个块实现残差学习原理。

基础块(用于 ResNet-18/34)
  • 结构:
    • 两个 3x3 卷积层,带有批量归一化和 ReLU。
    • 快捷连接将输入添加到输出。
  • 公式:y=F(x,{ Wi})+xy = F(x, \{W_i\}) + xy=F(x,{ Wi})+x
  • 因其简单性,用于较浅的 ResNet。
瓶颈块(用于 ResNet-50/101/152)
  • 结构:
    • 1x1 卷积(减少通道数)。
    • 3x3 卷积。
    • 1x1 卷积(恢复通道数)。
    • 每个卷积后有批量归一化和 ReLU。
    • 快捷连接。
  • 公式:与基础块相同,但 F(x)F(x)F(x) 更复杂。
  • 用于更深的 ResNet 以降低计算成本。

2.2 架构概览

对于 CIFAR-10,我们将设计一个 ResNet-20(20 层,适合小图像)。架构包括:

  1. 初始卷积:3x3 卷积处理输入(3 个通道 → 16 个通道)。
  2. 残差阶段:通道数逐渐增加的残差块组(16、32、64)。
  3. 全局平均池化:将空间维度缩减为 1x1。
  4. 全连接层:映射到 10 个类别。
层分解
  • 阶段 1:6 个基础块,16 个通道。
  • 阶段 2:6 个基础块,32 个通道。
  • 阶段 3:6 个基础块,64 个通道。
  • 总卷积层数:1+(6+6+6)×2=371 + (6 + 6 + 6) \times 2 = 371+(6+6+6)×<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱看烟花的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值