Transformer 的稳健基石:残差连接与 Pre-LN 深度解析

在训练拥有成百上千层的深层神经网络(如 GPT-4, DeepSeek)时,最核心的挑战不是算力不够,而是梯度如何稳定地传回底层。残差连接与 Pre-LN 结构的组合,正是解决这一难题的工业标准。


一、 残差连接 (Residual Connection):梯度的"保命线"

1.1 核心逻辑:加法大于一切

残差连接(也叫 Shortcut)的原理非常简单:在每一层的非线性计算(Attention 或 MLP)之外,建立一条**恒等映射(Identity Mapping)**的通路。

数学表达: x o u t = x i n + F ( x i n ) x_{out} = x_{in} + F(x_{in}) xout=xin+F(xin) 其中 F ( x ) F(x) F(x) 代表该层的计算支路(Attention 或 MLP)。

1.2 为什么必须有它?

  • 打破"传声筒"效应 :在深层网络中,信号会随着层数加深而逐渐模糊。残差连接让原始信号 x x x 可以直接"跳级",保证了底层信息能直达顶层。
  • 解决梯度消失/爆炸 :在反向传播时,根据求导法则: ∂ ( x + F ( x ) ) ∂ x = 1 + F ′ ( x ) \frac{\partial(x + F(x))}{\partial x} = 1 + F'(x) ∂x∂(x+F(x))=1+F′(x)。 那个常数 "1" 保证了即使支路发生剧烈波动,主干道依然能维持稳定的梯度传导。

二、 规范化布局:Pre-LN vs Post-LN

在 Transformer 的每一层里,我们需要加入 Layer Normalization (LN) 来稳定数值。LN 放的位置(残差加法的前还是后)决定了模型的生死。

2.1 Post-LN (加法后归一化) ------ 外部模式

这是原始 Transformer 论文(2017)的设计。

  • 流程输入 -> 计算 -> 相加 -> LN
  • 结构图 x n e x t = LayerNorm ( x + F ( x ) ) x_{next} = \text{LayerNorm}(x + F(x)) xnext=LayerNorm(x+F(x))
  • 致命伤 :LN 位于残差连接的外部出口 。这意味着它直接修改了主干道的数值分布。在反向传播时,梯度必须穿过 LN 算子。由于 LN 导数包含"除以标准差"的操作,梯度会被层层累乘放大 ,导致梯度爆炸

2.2 Pre-LN (加法前归一化) ------ 内部模式

这是目前所有主流大模型(Llama, GPT, DeepSeek)的选择。

  • 流程输入 -> LN -> 计算 -> 最后相加
  • 结构图 x n e x t = x + F ( LayerNorm ( x ) ) x_{next} = x + F(\text{LayerNorm}(x)) xnext=x+F(LayerNorm(x))
  • 优势 :LN 位于计算支路内部
    • 主干道透明化:残差主干道变成了一条没有任何阻碍的"高速公路"。
    • 梯度直达:梯度回传时可以绕过支路上的 LN,顺着主干道那个"+1"路径原封不动地传到底层。这让训练极度稳定。

三、 Transformer 内部的"二连击"结构

在一个标准的 Decoder Block 中,这种 "Pre-LN + 残差" 的结构会连续出现两次,分别保护 Attention 和 MLP:

  1. 第一阶段 (Attention 子层)
    • x = x + Attention(RMSNorm(x))
    • 作用:在稳定数值的前提下,让 Token 交换上下文信息。
  2. 第二阶段 (MLP/MoE 子层)
    • x = x + MLP(RMSNorm(x))
    • 作用:在稳定数值的前提下,让 Token 提取参数中的知识。

四、 总结对比:位置决定命运

维度 Post-LN (外部/出口) Pre-LN (内部/支路)
LN 位置 位于残差加法之后 位于残差加法之前
梯度路径 必须穿过所有 LN(不稳定放大) 绕过支路 LN 直达(线性稳定)
训练稳定性 极差,易梯度爆炸 极佳,支持 100 层以上的深度
主干道状态 被 LN 层层阻断 纯净的高速公路
典型代表 BERT, 原始 Transformer Llama 系列, GPT-4, DeepSeek

💡 核心结论

Pre-LN 架构通过将 LayerNorm 移至计算支路的起始位置,成功"解放"了残差连接的主干道。这种设计让梯度能够以线性的、不受阻碍的方式在深层网络中穿梭,是大语言模型能够走向"巨型化"和"深层化"的最关键工程改进之一。

相关推荐
不爱洗脚的小滕5 小时前
【RAG】召回(Retrieval)与重排(Rerank)核心技术要点汇总
langchain·aigc·ai编程·rag
红尘散仙6 小时前
我把终端小说阅读器接上了 AI Agent:TRNovel 现在能用 skill 生成书源了
人工智能·后端·rust
win4r7 小时前
MiniMax M3 深度体验:这可能是国产模型里最接近“全能工程师”的一次
aigc·ai编程·claude
卷毛的技术笔记7 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
会编程的土豆7 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
喵个咪8 小时前
GoWind Toolkit Go后端代码生成 完整全流程实战
后端·go·orm
basketball6168 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
qq_2518364578 小时前
SpringBoot+Vue 共享电池柜管理系统 完整实现 前后端分离项目实战 完整代码
vue.js·spring boot·后端
zhangxingchao9 小时前
AI 大模型核心六:量化、Workflow 与 Agent、多轮 RAG
前端·人工智能·后端
IT_陈寒10 小时前
Vite打包时遇到的坑,原来问题出在这里
前端·人工智能·后端