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模型的分析显示,残差连接承担了"层间修正"的功能。实验发现:
- 每一层残差向量的预测分布中,最高概率词与模型最终预测的重合率很高,且随层数增加而提高。
- 模型预测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模型规模持续增长的今天,这些看似基础的架构设计决策,往往决定了一个模型能否成功训练、能否达到预期的性能上限。
参考文献
- He, K., Zhang, X., Ren, S., & Sun, J. (2015). Deep Residual Learning for Image Recognition. arXiv:1512.03385
- He, K., Zhang, X., Ren, S., & Sun, J. (2016). Identity Mappings in Deep Residual Networks. arXiv:1603.05027
- Vaswani, A., et al. (2017). Attention Is All You Need. arXiv:1706.03762
- Xiong, R., et al. (2020). On Layer Normalization in the Transformer Architecture. ICML 2020
- Wang, H., et al. (2022). DeepNet: Scaling Transformers to 1,000 Layers. arXiv:2203.00555
- Elhage, N., et al. (2021). A Mathematical Framework for Transformer Circuits. Transformer Circuits Thread
- Zhu, D., et al. (2025). Hyper-Connections. ICLR 2025, arXiv:2409.19606
- Radford, A., et al. (2019). Language Models are Unsupervised Multitask Learners. OpenAI Technical Report