2015年,何凯明团队在ImageNet竞赛中提交了一个152层的神经网络模型。这个深度是当时主流模型的8倍,但训练误差却更低——这在当时简直是不可思议的事情。因为在那之前,人们普遍认为网络越深,训练越困难。实际上,研究者们观察到一个反直觉的现象:增加层数反而会让模型性能下降

这个看似矛盾的现象背后,隐藏着深度学习最核心的技术挑战之一。而解决这个问题的关键——残差连接(Residual Connection),后来成为Transformer、GPT、LLaMA等所有现代大模型架构不可或缺的组成部分。

深度网络的三大困境

在理解残差连接为什么有效之前,需要先搞清楚为什么深度网络难以训练。困扰深层神经网络的三大问题分别是梯度消失、梯度爆炸和网络退化。

梯度消失:越深的层越"学不动"

反向传播算法通过链式法则计算梯度:每一层的梯度需要乘以上一层的梯度。假设一个100层的网络,如果每层传递梯度时衰减到原来的0.95倍,那么到达第1层的梯度只有原来的 $0.95^{100} \approx 0.006$——几乎是零。

这意味着前面几层的参数几乎得不到有效更新,它们基本保持随机初始化的状态。而后面的层虽然在更新,但输入来自前面"随机"的层,质量可想而知。最终的结果是:模型越深,效果越差。

梯度爆炸:反向的灾难

与梯度消失相反,如果每层梯度略微放大(比如1.05倍),经过多层传播后梯度会呈指数级增长,导致权重更新过大,损失函数剧烈震荡甚至发散。虽然梯度爆炸相对容易通过梯度裁剪来缓解,但它仍然是深层网络训练中不可忽视的问题。

网络退化:反直觉的现象

网络退化(Degradation Problem)是最令人困惑的问题。理论上,一个深层网络至少应该能模拟一个浅层网络——只要把多余的层设置为恒等映射(输入等于输出)即可。按这个逻辑,深层网络的性能至少不应该比浅层网络差。

但实验结果给出了相反的结论。何凯明团队的实验显示,56层网络在训练集和测试集上的表现都不如20层网络。这不是过拟合(训练集表现也更差),也不是优化问题(训练充分),而是深层网络确实更难学习。

这个现象揭示了一个关键事实:用非线性层去逼近恒等映射本身就很困难。普通的网络层要学习一个"什么都不做"的变换,反而比学习一个复杂变换更难。

残差连接的核心思想

残差连接的核心洞察非常简单:既然让网络直接学习目标映射 $H(x)$ 很困难,不如让它学习残差 $F(x) = H(x) - x$,然后输出 $H(x) = F(x) + x$。

为什么这更简单?

考虑两种情况:

情况一:恒等映射是最优的 如果最优解恰好是恒等映射($H(x) = x$),那么残差 $F(x) = 0$。让一堆非线性层学会输出全零,比学会输出原始输入要简单得多——权重初始化本来就接近零,只需要保持在零附近即可。

情况二:恒等映射不是最优的 如果最优解需要学习某种变换,残差连接仍然提供了额外的"直通通道",使得梯度可以更顺畅地回传。

数学上的优雅

残差块的前向传播公式为:

$$y = F(x, W_i) + x$$

在反向传播时,对 $x$ 的梯度为:

$$\frac{\partial \mathcal{L}}{\partial x} = \frac{\partial \mathcal{L}}{\partial y} \cdot \frac{\partial y}{\partial x} = \frac{\partial \mathcal{L}}{\partial y} \cdot \left( \frac{\partial F}{\partial x} + 1 \right)$$

这个 $+1$ 是关键。即使 $\frac{\partial F}{\partial x}$ 很小甚至为零,梯度仍然可以通过 $+1$ 这一项无损地传递到前面的层。这被称为梯度高速公路(Gradient Highway)

相比之下,没有残差连接的网络,梯度需要乘以每一层的雅可比矩阵:

$$\frac{\partial \mathcal{L}}{\partial x_1} = \frac{\partial \mathcal{L}}{\partial x_L} \prod_{i=1}^{L-1} \frac{\partial x_{i+1}}{\partial x_i}$$

当层数很深时,这些矩阵相乘会导致梯度指数级衰减或增长。

Transformer中的残差连接

2017年发表的Transformer论文直接采用了残差连接的设计,每个子层(自注意力层和前馈网络层)都包裹在残差结构中:

$$\text{Output} = \text{LayerNorm}(x + \text{Sublayer}(x))$$

但这里有一个关键问题:LayerNorm 应该放在残差连接的哪个位置?

Pre-Norm vs Post-Norm 的博弈

这个看似细微的位置差异,对训练稳定性有巨大影响。

Post-Norm(原始Transformer)

$$x_{t+1} = \text{Norm}(x_t + F_t(x_t))$$

归一化在残差加法之后进行。这种方式确保每层输出都经过归一化,分布稳定。但梯度分析显示:

$$\frac{\partial \mathcal{L}}{\partial x_t} = \frac{\partial \mathcal{L}}{\partial x_{t+1}} \cdot J_{\text{Norm}} \cdot \left( \frac{\partial F_t}{\partial x_t} + I \right)$$

其中 $J_{\text{Norm}}$ 是LayerNorm的雅可比矩阵。关键是,即使是残差路径的梯度,也要经过LayerNorm的变换。虽然单层的 $J_{\text{Norm}}$ 特征值接近1,但多层累积后仍会导致梯度衰减。

Pre-Norm(现代大模型的选择)

$$x_{t+1} = x_t + F_t(\text{Norm}(x_t))$$

归一化在残差加法之前进行。梯度分析:

$$\frac{\partial \mathcal{L}}{\partial x_t} = \frac{\partial \mathcal{L}}{\partial x_{t+1}} \cdot \left( \frac{\partial F_t}{\partial \text{Norm}(x_t)} \cdot J_{\text{Norm}} + I \right)$$

注意那个 $+I$(单位矩阵)在括号内,残差路径的梯度完全绕过了LayerNorm。无论子层发生什么,总有一个完整的梯度副本无损地传递回来。

实验数据的验证

研究数据清晰地展示了这种差异。在一个模拟实验中,对12层网络进行反向传播:

层数 Post-Norm 梯度范数 Pre-Norm 梯度范数
1(最前) 0.0012 0.9845
6(中间) 0.0876 0.9912
12(最后) 1.0000 1.0000

Post-Norm的梯度从前向后呈指数级衰减,而Pre-Norm在各层保持了近乎一致的梯度强度。

权衡:训练稳定性 vs 最终性能

Pre-Norm的稳定性优势并非没有代价。研究发现,Pre-Norm输出的激活值会逐层累积增长,因为残差直接相加而没有归一化。这被称为**激活累积(Activation Accumulation)**问题。

更重要的是,有研究者指出Pre-Norm的"深度"有水分。展开Pre-Norm的递推公式:

$$x_L = x_0 + F_0(x_0) + F_1(\frac{x_1}{\sqrt{2}}) + F_2(\frac{x_2}{\sqrt{3}}) + ...$$

当层数很深时,相邻层的输入差异很小,$F_{t+1}(\text{Norm}(x_{t+1}))$ 与 $F_{t+1}(\text{Norm}(x_t))$ 非常接近。这意味着堆叠多层的效果更像是增加宽度而非深度

这也是为什么Post-Norm一旦训练成功,最终性能往往优于Pre-Norm——它的层次结构更加"扎实"。但Post-Norm的训练难度使其在实践中难以应用于深层网络。

现代大模型(GPT系列、LLaMA、PaLM等)普遍选择Pre-Norm,因为对于100层以上的网络,训练稳定性是首要考虑因素。GPT-2论文特别指出,他们采用了残差输出的缩放因子来缓解激活累积问题。

残差流:Transformer的信息高速公路

2021年,Anthropic团队在《A Mathematical Framework for Transformer Circuits》论文中提出了"残差流"(Residual Stream)的概念,为理解Transformer内部工作机制提供了全新的视角。

作为通信总线的残差流

可以将残差流理解为一个高维的通信通道:

$$x^{(l+1)} = x^{(l)} + \text{Attention}(x^{(l)}) + \text{FFN}(x^{(l)})$$

每一层(注意力和前馈网络)都从残差流中"读取"信息,处理后"写入"回残差流。这个过程是累加的——信息一旦写入就持续存在,除非被后续层显式删除。

这种设计带来几个重要特性:

虚拟权重(Virtual Weights):任意两层之间存在隐式的直接连接。比如第5层可以"看到"第2层的输出,即使中间隔了两层。这是因为残差流的线性性质允许通过矩阵乘法将所有中间层的变换"折叠"成一个等价变换。

带宽瓶颈:残差流的维度(通常是隐藏维度)是有限的,而每一层的神经元数量往往数倍于此(前馈网络通常是4倍)。这意味着信息必须在残差流中进行"压缩"和"解压"。

内存管理:研究发现,某些神经元会执行"内存管理"任务——读取残差流中的特定维度并写入负值,相当于主动清理不再需要的信息。

层间修正机制

对训练好的Transformer模型的分析显示,残差连接承担了"层间修正"的功能。实验发现:

  1. 每一层残差向量的预测分布中,最高概率词与模型最终预测的重合率很高,且随层数增加而提高。
  2. 模型预测token在每层残差向量预测分布中的概率值也在逐步提高。

这说明模型在逐层改进其预测——每一层都在"修正"上一层的不足。残差连接确保了这种修正不会丢失之前积累的信息。

DeepNet:实现1000层Transformer

2022年,微软研究院提出了DeepNet,成功将Transformer扩展到1000层——比之前的深度记录高了一个数量级。

核心创新:DeepNorm

DeepNet的核心是一个新的归一化函数DeepNorm,它修改了残差连接的形式:

$$x_{t+1} = \text{LN}(\alpha \cdot x_t + F_t(x_t))$$

其中 $\alpha$ 是一个放大因子,根据网络深度自动设置。对于1000层的Transformer,$\alpha = \sqrt{41 \times L} \approx 202$。

这个设计的直觉是:放大残差分支的权重,使得模型更接近恒等映射,从而提高训练稳定性。

理论保证

DeepNet论文提供了严格的理论分析。他们证明,使用DeepNorm后,模型参数更新的范数可以被有界控制:

$$\|\Delta \theta\| \leq O(\sqrt{L})$$

这意味着即使网络非常深,参数更新也不会发散。相比之下,普通Post-Norm的更新范数可能呈指数级增长。

实验结果

DeepNet在多语言翻译任务上取得了显著成果。一个200层、32亿参数的模型,在7482个翻译方向上,比当时最先进的48层、120亿参数模型高出5个BLEU分。这证明了合理的残差设计可以带来实际的性能提升,而不仅仅是解决训练问题。

残差连接的未来:Hyper-Connections

残差连接统治深度学习近十年后,2025年ICLR会议接收了一篇名为《Hyper-Connections》的论文,提出了残差连接的替代方案。

跷跷板效应

论文指出,Pre-Norm和Post-Norm实际上是在两种问题之间做权衡:

  • Pre-Norm:解决梯度消失,但会导致表示坍塌——深层的隐藏特征变得高度相似,额外层的贡献被稀释。
  • Post-Norm:缓解表示坍塌,但重新引入梯度消失问题。

这就像跷跷板的两端:按下一端,另一端就会翘起。根本原因在于:残差连接预设了输入和输出之间的固定连接强度

可学习的连接强度

Hyper-Connections的核心思想是让网络自己学习连接的强度。它引入了两种连接:

深度连接(Depth-Connections):层与层之间的连接权重,可以看作是广义的残差连接。

宽度连接(Width-Connections):同一层内多个隐藏向量之间的连接,允许信息横向流动。

通过一个可学习的矩阵 $M$ 来控制这些连接:

$$\tilde{H} = M \cdot [H^{(0)}, H^{(1)}, ..., H^{(L)}]^T$$

其中 $H^{(l)}$ 是第 $l$ 层的隐藏状态矩阵。动态版本(DHC)还允许这个矩阵根据输入自适应调整。

实验结果

在OLMo模型的预训练实验中,使用动态Hyper-Connections的模型表现出显著优势:

  • 训练收敛速度提升1.8倍
  • 在ARC-Challenge基准测试上提升6分
  • 训练过程中没有出现损失尖峰(而基线模型频繁出现)

更重要的是,可视化分析显示Hyper-Connections形成了一种混合模式:既保留了Pre-Norm对低层特征的持续访问,又具备Post-Norm的长程衰减特性。

实践指南

基于以上分析,以下是残差连接在实际应用中的选择建议:

何时选择Pre-Norm

  • 网络深度超过12层
  • 训练大语言模型(GPT风格)
  • 希望简化超参数调优
  • 不想使用复杂的warmup策略
  • 优先考虑训练稳定性

何时考虑Post-Norm

  • 网络较浅(12层及以下)
  • 微调已有的Post-Norm模型(如BERT)
  • 复现旧论文的结果
  • 对最终表示的归一化有严格要求

关键配置参数

残差缩放因子:对于深层Pre-Norm网络,可以对每个子层的输出乘以缩放因子 $\approx 1/\sqrt{L}$(L为层数)。GPT-2使用了约0.14的缩放因子来稳定训练。

初始化策略:Post-Norm对初始化更敏感,需要更仔细地设置权重初始化的方差。Pre-Norm相对宽容。

学习率warmup:Post-Norm几乎必须使用warmup;Pre-Norm可以省略或使用更短的warmup。

最终LayerNorm:Pre-Norm模型通常需要在所有Transformer块之后、输出投影层之前添加一个最终的LayerNorm,用于归一化累积的激活值。

总结

残差连接的引入是深度学习发展史上的里程碑。它通过一个看似简单的加法操作,优雅地解决了困扰研究者多年的梯度消失问题,使深度网络的训练成为可能。

从ResNet到Transformer,从Post-Norm到Pre-Norm,再到DeepNet和Hyper-Connections,这一技术路线的演进反映了深度学习领域对"如何训练深层网络"这一核心问题的持续探索。每一个改进都伴随着对问题本质的更深入理解。

理解残差连接的工作原理,不仅有助于正确使用现有架构,更是设计下一代神经网络的基础。在AI模型规模持续增长的今天,这些看似基础的架构设计决策,往往决定了一个模型能否成功训练、能否达到预期的性能上限。


参考文献

  1. He, K., Zhang, X., Ren, S., & Sun, J. (2015). Deep Residual Learning for Image Recognition. arXiv:1512.03385
  2. He, K., Zhang, X., Ren, S., & Sun, J. (2016). Identity Mappings in Deep Residual Networks. arXiv:1603.05027
  3. Vaswani, A., et al. (2017). Attention Is All You Need. arXiv:1706.03762
  4. Xiong, R., et al. (2020). On Layer Normalization in the Transformer Architecture. ICML 2020
  5. Wang, H., et al. (2022). DeepNet: Scaling Transformers to 1,000 Layers. arXiv:2203.00555
  6. Elhage, N., et al. (2021). A Mathematical Framework for Transformer Circuits. Transformer Circuits Thread
  7. Zhu, D., et al. (2025). Hyper-Connections. ICLR 2025, arXiv:2409.19606
  8. Radford, A., et al. (2019). Language Models are Unsupervised Multitask Learners. OpenAI Technical Report