核心要点

  • 能缓解梯度消失:残差 y = x + F(x),反向求导 ∂y/∂x = 1 + ∂F/∂x,那个常数 1 给梯度一条恒等捷径,避免深层连乘把梯度乘到趋近 0

  • 让深层网络可训练:没有残差,几十上百层堆叠极易梯度消失或网络退化,残差使梯度能稳定回传到浅层,是 Transformer 能堆很深的前提

  • 信息直通与缓解退化:每个子层学的是「在输入基础上的修正量」而非从零重建,恒等映射易于保留,缓解了深层带来的退化问题

  • LayerNorm 协同:残差负责梯度通路,LayerNorm 负责数值稳定,Pre-LN 把归一化放进残差分支内更易训练,Post-LN 放在残差相加之后表达力略强但更难收敛

标准回答

结论:能缓解,但要讲清原理

Transformer 每个子层(多头注意力前馈网络)外都包了一层残差连接,形式是 y = x + F(x),其中 F 是子层变换。残差连接确实能有效缓解梯度消失,核心原因在反向传播的求导上。

为什么能缓解梯度消失

对 y = x + F(x) 关于输入 x 求导,得到 ∂y/∂x = 1 + ∂F/∂x。关键就是这个常数项 1。在很深的网络里,梯度从输出回传要经过多层连乘,如果每一层的导数都小于 1,连乘之后会指数级衰减到接近 0,这就是梯度消失。而有了残差,每一层的局部梯度都带着一个 +1,相当于给梯度开了一条「恒等捷径」——即便子层 F 的梯度 ∂F/∂x 很小甚至接近 0,整体梯度也不会被乘没,至少能以接近原值的强度传回浅层。于是浅层参数也能得到有效更新,深层网络才训练得动。

第二个作用:信息直通,缓解网络退化

残差的另一层意义是改变了每个子层的学习目标。没有残差时,子层要直接输出目标表示;有了残差,子层只需学习「相对于输入 x 的修正量 F(x)」。当某层其实不需要做太多变换时,它只要把 F(x) 学得接近 0,整体就近似恒等映射,输入信息可以原样直通到后面。这解决了深层网络的退化问题——即层数加深反而效果变差。残差让「加深至少不会更糟」成为可能,信息和梯度都能在深层之间顺畅流动。

第三:与 LayerNorm 配合稳定训练

残差解决的是梯度通路,但子层输出叠加后数值分布可能漂移,所以 Transformer 还在残差结构里搭配 LayerNorm 做归一化,二者配合才稳。这里有两种放置方式:

Post-LN(原始 Transformer):结构是 LayerNorm(x + F(x)),即先残差相加再归一化。它表达能力略强,但深层时训练不太稳定,对学习率预热(warmup)很敏感,容易在训练初期梯度爆炸或不收敛。

Pre-LN(GPT、多数现代大模型):结构是 x + F(LayerNorm(x)),把归一化挪到子层输入处、放在残差分支内部。这样主干上始终保留一条干净的恒等通路,梯度回传更顺,训练显著更稳定,可以不用复杂的 warmup、能堆更深,代价是同等深度下表达力可能略逊。现代大模型基本都选 Pre-LN,正是看中它的训练稳定性。

一句话收尾

残差连接通过那条恒等捷径同时改善了「梯度的传播」和「信息的传播」,是深层 Transformer 能训练起来的结构性基础;再叠加 LayerNorm 控制数值稳定,二者缺一不可。

常见误区

⚠️ 常见踩坑

误区一:以为残差能彻底消除梯度消失——它只是大幅缓解,提供恒等捷径,并不保证 ∂F/∂x 一定健康。误区二:把残差和 LayerNorm 的功能混为一谈——残差管梯度/信息通路,LayerNorm 管数值归一化,作用不同。误区三:以为 Pre-LN 一定优于 Post-LN——Pre-LN 更稳更易训,但 Post-LN 在调好 warmup 后表达力可能更强,取舍要看场景。

追问

追问 1残差连接和 ResNet 里的残差是同一个思想吗?有什么异同?

思想同源,都是 y = x + F(x),都用恒等捷径缓解深层网络的梯度消失与退化,最早由 ResNet(视觉 CNN)提出。差异在于配套与场景:ResNet 残差块内搭配的是 BatchNorm,作用于卷积特征;Transformer 残差搭配的是 LayerNorm,作用于序列每个 token 的特征维度,且放置位置(Pre/Post-LN)会显著影响训练稳定性。本质相同,归一化手段和应用域不同。

追问 2为什么 Transformer 用 LayerNorm 而不是 BatchNorm?

BatchNorm 在 batch 维度上统计均值方差,依赖较大且稳定的 batch,而 NLP 里序列长度不定、batch 内样本差异大,统计量噪声大且推理时难以稳定估计。LayerNorm 在单个样本的特征维度内归一化,与 batch 大小和序列长度无关,对变长序列和小 batch 都稳定,因此更适合 Transformer。

追问 3如果去掉残差连接,Transformer 还能训练吗?会发生什么?

去掉残差后,深层 Transformer 极难训练。梯度回传失去恒等捷径,经过多层连乘后容易消失,浅层几乎得不到有效更新;同时信息无法直通,网络退化问题暴露,表现是 loss 难下降、收敛极慢甚至发散。浅层小模型或许勉强能训,但 Transformer 赖以成功的「堆很深」就不再可行,残差是其深度可扩展性的关键结构。

🔗 相似问题

同一考点的不同问法,面试官可能换着问,一起刷更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习