返回
查看原链接原链接
Bilibili17分26秒 · —

残差网络(Residual Network, ResNet)详解

残差网络(Residual Network, ResNet)详解

核心结论:ResNet 的核心思想是让神经网络只学习输入与输出之间的“残差”(残差映射),并通过跳跃连接(skip connection)将原始输入直接加到残差输出上,从而能够在训练时保留输入信息、缓解深层网络的梯度传播问题,使训练更深、更稳定的网络成为可能,并在图像分类、超分辨率以及物理系统建模(如常微分方程)等任务中取得巨大成功。

引言与背景

为什么需要 ResNet

  • 在处理输入输出映射时,传统做法是让神经网络直接学习从输入 \(x\) 到输出 \(y\) 的近似函数 \(f\)。
  • 经典任务示例:超分辨率(Super Resolution)
  • \(x\) 为低分辨率图像(例如一幅流体流动的模糊图)
  • 目标输出 \(y\) 为高分辨率/超分辨率版本
  • 直觉:输出 \(y\) 中绝大部分信息(大致结构、大尺度特征)已存在于输入 \(x\) 中,真正需要额外补充的是那些小的细节差异(高频特征)。
  • 因此,与其学习一个从 \(x\) 到 \(y\) 的完整映射,不如先复制一份 \(x\),然后只学习两者之间的残差 \(f\)(即 delta 变化)。这个想法在很多应用中都成立,尤其在输出与输入高度相似的情况下。

深层网络的困难

  • 历史背景:2012 年之后,随着 AlexNet 在 ImageNet 上取得巨大成功,研究者普遍认为网络越深,在图像分类、自然语言处理等复杂任务上的表现通常越好(前提是足够的数据和算力)。因此推动了更深网络的研究潮流。
  • 核心问题
  • 遗忘问题:在非常深的网络中,原始输入 \(x\) 经过很多层后容易被“遗忘”,难以在最终层保留其信息。
  • 反向传播不稳定:深度网络的梯度反向传播容易变得病态(ill-conditioned),导致训练困难。
  • ResNet 通过跳跃连接(也叫捷径连接)部分绕过了这些问题:将输入 \(x\) 的副本直接加到网络输出的残差上,这样即使在很深的网络末端,输入信号也能以一种简单的方式传递过去,并且梯度可以更流畅地回传。

ResNet 的架构与原理

典型 ResNet Block 的组成

一个标准的 ResNet 块大致由以下部件构成(并非固定模板,可灵活调整):

  • 若干卷积层(Convolutional Layer)(通常两个)
  • 归一化层(Normalization)(如 Batch Normalization)
  • 激活函数(Activation)(如 ReLU)
  • 然后有一个跳跃连接:将原始输入 \(x\) 直接加到这些变换的输出上(即残差部分)
  • 最后再经过一次激活函数(最终输出)

示意图(文本描述):

x → [Conv → Norm → Activation → Conv → Norm] → 加 x(跳跃连接)→ Activation → 输出

关键操作:神经网络的内部变换输出为残差 \(F(x)\),最终输出为 \(H(x) = F(x) + x\)。这里的跳跃连接实现了一个恒等映射(identity)的旁路。

尺寸匹配与 stride/padding 的选择

  • 如果使用卷积步长 stride = 1 并且 padding = 1,则输入和输出在空间维度上尺寸相同。这种 ResNet 块适用于输入输出大小一致的场景(例如图像到图像)。
  • 对于超分辨率任务,低分辨率图像需要先进行上采样(例如将每个像素扩充为一个块,每个块内复制相同像素值),使其像素数与高分辨率目标图像一致。这样 \(x\) 和 \(y\) 才能作为同尺寸张量处理。

用于分类任务时的调整

  • 当要将图像压缩成少量类别特征时,可以调整 stride 和卷积核数:
  • 设置 stride = 2,用来将空间维度减半(相当于下采样)
  • 同时将卷积滤波器的数量加倍(特征通道数加倍)
  • 重复多次操作,将高分辨率图像逐步压缩成更小尺寸、更抽象的特征表示,其流程与普通卷积神经网络(CNN)类似。
  • 这样 ResNet 依然可以用于分类任务,同时保持跳跃连接的优点。

ResNet 论文的重大影响

  • 发表机构与时间:2015 年 CVPR 论文,由微软(Microsoft)团队提出。
  • 性能成就:在三个标准基准上首次全面获得第一名:
  • ImageNet
  • COCO
  • CIFAR-10
  • 引用量:截至视频拍摄时,该论文引用数已超过 100,000,是机器学习文献中最有影响力的论文之一。
  • 引人注目之处:当时分类器竞争非常激烈,该论文一出就刷新了所有主流排行榜,堪称开创性。
  • 网络深度:论文中展示的 34 层 ResNet 比当时许多能可靠训练的网络更深。

为什么深能提升能力

  • 深度增加能提升网络的表达能力和对复杂问题的拟合能力,前提是有足够的数据和计算资源。
  • 传统深层网络训练困难,而 ResNet 的跳跃连接和残差学习使得训练极深网络成为可能。

ResNet 与数值积分(特别是欧拉法)的联系

残差更新与欧拉积分

  • 将状态向量 \(x_k\) 视为某时间步 \(k\) 的系统状态(例如机器人所有关节的角度或位置向量),要预测下一时刻 \(k+1\) 的状态 \(x_{k+1}\)。
  • ResNet 执行的操作是:\(x_{k+1} = x_k + f(x_k, \theta)\),其中 \(f\) 是该层的残差映射。
  • 这正是数值积分中欧拉法(Euler integration) 的离散格式:

\[ x_{k+1} = x_k + \Delta t \cdot \dot{x}(x_k) \] 这里 \(\Delta t \cdot \dot{x}\) 对应残差 \(f\)。因此,ResNet 的逐层传播可以被看作是用欧拉法来对差分方程/常微分方程进行时间步进。

改进积分器的可能性

  • 欧拉法是最简单、精度和稳定性较差的数值积分方法。
  • 可以考虑用更高级的积分器替代:
  • Runge-Kutta 法
  • 辛积分器(symplectic integrator)或变分积分器(variational integrator)
  • 这些思想与下一类网络——神经常微分方程(Neural ODE) 密切相关。

从 ResNet 到 Neural ODE

  • 如果将 ResNet 视为欧拉离散化,那么可以进一步抽象出连续动态模型:

设 \( \dot{x} = f(x, \theta) \),用神经网络建模向量场 \(f\),然后让状态 \(x\) 沿时间连续演化。

  • 这就是 Neural ODE 的核心思想(2018 年 NeurIPS 论文),ResNet 是其离散特例。
  • 优势:
  • 可以使用高阶积分器(误差更小、可控性更好)
  • 可以施加物理约束(如能量守恒、辛结构、变分结构)
  • 相当于拥有无穷小步长 \(\Delta t\) 的很多个 ResNet 层(类似于连续复利),能得到更平滑、更精确的动态流。
  • 注意:ResNet 本身是一种离散时间步进,而 Neural ODE 是连续时间模型。

ResNet 的实用价值与现代影响

  • 超越纯视觉领域:ResNet 被广泛用于各种应用中,包括图像超分辨率、图像分类、物理系统建模(如常微分方程)等。
  • 后世的灵感源泉
  • U-Net 架构(用于扩散生成模型)的许多跳跃连接设计都受到 ResNet 思想的启发。
  • 大量现代卷积网络采用残差块。
  • 工程建议:参考资料提供 PyTorch 官方教程和示例,鼓励读者下载代码,在图像分类或超分辨率任务上亲自实践。
  • 总结要点
  • 关键创新:不是直接学习 \(x \to y\),而是学习残差 \(y - x\),并通过跳跃连接将 \(x\) 与残差相加。
  • 更深网络可训练性提升,不易遗忘输入,反向传播更顺畅。
  • 与数值积分(欧拉法)天然相通,为科学计算中的微分方程建模提供了新的视角。

限制与待确认问题

  • 原始视频中未明确提及 ResNet 的缺点(如训练时间、内存开销、过拟合风险等)。
  • 关于不同深度的具体对比(如 18 层 vs 34 层)的量化结果未给出,仅提到 34 层平面网络难以训练。
  • ResNet 的残差学习是否在所有任务中都能有效利用基于图像先验的“输出与输入相似”假设并不绝对,存在失效场景(例如输出与输入完全无关的场景)。
  • 跳跃连接本身引入的额外参数和计算量极小(identity 映射),但具体性能提升的机制在研究中仍有讨论。

行动清单

  1. 访问 PyTorch 官方 ResNet 教程和示例,理解代码实现。
  2. 在实际数据集(如 CIFAR-10、ImageNet子集)上复现 ResNet,并对比有/无跳跃连接的网络训练难度和准确率。
  3. 尝试将 ResNet 应用到一个超分辨率任务,观察残差学习带来的收敛与性能提升。
  4. (进阶)阅读 2015 年 CVPR 论文和 2018 年 Neural ODE 论文,体会两者关系,尝试在简单动力系统上实现基于残差的学习。

总结

ResNet 通过残差学习和跳跃连接,解决了深度神经网络中的输入遗忘和梯度不稳定的问题,使训练上百层的网络成为现实。其思想简洁而普适:许多回归或预测任务中,输出与输入共享大量已知信息,只需学习两者间的差异。它不仅革新了图像分类,还为后续神经常微分方程等模型提供了基础连接,是深度学习历史上的一座里程碑。