TellWorldAI 世界档案
问档案English

首页›原理

原理

残差连接

残差连接把一个模块的输入直接加到它的输出上,让模块只学需要改变的那一部分。它使很深的网络可以训练,也是今天 Transformer 的标准组件。

时代 深度学习

是什么

残差连接(residual connection),也叫跳跃连接(skip connection),做法是把一个模块的输入 x 绕过模块本身,直接加到模块算出的东西上。于是输出是 x + f(x),其中 f 可以是任何神经模块,比如一叠卷积层、一个注意力层,或者一个小网络。[1] 这条旁路本身不带参数,它只是把输入原样送到后面。

怎么工作

关键在于模块需要学什么。如果某一层理想中应该实现的映射是 H,那么带残差连接的模块不必去学完整的 H,只要学残差 H − x,也就是输出相对输入应该改变多少。[1]

前向计算时,一个模块的输出等于它的输入加上中间各个残差函数之和,因此信号可以从浅层一路直接传到深层,不必在每一层都被重新变换一次。[1] 反向传播时,梯度里含有来自恒等通路的直接项,即使经过 f 的那部分梯度很小,梯度也不容易消失。[1]

举一个具体的小例子:如果某个模块的输入已经包含了需要的信息,它只要把 f(x) 压到接近 0,输出 x + 0 就等于原样保留输入;如果输入需要调整,模块也只需学会这段调整量,而不用从头学整个映射。[1]

从哪来

这个想法与 Kaiming He、Xiangyu Zhang、Shaoqing Ren 和 Jian Sun 的工作联系在一起。架构在 2015 年做出,论文《Deep Residual Learning for Image Recognition》于 2016 年在 CVPR 发表,论文首次提交是在 2015 年 12 月。[1][2] 论文把层重新表述为「参照层的输入去学习残差函数」,而不是学习没有参照的函数。[2]

它针对的问题是退化(degradation):把普通网络单纯堆深,效果反而比浅的网络更差。[1] 作者给出的证据是,残差网络更容易优化,并且可以从显著增加的深度中获得精度。[2] 他们在 ImageNet 上评估了深达 152 层的残差网络,比 VGG 网络深 8 倍,复杂度却更低;这些网络的集成在 ImageNet 测试集上取得 3.57% 的错误率,在 ILSVRC 2015 分类任务中拿到第一名。[2] 最初训练到 152 层的网络 ResNet-152 赢得了 2015 年 ILSVRC。[1]

今天用在哪里

Transformer 模型普遍使用残差连接,包括 BERT、GPT 和 ChatGPT。[1] 从 GPT-2 起,模型改用前置归一化(pre-normalisation),把归一化放在残差块内部、子层之前,而不是之后。[1] 很深的 Transformer 没有残差连接就训练不起来。[1]

局限

残差连接让深度变得可训练,但并没有让深度变便宜。预激活版本可以训练 200 层到 1000 层以上,而 2016 年训练一个 200 层模型,在 8 块 GPU 上花了三周。[1] 深度仍然受算力成本的约束。连接周围的设计细节也很重要:从 GPT-2 起,模型从后置归一化改为前置归一化,说明归一化相对残差通路放在哪里,会影响很深的模型能否训好。[1] 残差连接解决的只是其中一个具体障碍,也就是很深的普通堆叠难以优化的问题;搭建深层网络的其他问题,仍然要单独解决。

注释与来源

  1. Residual neural networkhttps://en.wikipedia.org/wiki/Residual_neural_network
  2. Deep Residual Learning for Image Recognitionhttps://arxiv.org/abs/1512.03385

引用本页: 残差连接. TellWorld, https://www.tellworld.net/zh/learn/residual-connection. 更新于 2026-11-07