try ai
科普
编辑
分享
反馈
  • 残差网络 (ResNet)

残差网络 (ResNet)

SciencePedia玻尔百科
核心要点
  • 残差网络(ResNets)使用跳跃连接创建一条恒等路径,解决了梯度消失问题,从而能够成功训练更深的神经网络。
  • ResNet 模块学习的是一个“残差”函数,而不是一个复杂的变换,从而将学习任务简化为对输入进行微小的修正。
  • 该架构通过将函数锚定在恒等映射上,提供了隐式正则化,从而产生更平滑的模型,这些模型对对抗性攻击更具鲁棒性。
  • 深度 ResNets 可以被解释为常微分方程(ODE)的数值近似,将离散的深度学习架构与连续动态系统领域联系起来。

引言

对更强大人工智能的追求,常常催生出更深、更复杂的神经网络。然而,这条道路曾长期被一个根本性障碍所阻断:随着网络深度的增加,它们的训练变得异常困难,这在很大程度上是由于梯度消失问题,该问题抑制了早期层的学习。残差网络(ResNet)引入了一种看似简单却革命性的架构解决方案,打破了这一深度障碍。通过引入“跳跃连接”,ResNet 使得信息和梯度能够在各层之间无障碍地流动,从而可以有效训练数百甚至数千层深度的网络。本文旨在探索这一架构背后的精妙之处。首先,我们将剖析 ResNets 克服训练退化和保存信息的​​原理与机制​​。随后,我们将探讨其多样的​​应用与跨学科联系​​,揭示这个简单的想法如何对模型鲁棒性、持续学习产生深远影响,甚至在离散世界与连续的微分方程世界之间架起一座桥梁。

原理与机制

想象一下,创作一幅杰作不是从一张白纸开始,而是对一幅现有画作进行一系列微小、几乎难以察觉的修正。每次修正都很简单,这里调整一下颜色,那里微调一下线条。然而,经过数千次这样的微小编辑,原始图像便转化为全新而深刻的作品。这本质上就是残差网络(ResNet)背后的哲学。它讲述的不是宏大、复杂的变换,而是累积的简单性所蕴含的巨大力量。

严重的梯度交通拥堵

要理解 ResNet 的精妙之处,我们必须首先认识到它所解决的问题:一场困扰深度神经网络信息高速公路的巨大交通拥堵。在传统的深度网络中,信息通过许多层向前流动,而学习信号——即梯度——则向后流动。问题在于,当这些梯度信号逐层向后传播时,它们会与每一层变换的导数重复相乘。

让我们用一个简化的标量版本来描绘这个过程。假设一个层执行的变换在局部可以描述为将其输入乘以一个因子 aaa。一个信号要向后穿过 LLL 个这样的层,其大小将被乘以 ∣a∣L|a|^L∣a∣L。现在,如果每一层的变换哪怕只是稍微收缩一点——即 ∣a∣<1|a| \lt 1∣a∣<1,这在训练中很常见——梯度信号就会指数级衰减。在经过 20 个 a=0.5a=0.5a=0.5 的层之后,信号会衰减 (0.5)20(0.5)^{20}(0.5)20 倍,这还不到百万分之一!信号消失在噪声中,网络的最早几层无法接收到任何有意义的改进信息。这就是臭名昭著的​​梯度消失问题​​。你的网络前端在盲目飞行,学习陷入停滞。

ResNet 的解决方案看似简单。它不是学习一个变换 G(x)G(x)G(x),而是学习一个*残差*变换 F(x)F(x)F(x),并将输出定义为 y=x+F(x)y = x + F(x)y=x+F(x)。原始输入 xxx 被直接向前传递,跳过变换块,并在最后被加回。这种​​跳跃连接​​,也称为​​恒等快捷方式​​,就像我们信息高速公路上的一条快车道。

让我们回到我们的标量例子。新的层变换是 f(x)=x+g(x)f(x) = x + g(x)f(x)=x+g(x),其中 g(x)g(x)g(x) 是学习到的部分。现在的导数是 f′(x)=1+g′(x)f'(x) = 1 + g'(x)f′(x)=1+g′(x)。反向传播的梯度在每一层乘以 ∣1+a∣|1+a|∣1+a∣,其中 aaa 是学习部分的导数。即使 aaa 很小,比如 a=0.5a=0.5a=0.5,这个因子现在也变成了 1.51.51.5。经过 20 层后,信号被放大了 (1.5)20(1.5)^{20}(1.5)20 倍,超过了 3,300!通过添加恒等项,我们将基本动态从指数衰减变为了潜在的指数增长,确保了强大的梯度信号能够一直传回输入端。交通拥堵被清除了。

信息保存:超越梯度

这条恒等高速公路的作用不仅仅是传递梯度,它还保存了信息本身的丰富性。想象一个深度网络是一系列滤波器。一个普通网络按顺序应用这些滤波器:x3=G3(G2(G1(x0)))x_3 = G_3(G_2(G_1(x_0)))x3​=G3​(G2​(G1​(x0​)))。如果其中一个变换,比如 G1G_1G1​,是破坏性的,会发生什么?例如,假设它是一个由奇异矩阵 W=diag(1,0,0)W = \text{diag}(1,0,0)W=diag(1,0,0) 表示的线性映射,它将任何三维向量投影到 x 轴上。y 和 z 维度的任何信息都被消除了。无论后面的层 G2G_2G2​ 和 G3G_3G3​ 多么复杂,它们永远无法恢复这些丢失的信息。不同的输入可能都会被压缩到相同的输出,这种现象被称为​​表征崩溃​​。

然而,一个残差块计算的是 x1=x0+F1(x0)x_1 = x_0 + F_1(x_0)x1​=x0​+F1​(x0​)。即使学习到的函数 F1F_1F1​ 是同样的破坏性投影 WWW,现在的输出也由矩阵 (I+W)=diag(2,1,1)(I+W) = \text{diag}(2,1,1)(I+W)=diag(2,1,1) 决定。这个矩阵是完全可逆的!来自 x0x_0x0​ 的原始信息通过恒等路径得以保留,确保了不同的输入保持不同。恒等快捷方式充当了一个保障,确保每一层至少能够传递它所接收到的信息,从而防止灾难性的信息丢失。网络可以自由地使用学习到的函数 F(x)F(x)F(x) 来添加新信息,而没有破坏旧信息的风险。

修正的艺术

那么,这个函数 F(x)F(x)F(x) 到底在学习什么呢?“残差”这个名字给了我们线索。让我们回到我们的绘画类比。假设我们艺术品的当前状态是输入 xxx,我们的理想目标状态是向量 ttt。一个传统的网络层必须学习一个复杂的函数 HHH,将 xxx 直接转换为 ttt,即 H(x)≈tH(x) \approx tH(x)≈t。这是一项艰巨的任务,就像从头开始重绘整个场景。

残差块则重新定义了这个问题。输出是 y=x+F(x)y = x + F(x)y=x+F(x)。如果我们希望输出 yyy 成为我们的目标 ttt,那么我们需要 x+F(x)≈tx + F(x) \approx tx+F(x)≈t。重新整理这个式子,我们得到了一个惊人的见解:网络只需要学习 F(x)≈t−xF(x) \approx t - xF(x)≈t−x。函数 F(x)F(x)F(x) 学习的不是目标本身,而是​​残差​​——即目标与输入之间的差异或误差。

这使得学习任务变得异常简单。如果恒等映射已经是一个很好的近似(即 xxx 接近 ttt),那么函数 F(x)F(x)F(x) 只需要学习一个微小的修正。学习做一个小调整比从头开始学习一个完整、复杂的变换要容易得多。网络的各层不再是宏大的艺术家,而是一个由谦逊的专家组成的委员会,每个专家都负责进行小范围、有针对性的改进。我们甚至可以在训练过程中观察到这一点:学习到的修正向量 F(x)F(x)F(x) 倾向于与理想的误差向量 t−xt-xt−x 对齐,这证实了网络确实在学习一步一步地修复自己的错误。这种加性过程允许每个块直接、清晰地为改善最终输出做出贡献,例如为给定样本增加分类边界。

正则化的无形之手

恒等连接的优雅之处不止于此。它充当了一个隐式的正则化器,巧妙地引导网络学习更平滑、更具泛化能力的函数。我们可以使用一个称为​​全变分​​的概念来衡量函数的“摆动程度”。一条直线的全变分很低,而一团狂乱的涂鸦则很高。恒等函数 y=xy=xy=x 是完全平滑的,在区间 [0,1][0,1][0,1] 上的全变分为 1。

当我们构建一个残差块 y(x)=x+f(x)y(x) = x + f(x)y(x)=x+f(x) 时,我们将这个完全平滑的函数与学习到的函数 f(x)f(x)f(x) 相加。输出的全变分 TV(y)TV(y)TV(y) 现在被界定在 1+TV(f)1 + TV(f)1+TV(f) 和 ∣1−TV(f)∣|1 - TV(f)|∣1−TV(f)∣ 之间。这意味着即使学习到的部分 f(x)f(x)f(x) 非常复杂且曲折(高 TV(f)TV(f)TV(f)),恒等路径也能锚定整体函数,防止其过度剧烈地振荡。 这是一个深刻的架构先验:网络偏向于学习接近恒等映射的函数,而这些函数本身就是简单和平滑的。

这与早期的想法,如 Highway Networks 形成对比,后者提出使用一个可学习的门来控制通过恒等路径和变换路径的信息流。虽然理论上更灵活,但这种灵活性可能是一个弱点。如果网络学会“关闭”恒等路径,它就会失去这种绝佳的隐式正则化,并有退化为普通深度网络病态的风险。ResNet 的美在于其刚性的简单:恒等路径始终是开放的,一股恒定、稳定的力量。

没有免费的午餐:硬币的另一面

这种强大的机制并非万能药。正是这种防止梯度消失的动力学机制,在特定条件下,可能导致梯度​​爆炸​​。如果一个块的雅可比矩阵范数 ∥I+JF∥2\|I + J_F\|_2∥I+JF​∥2​ 持续大于 1,梯度的大小在反向传播时可能会指数级增长。

这与现代机器学习的另一个关键方面有关:​​对抗性鲁棒性​​。一个函数对微小输入扰动的敏感度由其​​利普希茨常数​​来衡量。一个大的利普希茨常数意味着对输入的微小、难以察觉的改变(一次“对抗性攻击”)可能导致输出发生巨大、灾难性的变化。残差块的利普希茨常数由 1+KF1 + K_F1+KF​ 界定,其中 KFK_FKF​ 是残差函数的利普希茨常数。对于一个深层的块堆栈,这些常数会相乘。因此,一个具有良好梯度流(大雅可比范数)的网络,可能同时也是一个高度敏感且不鲁棒的网络。

在稳定训练和鲁棒性之间存在着根本性的张力。这导致了对 ResNet 架构的进一步改进,例如对恒等路径和残差路径都进行缩放,以显式控制雅可比范数并保证稳定性。简单的 ResNet 块并非故事的终点,而是理解和控制深度网络行为新篇章的开端。

最深层的视角:将网络视为微分方程

那么,一个非常、非常深的残差网络的最终本质是什么?当我们堆叠越来越多的层,每一层都进行无穷小的修正时,一幅惊人的图景浮现出来。网络不再像一个离散的层序列,而是开始类似于​​常微分方程(ODE)的数值解​​。

可以将变换 xl+1=xl+F(xl,θl)x_{l+1} = x_l + F(x_l, \theta_l)xl+1​=xl​+F(xl​,θl​) 视为求解 ODE 的前向欧拉法的一个步骤。特征向量 xxx 是系统的状态,网络的“深度”则成为时间变量。网络不再仅仅是一个函数逼近器;它是一个连续时间动态系统,其状态 x(t)x(t)x(t) 根据规则 dxdt=F(x(t),θ(t))\frac{dx}{dt} = F(x(t), \theta(t))dtdx​=F(x(t),θ(t)) 演化。

从这个角度来看,网络学习的不仅仅是一组参数,而是一个微分方程的向量场。它试图找到一条能够导向正确答案的稳定轨迹。ResNet 块的一个不动点,即 F(x∗)=0F(x^*) = 0F(x∗)=0 的点,对应于连续系统的一个平衡点。这种深刻的联系弥合了离散的深度学习架构与经典物理学和数学的连续世界之间的鸿沟。添加跳跃连接这个简单、实用的工程技巧,被揭示为迈向更基本数学真理的一步,让我们得以一窥计算与自然景观背后那美妙的统一性。

应用与跨学科联系

既然我们已经探索了残差网络的内部工作原理,我们可能会倾向于认为它们仅仅是一种巧妙的工程技巧——一种解决梯度消失问题的管道方案。但如果止步于此,那将是只见树木,不见森林。引入简单的恒等快捷方式 y=x+F(x)y = x + F(x)y=x+F(x),不仅仅是一项架构上的调整,更是一种深刻的视角转变。它开启了与其它领域的丰富联系,并揭示了关于学习、稳定性和信息流本质的惊人深刻原理。让我们踏上探索这些联系的旅程,我们将会看到,这个简单的想法在控制论、统计力学,甚至生命本身的生物化学等不同领域中都能找到共鸣。

塑造一个更平滑的世界:鲁棒性与稳定性

残差结构最直接、最实际的后果之一是它对模型稳定性的影响。想象一下神经网络学习的函数是一个复杂的高维景观。一个标准的“普通”网络通常学习到的是一个崎岖不平、如同山脉般的地形,有陡峭的悬崖和狭窄的山谷。一个输入,作为这个景观上的一个点,可能因为最微小的推动而跌入错误的分类。这就是*对抗性攻击*的本质:对图像施加一个微小、通常难以察觉的扰动,从而欺骗一个强大的模型。

残差网络如何提供帮助?让我们看一个单独的块,y(x)=x+F(x)y(x) = x + F(x)y(x)=x+F(x)。假设我们将输入从 xxx 扰动到 x+δx + \deltax+δ。输出变为 y(x+δ)=(x+δ)+F(x+δ)y(x+\delta) = (x+\delta) + F(x+\delta)y(x+δ)=(x+δ)+F(x+δ)。输出的变化量为 ∥y(x+δ)−y(x)∥=∥δ+F(x+δ)−F(x)∥\|y(x+\delta) - y(x)\| = \|\delta + F(x+\delta) - F(x)\|∥y(x+δ)−y(x)∥=∥δ+F(x+δ)−F(x)∥。使用三角不等式,这个变化量的上界是 ∥δ∥+∥F(x+δ)−F(x)∥\|\delta\| + \|F(x+\delta) - F(x)\|∥δ∥+∥F(x+δ)−F(x)∥。如果残差函数 FFF 的行为良好——具体来说,如果它是 KFK_FKF​-利普希茨连续的,意味着它放大距离的倍数不超过 KFK_FKF​——那么输出的变化量上界为 (1+KF)∥δ∥(1 + K_F) \|\delta\|(1+KF​)∥δ∥。

这个小小的公式揭示了惊人的信息。整个块的稳定性由残差分支 FFF 的稳定性决定。如果 FFF 内部的权重保持较小,其利普希茨常数 KFK_FKF​ 也会很小。在理想情况下,如果 F(x)F(x)F(x) 为零,该块就变成一根完美的恒等导线,扰动完全不变地通过。网络通过鼓励其残差块学习接近于零的函数——即尽可能少做事——来学习稳定性!这是一个优美的原则:我们不是强迫网络去学习一个复杂的恒等映射,而是免费提供恒等映射,只要求网络学习那些微小而必要的偏差。

当我们堆叠许多这样的块时,这个特性使得整个网络的函数景观更加平滑。一个更平滑的景观意味着输出相对于输入的梯度趋于更小。由于许多对抗性攻击通过沿梯度方向移动输入来最大化输出的变化,更小的梯度使得网络天生更具鲁棒性。攻击者需要将输入推动得更远才能达到同样的效果,这使得攻击不那么隐蔽。网络不再是险峻的山脉,而是一片平缓起伏的丘陵,在这里,小步前进只会导致微小的变化。

穿越时间的学习:演进,而非革命

残差结构也从根本上改变了我们对网络随着深度增加而学习内容的看法。一个普通网络是一系列变换,输入在其中被反复、彻底地重塑。而 ResNet 则提出了一种更具演化性的过程。主通道,即恒等路径,承载着大部分信息向前传递,而每个残差块 F(x)F(x)F(x) 则像一个专家,进行小范围、有针对性的修正。

这与机器学习理论中一个强大的思想——​​提升(boosting)​​——惊人地相似。在提升方法中,一个强大的模型不是一次性构建的,而是通过添加一系列“弱学习器”来构建,每个新的学习器都经过专门训练,以纠正当前集成模型的错误。ResNet 可以被看作是在深度维度上的一种提升。每个块 Fℓ(x)F_\ell(x)Fℓ​(x) 都是一个弱学习器,它观察特征 xℓx_\ellxℓ​ 并提出一个更新。训练过程鼓励这个更新能最好地减少整体损失,这意味着它专注于修正前面层次处理错误的“最难”样本。一个深度 ResNet 不是一个单一的整体模型;它是一个由修正层层叠加而成的集成体。

这种“旧知识加新改进”的模型对于人工智能领域的一个严峻挑战——​​持续学习​​——具有深远的影响。一个模型如何能在学习新任务(任务 B)时,不灾难性地忘记先前学过的任务(任务 A)?残差框架提供了一个优雅的概念性解决方案。想象一下,恒等路径是传输从任务 A 中获得的稳定、通用知识的管道。要学习任务 B,我们可以冻结这条主路径,只训练一个新的、小的残差函数 F(x)F(x)F(x),该函数学习任务 B 所需的特定调整。最终的预测成为通用知识和任务特定修正的结合。如果新任务的修正很小,其对旧任务的影响就会被最小化,从而减轻灾难性遗忘。

流动架构:从高速公路到二硫键

跳跃连接的核心,是关于信息应如何流动的选择。它是一条高速公路,允许梯度从最终损失直接传播回最早的层,绕过每个残差块中可能稀释梯度的变换。这条直接路径是一种“隐式深度监督”,确保了即使是极深网络的最前几层也能接收到强大、清晰的训练信号。

这种建立直接、长程连接以实现稳定性的原则并非人工网络所独有。它是构建鲁棒复杂系统的通用策略。考虑一下蛋白质的结构。蛋白质是由氨基酸组成的长链,必须折叠成精确的三维形状才能发挥功能。一条长而柔韧的链条会受到无数随机热波动的影响,使得稳定的折叠成为一个统计学上的奇迹。大自然的解决方案是什么?它通常使用​​二硫键​​——在两个氨基酸残基之间形成强共价键,这些残基在序列上可能相距很远,但在所需的三维结构中却很接近。

这个类比非常惊人。ResNet 是一长串的层,而跳跃连接就是一个“数字二硫键”。它在遥远的层之间创建了一个非局部链接,绕过了中间处理,并为信息流强加了一个稳定的全局结构。正如二硫键降低了未折叠蛋白链的熵以稳定其天然折叠状态一样,跳跃连接也约束了网络的函数空间以稳定训练过程。似乎当自然和网络架构师面临在长序列系统中创造稳定性的挑战时,他们得出了相似的解决方案。

连续统视角:微分方程之舞

也许所有联系中最美、最深刻的,来自于我们提出一个简单问题的时候:如果我们有无限多层会怎样?如果我们将一层到下一层的步长缩小到无穷小会怎样?

残差更新规则是 xl+1=xl+hF(xl,l)x_{l+1} = x_l + h F(x_l, l)xl+1​=xl​+hF(xl​,l),这里我们明确了步长 hhh。如果我们将层索引 lll 视为离散时间,这个方程与​​前向欧拉法​​完全相同,后者是求解形如 dxdt=F(x,t)\frac{dx}{dt} = F(x, t)dtdx​=F(x,t) 的常微分方程(ODE)近似数值解的基本方法。

突然之间,ResNet 不再是一个离散的层堆栈,而是对一个连续动态系统的模拟。输入向量 xxx 不再是穿过一系列门;它是在由残差函数定义的向量场中流动。网络的深度就是积分时间。训练网络不再是设置离散的权重;而是学习运动定律本身——即向量场 F(x,t)F(x, t)F(x,t)——它将引导输入状态到达正确的最终状态。

这个视角不仅仅是一个诗意的类比;它是一个强大的分析和创造工具。我们现在可以引入整个、历经数百年的动态系统和数值分析工具箱来理解我们的网络。例如,一个深度 ResNet 的稳定性可以通过检查线性块的更新矩阵 (I+hA)(I + hA)(I+hA) 的特征值来分析,这直接对应于欧拉法的稳定性判据。如果步长 hhh 相对于由 AAA 定义的动力学过大,积分将会“爆炸”——这一现象反映了在不稳定的网络训练中看到的梯度爆炸 [@problem_-id:3169653]。

此外,这种联系是具有生成性的。如果 ResNet 只是前向欧拉法的离散化,那么其他更复杂的 ODE 求解器呢?我们可以设计一个由隐式方程 xk+1=xk+hF(xk+1)x_{k+1} = x_k + h F(x_{k+1})xk+1​=xk​+hF(xk+1​) 定义的“后向欧拉网络”。这个网络将非常稳定,但它的前向传播需要在每一层解决一个求根问题。反向传播将涉及隐式微分和求解线性系统。虽然计算上要求更高,但这类架构为构建鲁棒且可证明稳定的模型开辟了新的可能性。

简单性的不合理有效性

我们从一个简单的架构修改 x+F(x)x + F(x)x+F(x) 开始,它源于训练更深模型的实际需求。我们的旅程表明,它的意义远不止于此。这个不起眼的跳跃连接告诉我们,稳定的模型是那些其组件学会尽可能少做事的模型。它为能够持续演化和学习的模型提供了一个框架。它揭示了自身是生命结构中稳定性机制的回响。最后,它消解了离散层与经典动力学连续流之间的数字边界。

残差网络的故事是科学思想统一性的美丽见证。它提醒我们,有时最优雅的解决方案是最简单的,而一个好的想法,如果用好奇心去审视,可以成为一扇通往一个更宏大、更相互关联的知识宇宙的窗户。