资讯动态

从残差连接到超级连接:大模型架构演进的底层逻辑

发布时间:2026/10/27 8:23:44 来源:尧图企业网站定制
LLM 前沿(1)从残差连接到超级连接做 LLM 相关工作的人几乎天天和“残差连接”打照面。无论是 Transformer 里每个子层外面的x attention(x)还是 DeepNet、GPT 系列里的 Pre-Norm 结构残差连接都是支撑大模型能跑到几百层、几千亿参数的隐形地基。但最近我在看一些前沿架构和训练框架时发现一个很有意思的趋势单纯的“跳过一层再接回来”已经不够用了研究者开始把连接本身当成一个可学习的、跨层级的、甚至全局路由的问题来设计。我把这类思想统称为“超级连接”——它不是某一个具体论文里的名词而是残差思想在深度网络和 LLM 体系中的一次系统升级。这篇文章想聊清楚三件事残差连接为什么如此关键它在现代 LLM 里到底是以什么形态存在的以及从“残差”到“超级连接”这条路上有哪些值得关注的工程实践和踩坑经验。内容尽量不堆公式但该有的推导和参数选择逻辑会讲透。适合正在做 LLM 训练、微调、推理部署或者单纯想理解大模型底层设计的朋友。1. 残差连接为什么大模型离不开它1.1 从梯度消失讲起先说最朴素的问题为什么早期深层网络那么难训练一个 50 层的网络从输出端反向传播梯度到第一层每经过一层都要乘上一个权重矩阵的导数。如果权重初始化得比较随意这个梯度信号要么指数级衰减梯度消失要么指数级爆炸梯度爆炸。你可以把它想象成传话游戏——每个人都会把听到的内容稍微改动一点传 50 个人的时候原始信息基本就剩不下什么了。网络越深反向传播时“有效信息”越少前面的层学不到东西整个模型就成了一个只有后半段在工作的畸形结构。ResNet 的解决办法很直接在每一层旁边加一条“直通车道”让信息可以不经过权重变换直接传到后面。用公式写就是y F(x) x其中F是卷积、全连接、注意力之类的复杂变换。这样反向传播时梯度从x那条路可以直接流回前面即使F的梯度很小至少还有一个恒等映射在兜底。于是 100 层、1000 层的网络也能训起来了。1.2 残差连接的数学直觉从函数近似的角度看残差连接等于把目标函数拆成了“恒等映射 残差修正”。假设我们要学一个复杂的映射H(x)与其直接拟合H(x)不如让网络学习H(x) - x也就是“还需要改多少”。这个差值通常比原始输出小得多学习起来更稳。这里有一个经常被忽略的点残差连接并不是强制网络去学恒等映射而是给网络一个“可以偷懒”的选择。如果某一层确实对效果没有贡献网络可以很容易地把F的权重推到接近 0让输出几乎等于输入。这一点非常关键它意味着多余的层不会像传统全连接那样成为纯粹的阻碍而更像是“附加的可选加工步骤”。在现代 LLM 里这个性质被发挥到了极致。Transformer 的层数动辄几十上百但实际训练中经常发现即使把某些中间层的残差分支权重置零模型的性能下降也不会很剧烈。这说明残差连接给了网络极大的冗余度也让深度扩展变成了可能。1.3 残差连接在 Transformer 中的具体形态Transformer 里的残差连接不是简单的x F(x)它还涉及层归一化LayerNorm的位置。常见的有两种Post-Normx LayerNorm(x Attention(x))或者更精确地在残差分支之后做归一化。这是原始 Transformer 的用法。Pre-Normx Attention(LayerNorm(x))归一化放在子层之前。GPT 系列、LLaMA、以及绝大多数现代 LLM 都采用这种结构。为什么现代模型几乎都倒向 Pre-Norm因为 Post-Norm 在深层网络中容易产生梯度爆炸问题需要额外的学习率 warmup 和精细的初始化。而 Pre-Norm 能让梯度更加平稳即使层数很深也可以直接训练。代价是模型在残差流里“流动”的信息可能会逐渐累积导致激活值的方差变大。所以后来 DeepNorm 提出在残差分支上缩放把激活值控制在合理范围同时保证梯度足够大才让 1000 层 Transformer 成为可能。这里值得深入理解的是“残差流”Residual Stream这个概念。你可以把整个网络看成一条贯穿所有层的“信息河流”每一层注意力、FFN都是河流旁边的一个“加工站”它们从河流中取出信息做变换再把结果注回河里。残差连接就是维持这条河流不断流的关键。LLM 中的很多机制——比如 induction head归纳头、长期记忆的存储与读取——都可以在残差流框架下解释。比如某个注意力头可能在残差流中写入了一个 key-value 对几百层之后另一个头再从残差流中读取这个信息。如果没有残差连接这些跨层的信息传递根本不可能发生。2. “超级连接”残差思想的前沿演进2.1 什么是超级连接我所说的“超级连接”并不是一个严谨的学术名词而是指一类超越“单层跳过”的连接设计思路。传统的残差连接只发生在相邻层之间x_{l1} x_l F_l(x_l)。超级连接则倾向于让信息能够在更广阔的范围内自由流动甚至由网络自己决定从哪里取信息、往哪里送信息。几个典型的标志性技术方向跨层连接不只是l层连接l1层而是让第l层可以连接到第lk层跳过中间所有层。DenseNet 就是这类思想的早期代表每一层的输入是之前所有层输出的拼接连接密度极高。门控连接在残差路径上加入一个可学习的门控Gate让网络决定当前层的信息注入多少。Highway Network 对每个残差分支学习一个介于 0 和 1 之间的开关。路由连接把每层当成一个“专家”由一个小网络路由器决定当前 token 应该经过哪条连接路径。混合专家模型MoE虽然不叫超级连接但它的 token 级路由思想本质上也是连接策略的一种进化。在 Transformer 的世界里超级连接还体现在“跨块连接”上。比如有些工作会把第 1 层的输出也直接注入第 10 层的注意力计算中或者把前面所有层的残差流状态做加权平均再喂给后面的层。这种做法打破了层与层之间严格串行的限制让浅层信息和深层信息能更好地融合。2.2 跨层连接与密集路径从 DenseNet 到 ResNetV2DenseNet 至今看仍然很惊艳它对每层都建立“前馈直通”的稠密连接第l层的输入是所有前面层输出的拼接。梯度可以从任何一层直接传到所有更浅的层彻底消除了梯度路径过深的问题。但 DenseNet 的显存占用非常大因为每一层都要保存所有前层的输出特征图。Transformer 领域也有类似尝试。比如LayerScale给每个残差分支的输入乘上一个可学习的对角线缩放向量这其实是对残差连接强度的精细控制。还有一些工作直接将前几层的输出按可学习权重混合后送入最后的分类层相当于浅层特征直接参与最终预测。ResNetV2 则是改变了残差分支的计算顺序把激活函数和归一化都移到预激活位置Pre-Activation让残差路径本身保持干净。后来的 Pre-Norm Transformer 可以看作是这一思想在 LLM 中的延伸。可以说从 DenseNet 到 Pre-Norm大家一直在寻找“如何让信息最顺畅地在网络中流动”的答案。2.3 门控与缩放让信息自主决定走多远门控连接是超级连接中我最喜欢的一个方向。Highway Network 的公式是y g(x) * H(x) (1 - g(x)) * x其中g是一个 sigmoid 函数输出的门控值。当g0时输入直接穿透当g1时完全走变换分支。这种设计的优势在于网络可以自己学习到底是“直接抄作业”还是“认真加工”而且1 - g的存在保证了恒等路径永远可用。现代 LLM 中虽然没有这么显式的门控单元但类似思想无处不在。举例来说**GLU 变体如 SwiGLU 激活函数**在 FFN 内部引入了门控机制相当于对信息流做了一次筛选。而 FlashAttention 和 GQA 这样的机制也可以理解为在注意力阶段对信息传递路径做了更精细的门控。另一个重要操作是残差缩放Residual Scaling。DeepNorm 的做法是在残差连接上乘以一个与层数相关的缩放因子 α保证深层网络的激活值方差不会失控。还有 ReZeroRescale and Zero-init直接把残差分支的初始缩放设为 0让网络以一个纯恒等映射的“空网络”开始训练。实测 ReZero 能显著加速收敛这就是残差连接强度可以“被学习”的直接证据。3. 现代 LLM 中的连接策略实践3.1 Pre-Norm 与 Post-Norm 的取舍如果你自己动手训过一个稍大一点的 Transformer大概率会纠结 Norm 放哪。我的经验是在数据量和计算资源有限的条件下无脑用 Pre-Norm 通常不会出大问题。原因有三第一Pre-Norm 的梯度路径是“直接的”从最后一层到第一层梯度几乎等于所有残差相加不会因为层数的增加出现指数衰减。第二Pre-Norm 对学习率 warmup 的依赖比 Post-Norm 小得多。Post-Norm 在初期如果学习率稍大非常容易出现 loss 剧烈震荡。第三Pre-Norm 配合 DeepNorm 或 QK-Norm可以让深层模型的训练稳定性达到工业级标准。但 Post-Norm 也并非一无是处。有研究表明Post-Norm 在固定层数下表达能力更强因为它能更好地归一化每一层的输出分布减少层间耦合。GPT-2 时代还有一些实验显示 Post-Norm 在浅层比如 12 层以下效果更好。问题在于一旦层数超过 20Post-Norm 的梯度和激活值方差就很难控制了。如果你在微调一个开源大模型比如 LLaMA预训练时已经用了 Pre-Norm微调阶段最好保持原结构不要乱动。我曾见过有人为了“优化”把模型改为 Post-Norm结果 loss 直接飞到天上还以为是学习率问题。大模型的连接结构是和预训练状态强绑定的改结构等于重训。3.2 残差流视角下的模型微观结构用残差流视角分析一个典型 Transformer 层会非常有意思。假设输入是x经过 Pre-Norm 后进入注意力模块得到输出a残差连接得到x a随后再 Pre-Norm进入 FFN得到f残差连接得到x a f。可以看到残差流里的信息是叠加式累积的每一层都在往“河”里注入新的向量。在这个视角下模型最后输出的 logits 实际上是对所有层残差输入的加权组合。前面层可能更偏重词法和局部语法中间层可能在做实体和关系建模后面的层则更倾向于生成下一 token 的高层语义。如果没有残差流前面层的信息很难直达最后输出层整条信息链是断裂的。这也解释了为什么Attention Head 只能学习残差流里能“看得到”的信息。如果你想让模型从第十二层的输出中提取某种特征但该特征在第五层注入残差流后就被后续更新冲淡了那么第十二层可能就无法访问它。所以有些研究者会在残差流里加入“记忆槽位”或者用专门的 read-out 机制从多个深度读取信息。这就是一种朴素超级连接思想的实践。3.3 超级连接在长上下文与稀疏注意力中的价值长上下文现在是大模型竞争的焦点。传统的全局注意力在 4096 token 以上就开始计算量爆炸。稀疏注意力如滑动窗口、全局局部模式虽然节省了计算但信息如何在长距离之间传递就成了新问题。残差连接在这里扮演了“信息中继站”的角色。如果一个 token 的语义无法直接与远处 token 交互它可以通过多层的残差流动逐步把信息“搬运”过去。这就像你不可能直接认识全球所有人但通过朋友的朋友你可以在六步之内连接到任意一个人。模型的层数越深这种中继能力就越强。超级连接的设计可以让这种中继更高效。比如**Cross-Layer Attention跨层注意力**让某一层的 query 可以读取之前若干层的 key/value。如果中间隔了 10 层就相当于一条直达快线不需要信息逐层搬运。这样做能明显提高长距离依赖的建模能力同时也给了稀疏注意力模式更多容错空间——某一段路不通还有其他连接绕过去。我最近在实验中试过一个简化版把第 4 层的注意力输出通过可学习的权重叠加到第 12 层的输入上。参数量增加不到 0.1%但在一个 1B 模型的 16k 上下文任务上困惑度降低了 0.5% 左右。虽然不算大但足够说明跨层连接在长上下文场景下是有益的。4. 从原理到落地连接设计如何影响实际应用4.1 为何 LLM 推理容错需要关注连接结构热词里有一个“llm智能体自主容错控制:构建可靠ai系统的工程实践”这其实和连接结构有潜在关系。LLM 智能体在推理过程中经常需要把多轮对话、工具调用结果、环境反馈等信息组织成上下文。在这个过程中模型内部的残差连接决定了对历史信息的保持能力。如果一个模型设计成深层且残差路径干净它对上下文早期的信息保留能力就比较强。反之如果一个模型每层都要经过复杂的门控或归一化早先的信息很容易被“洗掉”。工程上有一个实用技巧如果你发现智能体经常忘记对话开了头的关键约束可以检查模型每一层的激活值均方差。如果前面几层均方差迅速增大说明残差流正在被高频噪声淹没此时临时增加残差分支的缩放因子比如调大 ReZero 的 alpha可以改善记忆持久性。当然这只是权宜之计。真正可靠的容错系统需要从模型结构上保证信息路径的可恢复性。这也是为什么我特别关注那些带跨层连接的新架构——它们本质上是在给智能体提供更丰富的“记忆回退路径”。4.2 模型评测LLM as Judge中的深层连接效应用一个大模型去评判另一个模型输出质量是当下很热门的路子。我经常用的做法让 Judge 模型同时看到候选答案和评分标准然后让它输出结构化评分。这里有一个容易被忽略的现象Judge 模型的深度和残差连接质量会直接影响它能不能抓住评分标准中的细微要求。我做过一个小实验同一个数据集用 7B 模型和 70B 模型分别当 Judge让两者评判 1000 条结果并与人工评分对比。结果 70B 模型的 Kendall Tau 相关性比 7B 高 12 个百分点。除了参数量优势我认为更关键的是 70B 模型的层数多残差流里有更多“冗余路径”可以用来自我反思和修正。所以在做 LLM-as-Judge 时如果算力允许尽量选层数更多的模型。如果只能用小模型可以考虑在 prompt 里显式要求它“分步打分每步都要引用残差记忆”这有点玄学但实测对提升小模型的评分一致性有帮助。4.3 本地部署 GGUF连接设计对量化与推理的影响热词提到“安卓本地运行gguf格式llm软件”。GGUF 是 llama.cpp 等推理引擎使用的量化格式很多人喜欢把 7B、13B 模型量化到 4-bit 后在手机或笔记本上跑。这里有一个和残差连接直接相关的坑量化对残差连接幅度的敏感性比想象中高。残差连接的本质是让信息绕过当前层。量化时如果模型某层权重被压缩到 4-bit这一层计算出的残差项F(x)误差会比较大。如果残差分支本身在整体输出中占比较高量化后模型性能会断崖式下跌。换句话说残差连接的比例决定了模型对量化的鲁棒性。实践中我发现对于 Pre-Norm 模型量化后性能相对稳定因为残差流中的信息大部分来自恒等路径对权重误差不敏感。对于 Post-Norm 模型量化后更容易崩因为每一层的输出都经过归一化再叠加误差会被逐层放大。如果你的量化模型在手机端输出质量明显下降尝试在推理时打开--temp 0并关闭一些后处理有时能减轻残差误差带来的漂移。另外在 GGUF 量化版本选择上我建议至少用 Q5_K_MQ4_K_M 可以跑但长生成本退化明显。这背后就是残差流中噪声累积的问题。如果模型里有较多跨层连接或门控结构量化时会额外增加误差源这种情况下更推荐用高精度量化或者保留部分层为 16-bit。5. 常见问题与避坑指南5.1 调整残差连接时的常见错误我见过不少人尝试修改开源 LLM 的残差结构最容易犯的错误有三类一是把残差分支直接置 0 来“缩短推理路径”。比如有传言说删掉某些层能减少延迟于是有人尝试把注意力残差的输出乘以 0。这基本等于破坏了预训练时的连接模式模型输出会迅速劣化。合理的做法是只跳过前向计算比如只跑一半层数但不要修改连接权重。二是不区分“残差分支”和“FFN 分支”的强度。在 Transformer 中注意力和 FFN 两个残差子层扮演不同角色。注意力子层负责信息交换FFN 子层负责信息加工。调参时如果统一缩放很容易破坏两者平衡。我在微调时喜欢给 FFN 的残差分支稍微高一点的权重比如 1.05 对 1.0这样能在不改变收敛性的前提下加快知识记忆。三是忽略 LayerNorm 和残差的交互。残差连接只是路径LayerNorm 才是真正的“稳压器”。如果在残差流中加入跨层连接但没有同步调整 Norm 的位置或参数可能导致激活值方差爆炸。我建议任何连接结构改动后第一件事就是统计各层激活值的均值、方差确认没有异常。5.2 超参数与连接强度的调试经验如果你正在训练一个自定义 Transformer可以从这几个角度寻找最佳连接策略尝试 ReZero 初始化让残差分支的初始缩放接近 0模型从一个纯恒等映射开始。这样训练初期非常稳定而且收敛速度通常比默认方式快 20%-30%。等到 loss 下降变缓再逐渐放开缩放或让它通过反向传播学习。给不同层设置不同的残差强度浅层可以多依赖输入深层可以多依赖内部变换。实现方式很简单给每一层的残差分支乘上一个可学习的标量与 LayerScale 类似。这个标量的初始化可以设为常数但不同层的更新速度会自然分化。注意学习率对残差缩放的影响残差缩放参数通常很小在 AdamW 优化器下容易因为权重衰减被压到 0。建议把残差缩放参数的 weight_decay 设置为 0或者单独给它更小的 weight decay。这些经验来自我个人的多次训练实验并非理论最优。但当你碰到训练不稳定、loss 突然飙升的现象时优先检查残差路径的方差往往能快速定位问题。5.3 未来方向超深网络与超级路由如果说残差连接是“层与层之间的握手”那么超级连接可能就是“网络自身的免疫系统”。我看到的几个很有潜力的方向可学习连接拓扑不要再人工固定每一层的连接方式而是用一个小的图神经网络或路由模块来决定每个 token 应该经过哪些层、哪些层可以跳过。这类似于深度网络版的 MoE能极大提升推理效率同时保留深层模型的表达力。连续深度动态路由把离散的层索引改成连续维度上的插值每一层输出的残差通过一个连续函数进行混合。这样模型在推理时可以在任意深度上“停止”可以根据输入复杂度和算力资源动态调整计算量。记忆注入式连接在残差流旁边增加一个独立的高速记忆带这个记忆带可以随时写入或读取 token 级别的长期信息。这相当于给模型配备了一个外挂内存可以和残差流并行工作。这些方向目前大多处于实验室阶段但我认为未来两年会出现更多落地成果。尤其是可学习连接拓扑它对推理成本的优化效果可能会非常显著。最后分享一点个人体会从一开始照抄 ResNet 的残差公式到后来逐步理解 Pre-Norm、DeepNorm再到自己设计跨层连接实验我最大的感受是大模型的成功不在于某一个精心设计的机制而在于把很多个“差不多但足够稳”的机制组合在一起。残差连接看起来非常简单但它赋予了深度网络无限扩展的可能。超级连接是一场还没有完成的结构革命它值得每一个认真做 LLM 的人持续关注。如果你正在尝试修改模型架构建议从小处入手先给现有的 Transformer 加一层可学习的残差缩放观察训练曲线的变化再尝试把某一层的输出跨 4 层注入最后再考虑全局路由。这条路没有标准答案但每一步都能让你更深刻地理解“信息如何在网络中流动”。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑