Transformer 架构
用「全体同时开会」取代「逐字传话」,让长距离依赖一步可达
定义
Transformer 是 2017 年提出、完全基于注意力的序列建模架构,抛弃了循环结构。它由若干结构相同的层堆叠而成,每层含多头注意力与前馈网络,并配合残差连接和层归一化;序列顺序不再由时间步隐含,而是通过位置编码显式注入。
直观理解
循环网络像玩传话游戏:信息一个字一个字往下传,传得越远越失真,也没法并行。Transformer 换成全体同时开会——每个词都能直接看到所有词,谁和谁相关由注意力当场决定;词与词的先后顺序则靠给每个位置发一个「座位号」(位置编码)来标明。
Transformer 的数据流:嵌入与位置编码进入层层堆叠的注意力—前馈模块,最终输出下一个 token 的概率分布
三种架构变体的能力画像(定性评估,0–5 分):没有全能选手,选择取决于任务重心
- Encoder-only(BERT)
- Decoder-only(GPT)
- Encoder-Decoder(T5)
工作原理
- 01
词嵌入 + 位置编码
token 先变成嵌入向量,再叠加位置编码。原论文用不同频率的正弦、余弦函数生成绝对位置;现代模型多改用旋转位置编码(RoPE),把位置信息编码成向量之间的相对旋转角,从而更好地外推到训练时未见过的更长序列。
- 02
多头自注意力
每个位置同时关注所有位置,多个头并行捕捉不同的关系模式。编码器允许双向关注,解码器额外加因果掩码,只允许看到当前及之前的位置。
- 03
前馈网络
注意力负责在位置之间搬运信息,前馈网络则在每个位置上独立地做非线性变换,通常先升维(如 4 倍)再降回。大模型中绝大部分参数其实都在这里。
- 04
残差连接与层归一化,再堆叠
每个子层外包一层残差(x + 子层(x))与层归一化,使梯度能顺畅地穿过几十上百层。现代做法把归一化放在子层之前(Pre-LN),训练更稳定;把这些层堆到几十层,就得到了大模型的主体。
两种主流架构变体的分工:Encoder-only 擅长理解,Decoder-only 擅长生成
上下文窗口的演进:位置编码方案的改进让可用上下文在数年内增长了三个数量级
应用场景
- Decoder-only(GPT 系):自回归文本生成、对话与代码补全
- Encoder-only(BERT 系):文本分类、抽取式问答与语义理解
- Encoder-Decoder(T5、原始 Transformer):机器翻译、摘要等序列到序列任务
- 跨模态扩展:ViT 处理图像 patch、Whisper 处理音频,共享同一骨干
常见误区
- 去掉位置编码,自注意力对输入就是排列不变的,模型会退化成「词袋」,完全分不清语序。位置信息必须显式注入。
- 不存在万能的架构。Encoder-only 几乎不会生成,Decoder-only 在需要双向理解的任务上偏弱,Encoder-Decoder 结构复杂、推理更贵——选择取决于任务,而不是「哪个更新」。
- 架构相同不代表能力相同。训练数据、规模、对齐方式带来的差距,往往比架构变体的差异大得多。
关键术语
- 位置编码
- 显式注入序列顺序的信号,正弦式或 RoPE
- RoPE
- 旋转位置编码,编码相对位置、外推性好
- 残差连接
- 让输入绕过子层直接相加,缓解深层梯度消失
- Pre-LN
- 把层归一化放在子层之前的稳定化做法