大模型的训练能稳定跑通,背后靠的是一连串看起来不起眼的工程设计,残差连接就是其中之一。它回答了一个朴素的问题:为什么网络层数一多,效果反而变差,甚至根本训不动。理解它,你就能看懂「这个模型有 N 层」这句话背后的技术含量。
问题起点:层数多了,为什么反而训不动
直觉上,神经网络层数越深,表达能力越强,应该越聪明。但早期实践给出的结果相反:层数堆到一定程度后,训练变得困难,效果不升反降。这里的关键在于训练依赖反向传播——把误差信号从输出端一层层往回传,更新每一层的参数。
这条回传路径越长,信号衰减或混乱就越严重。可以把它想象成一句话经过几十个人传话,传到最后一棒时往往已经面目全非。梯度信号在穿过数十层后变得微弱,前面的层几乎收不到有效的更新指令,整个网络自然训不动。
残差连接做了什么:加一条直通车道
残差连接的思路很直接:让某一层的输出,等于「这一层算出的结果」加上「输入的原样」。用式子表达就是 H(x) = F(x) + x,其中 F(x) 是这层新学到的部分,x 是直接跳过来的输入。它相当于在层层堆叠的计算之外,额外铺了一条不经过变换的直通车道。
这个设计最早在 2015 年前后被系统性地验证有效,之后成为深层网络的标准组件。今天主流的大语言模型几乎都采用了类似结构,只是形态和叫法在不同架构里有所变化。它不是一个锦上添花的技巧,而是让「深」真正成为可能的底座。
它带来的三个直接好处
第一,反向传播有了捷径。误差信号可以顺着直通车道直接回到更前面的层,不再被中间的乘法层层削弱,梯度消失的问题得到明显缓解。
第二,每一层的学习目标变简单了。传统结构要求每层从头算出一个完整表示,残差结构则让每层只学「在输入基础上需要改动的增量」,任务难度明显下降。
第三,最差情况也可控。即使某一层学得很差,直通车道的存在让它最多是「没带来改进」,而不至于把前面层已经学到的好结果整体破坏掉。这给训练带来一种容错性。
一个容易记住的比喻:改稿而不是重写
可以把残差连接类比成修改文章:如果每改一遍都要全文重写,改到第二十遍时原文的骨架很可能已经跑偏;如果在原文基础上做增补,改二十遍,骨架依然在。深层网络里的残差结构,就是让每一层在上一层的成果上做小步增量,而不是推倒重来。
这个比喻的边界也要说清楚:计算机里的「增量」是精确的数值运算,不存在人改稿时的理解偏差,但它的代价是需要额外的计算与内存来保存和传递那条直通通路。
残差连接解决不了什么
残差连接能缓解梯度消失、让深层网络训得动,但它不是万能的。它解决不了数据质量差的问题,也解决不了任务本身定义不清的问题。如果训练数据本身有噪声、标注混乱,或者目标函数设计不当,加再多直通车道也训不出好模型。它属于「让优化更容易」的结构改进,并非「让数据更好」或「让任务更简单」的来源。
此外,残差结构本身会增加计算量和内存占用,因为它要同时保存输入和输出两条路径。在算力受限的场景下,这个开销需要被纳入权衡。换句话说,它解决了「深度带来的训练障碍」,但没有解决「深度带来的成本」。
一张表看懂:有残差与没有残差的差别
| 对比维度 | 没有残差连接的深层网络 | 带残差连接的深层网络 |
|---|---|---|
| 层数规模 | 几十层后训练明显变难 | 上百层、上千层也能稳定训练 |
| 反向传播信号 | 逐层衰减,前面层几乎收不到更新 | 经直通车道回到前层,衰减明显缓解 |
| 每层学习目标 | 从头计算完整表示 | 只学相对输入的增量 |
| 最差情况 | 某一层学坏可能拖累整条网络 | 某一层最多「不改进」,不易拖垮整体 |
残差连接速查
- 核心公式:H(x) = F(x) + x,输出 = 本层计算 + 输入原样。
- 解决的问题:深层网络的梯度消失、训不动。
- 实现代价:多一条直通通路,计算与内存开销增加。
- 它管不了:数据质量、任务定义、训练成本。
普通人的一个可用判断
你不需要会推导公式,只需要记住一个判断:当看到「模型有 N 层」这样的描述时,能训得动并非理所当然,背后是一整套工程设计的支撑。残差连接正是其中一块关键零件。它和上下文窗口、分词方式这些概念一样,属于理解什么是大语言模型时绕不开的基础构件。
同样的深层网络技术,也不只服务于文本模型。视频生成、画面处理这类任务里的模型同样依赖深层结构,视频延展、智能重构图这些功能背后,都有类似的结构在支撑它们跑得足够深、足够稳。


