try ai
科普
编辑
分享
反馈
  • 跳跃连接

跳跃连接

SciencePedia玻尔百科
核心要点
  • 跳跃连接重新构建了网络层,使其学习相对于输入的残差(即变化量),从而极大地简化了优化问题,特别是对于恒等映射。
  • 它们创建了一条“梯度高速公路”,使梯度直接在网络中传播,从而有效缓解了极深架构中的梯度消失问题。
  • 这一原理是信号传播的通用工具,使得像 U-Net 这样的架构能够结合多尺度特征,也使得像 Transformer 这样的模型能够捕捉长程依赖关系。
  • 从信息论的角度来看,跳跃连接保证了来自输入的信息得以保留,因为网络层只能增加新特征,而不能覆盖现有特征。
  • 这一概念在其他复杂系统中也能找到相似之处,例如社交网络中的“小世界”现象和稳定蛋白质结构的二硫键功能。

引言

多年来,一个令人沮丧的悖论一直困扰着深度学习领域:随着神经网络建得更深,其性能往往会变差,这种现象被称为“退化”问题。这一挑战表明,在扩展模型和释放其全部潜力方面存在一个根本性障碍。当解决方案到来时,它不是一种复杂的新算法,而是一个惊人地简单的架构思想:跳跃连接。这种优雅的快捷方式允许信息绕过一层或多层,被证明是解锁训练数百甚至数千层深网络大门的关键。但是,这样一个简单的修改如何能产生如此深远的影响呢?

本文将揭开跳跃连接的神秘面纱,逐层剖析这一基本概念。我们将从其直观的起源,深入到其深刻的数学和理论基础。通过两章的内容,您将全面理解这一强大的工具。首先,在“原理与机制”一章中,我们将剖析跳跃连接如何改变学习过程、为梯度创建高速公路、保留信息,并将深度学习与优化理论联系起来。之后,在“应用与跨学科联系”一章中,我们将见证这一原理在实践中的多功能性,探索其在 ResNet、U-Net 和 Transformer 等里程碑式架构中的作用,并发现其在从神经科学到分子生物学等领域中令人惊奇的相似之处。我们从剖析使跳跃连接如此有效的基本原理开始我们的探索。

原理与机制

想象你是一位雕塑家,你的任务是将一块粗糙的大理石变成一个完美的球体。一个“普通”的深度网络就像一个试图在每一步都从头开始雕刻球体的雕塑家,这是一项极其困难的任务。但是,如果给你一个近乎完美的球体,只要求你做些微小的调整——凿掉那些微小的不完美之处呢?这是一个简单得多的问题。这便是​​跳跃连接​​背后的核心直觉。

学习差异:残差的力量

神经网络中的一个典型层试图直接从其输入 xxx 学习一个目标映射,我们称之为 H(x)H(x)H(x)。而​​残差块​​则重新构建了这个问题。它的输出不仅仅是输入的变换,而是输入加上一个变换:

output=x+F(x)\text{output} = x + F(x)output=x+F(x)

网络的任务不再是学习整个函数 H(x)H(x)H(x),而仅仅是学习​​残差​​,即差值 F(x)=H(x)−xF(x) = H(x) - xF(x)=H(x)−x。这个看似微不足道的变化带来了深远的影响。如果理想的变换是恒等函数本身(即 H(x)=xH(x) = xH(x)=x),一个普通的网络必须通过一系列复杂的非线性操作来艰难地逼近它。然而,一个残差块却可以通过简单地学习使残差函数 F(x)F(x)F(x) 为零来完美实现这一点——这对它的权重来说是一个数量级上更简单的任务。

通过考察学习曲面,我们可以极其清晰地看到这种效果。考虑一个简单的玩具问题,我们希望一个双层网络学习一个线性函数 y∗=αxy^* = \alpha xy∗=αx。一个普通的网络 y^=w2w1x\hat{y} = w_2 w_1 xy^​=w2​w1​x 必须学习权重使得 w1w2=αw_1 w_2 = \alphaw1​w2​=α。损失函数 L=(w1w2−α)2L = (w_1 w_2 - \alpha)^2L=(w1​w2​−α)2 创造了一个困难的非凸曲面,并且如果 α≠0\alpha \neq 0α=0,在原点 (0,0)(0,0)(0,0) 处会有一个棘手的鞍点。优化器很容易卡住。现在,引入一个跳跃连接:y^=x+w2w1x\hat{y} = x + w_2 w_1 xy^​=x+w2​w1​x。网络的任务现在是学习一个映射,使得 1+w1w2=α1 + w_1 w_2 = \alpha1+w1​w2​=α。损失函数变为 L=(w1w2−(α−1))2L = (w_1 w_2 - (\alpha - 1))^2L=(w1​w2​−(α−1))2。问题被重新定位为学习与恒等映射的偏差。如果目标是恒等映射本身(α=1\alpha=1α=1),损失函数变为 (w1w2)2(w_1 w_2)^2(w1​w2​)2。原点 (0,0)(0,0)(0,0) 不再是一个危险的鞍点,而是一个完美的全局最小值!网络只需什么都不做就能学会恒等映射,这是对一个先前难题的平凡解。。

梯度的“高速公路”

跳跃连接最著名的好处是它们对抗臭名昭著的​​梯度消失问题​​的能力。在非常深的网络中,梯度信号必须向后穿过许多层。在一个普通网络中,每一层的雅可比矩阵都会与梯度相乘。如果这些矩阵持续地缩小梯度,其幅度可能会指数级衰减,直到对于最早的层来说它实际上变为零,从而停止学习。

跳跃连接为梯度构建了一条“高速公路”。让我们看看数学原理。对于一个残差块 y=x+F(x)y = x + F(x)y=x+F(x),链式法则告诉我们损失 LLL 的梯度如何从输出 yyy 流回输入 xxx:

∂L∂x=∂L∂y∂y∂x=∂L∂y(1+∂F∂x)\frac{\partial L}{\partial x} = \frac{\partial L}{\partial y} \frac{\partial y}{\partial x} = \frac{\partial L}{\partial y} \left( 1 + \frac{\partial F}{\partial x} \right)∂x∂L​=∂y∂L​∂x∂y​=∂y∂L​(1+∂x∂F​)

注意那个壮丽的“+1+ 1+1”。它为梯度创建了一条直接、无阻碍的路径。流回 xxx 的总梯度是穿过残差函数 F(x)F(x)F(x) 的梯度与来自 yyy 的原始梯度的总和,后者被完全原封不动地传回。。在真实神经网络的矩阵-向量世界中,这变成了:

∇xL=(I+∇F(x))T∇yL\nabla_x L = (I + \nabla F(x))^T \nabla_y L∇x​L=(I+∇F(x))T∇y​L

单位矩阵 III 就是梯度的“高速公路”。。即使通过变换路径 ∇F(x)\nabla F(x)∇F(x) 的梯度很小或为零,恒等路径也能确保信号通过。

当我们堆叠 LLL 个这样的块时,输入的梯度与输出的梯度通过 LLL 个雅可比矩阵的乘积相关联。对于一个普通网络,这个乘积可能看起来像 ρL\rho^LρL,其中 ρ<1\rho < 1ρ<1 是一个缩小梯度的因子。对于一个残差网络,形式为 (I+∇Fl)(I + \nabla F_l)(I+∇Fl​) 的雅可比矩阵的乘积表现得要好得多。在合理的假设下,输入梯度的范数由 (1−ρ)L(1-\rho)^L(1−ρ)L 乘以输出梯度的范数作为下界,其中 ρ\rhoρ 是一个与变换路径相关的小数。这一项的衰减速度远远慢于 ρL\rho^LρL。对于一个有 L=24L=24L=24 层和 ρ=0.1\rho=0.1ρ=0.1 的网络,残差网络中的信号强度至少是其原始强度的 (0.9)24≈0.08(0.9)^{24} \approx 0.08(0.9)24≈0.08,而在普通网络中,它可能会被缩放 (0.1)24(0.1)^{24}(0.1)24,这是一个小到在计算上与零无法区分的数字。梯度高速公路使得学习信号在数百甚至数千层中保持活跃。

深度图的通用原理

这种创建快捷方式的想法并不仅限于前馈网络的堆叠层。它是在任何深度计算图中改善信号传播的一个通用原则。考虑一个按时间展开的​​循环神经网络​​(RNN)。时间步 ttt 的状态取决于时间步 t−1t-1t−1 的状态,形成一个长的序列链。梯度必须沿着整个链向后传播,这使得学习长期依赖关系变得困难。

如果我们引入一个跳跃连接,比如说从时间步 ttt 直接到时间步 t+2t+2t+2,我们就在展开的图中创建了一条并行路径。在反向传播期间,梯度现在可以直接从 t+2t+2t+2 流到 ttt,绕过中间步骤 t+1t+1t+1。这个快捷方式为梯度提供了一条额外的、更短的路径,从而缓解了时间域上的梯度消失问题,并允许网络更好地捕捉长程模式。。无论是在层的“空间”中,还是在序列的“时间”中,跳跃连接都是一个用于克服深度挑战的通用工具。

抓住重点:信息论视角

让我们换个角度。跳跃连接对流经网络的信息做了什么?我们可以使用​​互信息​​(MI)来分析这一点,它衡量一个块的输出 YYY 包含了多少关于其输入 XXX 的信息。

对于一个建模为 Y=X+F(X)+NY = X + F(X) + NY=X+F(X)+N(其中 NNN 是某种噪声)的残差块,跳跃连接保证了输出 YYY 内在地包含了原始输入 XXX。然后,函数 F(X)F(X)F(X) 可以专注于计算要添加到表示中的新特征。这种结构确保了一层不能轻易地丢弃或覆盖其输入中的有用信息;它只能对其进行补充。输入和输出之间的互信息由以下形式的表达式给出:

I(X;Y)=12ln⁡det⁡(I+… )I(X;Y) = \frac{1}{2} \ln \det(I + \dots)I(X;Y)=21​lndet(I+…)

这里的单位矩阵 III 是跳跃连接的直接结果,确保了信息保留的基线。。这提供了一个安全网:即使学习到的变换 F(X)F(X)F(X) 是无用的,来自 XXX 的原始信息也不会丢失。

掌握机制:初始化的艺术

简单的公式 y=x+F(x)y = x + F(x)y=x+F(x) 很优雅,但在实践中,其威力需要通过精心的实现来解锁。一种优美的技术是​​“零gamma”初始化​​。在带有批量归一化的标准残差块中,残差路径的最后一步通常是一个可学习的缩放因子 γ\gammaγ。

r=γ⋅(Normalized Features)r = \gamma \cdot (\text{Normalized Features})r=γ⋅(Normalized Features)

通过将 γ\gammaγ 初始化为0,整个残差路径 F(x)F(x)F(x) 在训练开始时被“静音”。该块变成了一个完美的恒等函数,y=xy = xy=x。由这样的块组成的深层堆栈在开始时就像一个单一、完全稳定的恒等映射。随着训练的开始,网络接收到梯度并开始更新 γ\gammaγ,使其从零开始增长。这让网络学习每个残差分支应该贡献多少,从一个简单的起点逐渐增加复杂性。这是一个高超的策略,既保证了初始化时的稳定性,又允许在训练期间具有充分的表达能力。。

此外,必须考虑两个分支之间的相互作用。跳跃路径携带原始输入 xxx 及其原始统计特性(例如,方差 σ2\sigma^2σ2),而归一化路径可能具有固定的方差1。简单地将它们相加可能会导致一条路径根据输入尺度主导另一条。更复杂的架构可以学习动态地门控每个路径的贡献,例如,通过使缩放因子 γ\gammaγ 与输入的标准差 σ\sigmaσ 成正比。这确保了两个分支保持平衡,创造了一个更鲁棒且尺度不变的模块。。

更深层的联系:作为优化器的ResNet

也许对残差网络最深刻的看法是,不应仅将其视为一堆层,而应看作一个执行数值优化的动态系统。从这个角度来看,每个残差块不仅仅是一个函数逼近器;它是一个旨在解决约束优化问题的算法中的一个迭代步骤。

考虑网络的目标是找到一个表示 yyy,它在满足某些约束 F(y)=0F(y)=0F(y)=0 的同时最小化某个能量 E(y)E(y)E(y)。我们可以使用拉格朗日量来写下这个问题,L(y,λ)=E(y)+⟨λ,F(y)⟩L(y, \lambda) = E(y) + \langle \lambda, F(y) \rangleL(y,λ)=E(y)+⟨λ,F(y)⟩。解决这个问题的一个标准方法是对主变量 yyy 进行梯度下降:

y(k+1)=y(k)−α∇yL(y(k),λ(k))y^{(k+1)} = y^{(k)} - \alpha \nabla_y L(y^{(k)}, \lambda^{(k)})y(k+1)=y(k)−α∇y​L(y(k),λ(k))

这个方程与 ResNet 更新规则 y(k+1)=y(k)+f(y(k))y^{(k+1)} = y^{(k)} + f(y^{(k)})y(k+1)=y(k)+f(y(k)) 有着惊人的相似之处。通过将残差函数 fff 等同于拉格朗日量的负梯度,f≈−α∇yLf \approx -\alpha \nabla_y Lf≈−α∇y​L,我们以一种新的视角看待 ResNet。跳跃连接提供了我们解的当前状态 y(k)y^{(k)}y(k),而残差块计算更新步骤,将解推向一个能量更低且更好地满足约束的状态。约束的效果由拉格朗日乘子 λ\lambdaλ 调节,并直接融入到学习到的更新步骤中。。

这个统一的视角揭示了跳跃连接的内在美。它不仅仅是训练深度网络的一种架构上的“技巧”。它是一个迭代优化过程的结构化体现,将深度学习模型的设计与丰富而基础的数学优化理论联系起来。这是一个简单的想法,它解决了一个工程问题,阐明了梯度流理论,保留了信息,并最终反映了我们要求模型执行的优化过程本身。

应用与跨学科联系

在经历了跳跃连接基本原理的旅程之后,人们可能会留下这样一种印象:这是一种聪明但或许狭隘的工程技巧,是针对梯度消失这个特定问题的巧妙解决方案。但这样看待它,就如同看着拱门的拱心石,却只看到一块楔形石头。一个基本概念的真正美丽和力量,并非体现在其孤立的形式中,而在于它所支撑的那些宏伟多样的结构。跳跃连接就是这样一块拱心石,通过探索它的应用,我们可以开始欣赏它帮助支撑起的现代科学的宏伟殿堂。

快捷方式的力量:从大脑到主干网络

让我们从一个简单到近乎琐碎的想法开始。想象一条长而简单的神经元链,信息只能从一个神经元传递到其直接邻居。要将消息从一条包含101个神经元的链的第一个神经元传递到最后一个,它必须进行100次连续的跳跃。任意两个神经元之间的平均路径是漫长而低效的。现在,想象一个单一的新连接——一个“快捷方式”——直接在第一个和最后一个神经元之间形成。突然之间,整个网络被改变了。最长的路径不再是100次跳跃,而是一次跳跃到终点,然后再往回走一小段。整个网络的平均路径长度骤然下降。。这种在从社交网络到神经科学等领域都观察到的“小世界”现象,正是跳跃连接的直观核心:一条绕过漫长序列过程的直接路径。

在深度学习的世界里,这个简单的快捷方式成为了“退化”问题的解决方案,这是一个令人沮沮丧的悖论,即让网络更深反而使其性能变得更差。长长的层链,就像长长的神经元链一样,导致信号及其训练梯度减弱和扩散,直至消失。残差连接 hℓ+1=hℓ+fℓ(hℓ)h_{\ell+1} = h_{\ell} + f_{\ell}(h_{\ell})hℓ+1​=hℓ​+fℓ​(hℓ​) 是我们神经系统快捷方式的完美神经网络模拟。hℓh_{\ell}hℓ​ 项是恒等路径——一条纯净、多车道的高速公路,允许信息和梯度从输入到输出无障碍地流动。学习到的变换 fℓ(hℓ)f_{\ell}(h_{\ell})fℓ​(hℓ​) 是一个局部出口匝道,网络可以在信息回到高速公路之前学习一个微妙的修正。

这种架构的稳定性是如此之深,以至于它成为了像生成对抗网络(GAN)这样臭名昭著的不稳定系统中的关键工具。训练一个GAN就像两个网络之间的精妙舞蹈,如果判别器变得过于强大或其梯度爆炸,整个系统就会崩溃。通过用残差块构建判别器,我们可以精确地控制梯度流。没有跳跃连接,梯度范数在每一层都会乘法性地缩小,对于常数 c<1c < 1c<1 和深度 LLL,其上界为 cLc^LcL,导致经典的梯度消失问题。有了跳跃连接,梯度范数的界在 (1−c)L(1-c)^L(1−c)L 和 (1+c)L(1+c)^L(1+c)L 之间,确保它既不会消失为零,也不会爆炸到无穷大。。这为学习提供了一个稳定的主干。然而,其魔力不仅仅在于添加快捷方式,还在于你如何添加它。为了保持高速公路真正畅通,恒等路径必须没有任何障碍物。这就是为什么“预激活”变体(其中非线性函数被放置在残差分支 fℓf_{\ell}fℓ​ 内而不是加法之后)表现更好的原因——它们确保跳跃连接是一个纯粹、未受污染的恒等映射,为信息提供了最干净的可能路径。。

编织锦绣:桥接尺度与结构

跳跃连接的力量远不止于创建简单的深层链条。它们是编织大师,能够将不同尺度甚至不同数据结构的信息缝合在一起。

这一点在 U-Net 架构中表现得最为明显,它是生物医学图像分割的基石。想象一下在医学扫描中勾勒出肿瘤轮廓的任务。网络首先需要理解“是什么”——这个像素是肿瘤的一部分吗?——这需要抽象、高层次的特征。但它还需要知道“在哪里”——究竟是哪些像素构成了它的边界?——这需要精细、高分辨率的空间细节。一个标准的编码器网络很擅长处理“是什么”的问题,它将图像压缩为其抽象的本质,但在此过程中丢失了“在哪里”的信息。U-Net 的解码器重建“在哪里”,但它如何恢复丢失的细节呢?答案是一系列引人注目的长程跳跃连接,它们桥接了编码器和解码器。这些连接将编码器早期层的高分辨率特征图直接馈送到解码器的相应层。解码器不必猜测边缘在哪里;它从编码器那里接收到一个详细的、高分辨率的“记忆”来指导其重建。。当然,这种编织需要精确。来自两条路径的特征图必须完美对齐,有时需要仔细裁剪以匹配因卷积而改变的空间维度。。

这种连接结构的不同部分以形成一个更连贯整体的原则,并不仅限于图像的像素网格。考虑一下图神经网络(GNN),它们在复杂、非欧几里得的网络世界中运行——从社交连接到分子结构。GNN 通过“消息传递”工作,每个节点通过聚合其邻居的信息来更新其状态。单层允许一个节点听到其直接朋友的消息。要了解更广泛的社区结构,我们需要堆叠层,让消息跨越多个跳跃进行传播。就像简单的链条一样,这个过程也容易出现信号衰减。GNN 中的残差连接充当放大器,使得网络可以建得足够深以扩展“消息视界”。这使得一个节点能够有效地整合来自许多跳跃之外的节点的信息,同时保持一个不会爆炸或消失的稳定表示。。跳跃连接允许每个节点在聆听来自图遥远角落的嘈杂信息的同时,记住自己的身份。

时间与语言的节奏

也许跳跃连接原理最令人惊讶和深刻的体现是在序列领域,从人类语言的节奏到时间序列数据的流动。

循环神经网络(RNN)是建模序列的经典工具,但它们在“长期记忆”方面表现不佳是出了名的。早期事件的影响会随着其在时间步中的传播而逐渐消失。然后出现了像门控循环单元(GRU)这样的门控架构。乍一看,其更新门和重置门的系统似乎是一种完全不同的东西。但如果我们仔细观察最终的更新方程 ht=(1−zt)⊙ht−1+zt⊙h~th_t = (1-z_t) \odot h_{t-1} + z_t \odot \tilde{h}_tht​=(1−zt​)⊙ht−1​+zt​⊙h~t​,一个熟悉的模式就会出现。这不过是一个动态的、逐元素的残差连接!先前的状态 ht−1h_{t-1}ht−1​ 是恒等路径。新的候选状态 h~t\tilde{h}_th~t​ 是“残差”。而更新门 ztz_tzt​,一个介于0和1之间的值,是一个学习到的、依赖于数据的开关,它决定了保留多少旧状态,以及添加多少新信息。。这个原理是如此基础,以至于它被独立发现并整合到循环架构的核心之中。

这种动态的、依赖于数据的跳跃连接思想在 Transformer 架构中达到了顶峰。早期的序列到序列模型存在信息瓶颈问题,它们试图在翻译(例如,翻译成法语)之前,将整个输入句子(例如,英语)压缩成一个单一的、固定大小的“上下文向量”。这就像在写评论之前,试图用一段话总结《战争与和平》的全部内容。注意力机制打破了这一瓶颈,实质上创建了一组全连接的跳跃连接。在生成输出的每一步,模型都可以直接“关注”原始输入序列的任何部分,并根据需要提取信息。。这种直接访问为梯度的回传提供了到输入任何部分的短而干净的路径,使得学习极长程的依赖关系成为可能。

放大一个现代的 Transformer 块,我们发现我们熟悉的朋友——残差连接——与注意力机制完美和谐地工作。看待这种合作关系的一个优雅方式是通过信号处理的视角。在这种观点下,残差连接充当一个低通滤波器。它提供了简单地传递信息的默认行为,保留了数据序列的基本、低频(即全局)结构。而位于残差分支上的复杂自注意力机制,则专门学习高频细节——词元之间错综复杂的非局部关系。。梯度分析证实了这种分工:损失的梯度有一条简单、稳定的路径通过残差连接返回,而通过注意力块的路径则要复杂得多。。跳跃连接是坚定的主干,它给予了注意力机制施展其魔力所需的稳定性和自由。

一个普遍原则:从硅到碳

我们以一个简单的快捷方式开始本章。我们已经看到它构成了深度视觉模型的骨干,在医学成像中桥接了不同尺度,扩展了图网络的覆盖范围,并赋予了语言模型长期记忆。这个原理是如此普遍,以至于在生命的结构中也能找到惊人的相似之处。

考虑一个蛋白质,它是一条长长的氨基酸链,必须折叠成精确的三维形状才能执行其生物学功能。这个折叠过程是一个巨大的挑战,需要在广阔的可能构象景观中导航。大自然的解决方案是什么?在其他力量中,它使用共价键——特别是二硫键——来充当“分子订书钉”。一个二硫键可以连接在线性序列中相距很远的两个氨基酸,迫使它们在三维空间中靠拢。这种长程快捷方式极大地限制了蛋白质的灵活性,减少了构象的混乱,并为最终的功能性结构提供了巨大的稳定性。

这个类比几乎是完美的。深度 ResNet 中的跳跃连接是蛋白质中二硫键的架构等价物。两者都是连接长链(网络中的层,蛋白质中的残基)遥远部分的非局部链接。两者都提供了一种稳定力,保护基本的全局结构免受局部变换的扰动。两者都是从简单的顺序构建块中创建稳健、复杂结构的优雅解决方案。。

从一个简单的快捷方式到生命和智能的架构,跳跃连接揭示了它自身并非一个简单的技巧,而是一个深刻而统一的工程、计算和自然原理。它教给我们一个深刻的教训:有时,向前最直接的道路是搭建一座桥梁,回到你开始的地方。