Transformer 架构解析
收录于 AI 浏览量
大语言模型基础讲了模型“是什么”,AI 底层架构讲了“跑在什么上面”,中间还缺一块:模型本体长什么样。这篇把 Transformer 拆开——从整体结构到每个组件的职责,看完你就能把“注意力、多头、前馈网络、残差、归一化”这些术语各归各位。
一、总览:一张图与三种形态
flowchart TB
A[输入 token] --> B[Embedding 与位置编码]
B --> C[Transformer 块 乘以 N 层]
C --> D[最终归一化]
D --> E[输出投影]
E --> F[下一个 token 的概率分布]
Transformer 就是这条流水线:文本变成向量,穿过几十层结构相同的“块”,最后变成下一个 token 的概率分布。所有的智能都藏在那些重复的块里,所以拆开一个块就够了。
按块的组织方式,Transformer 有三种形态:
| 形态 | 代表 | 擅长 | 现状 |
|---|---|---|---|
| 仅编码器 Encoder-only | BERT | 理解:分类、检索、匹配 | 嵌入模型仍在用 |
| 仅解码器 Decoder-only | GPT 系列 | 生成:对话、写作、代码 | LLM 时代的主流 |
| 编码器-解码器 | T5、翻译模型 | 序列到序列转换 | 翻译等专用场景 |
后面的拆解以 decoder-only(GPT 一系)为主线——它是所有大语言模型的骨架。
二、输入侧:Embedding 与位置编码
token 进入模型先查表:每个 token 对应一行可学习的向量(维度几百到几千),这一步叫 Embedding——语义相近的词向量相近,原理见基础篇。
紧跟着必须注入位置信息。原因很本质:注意力机制把输入当成“一袋 token”,天生不知道谁前谁后——“猫追狗”和“狗追猫”会得到完全相同的表示。位置编码就是给每个位置一个独特的向量印记,与 Embedding 相加后进入第一层。
位置编码的方案演化值得一提:
- 早期:固定的正弦函数编码,或可学习的位置表——简单,但长度受限(表只有多大,窗口就多大);
- 主流现在:旋转位置编码 RoPE——把“位置”变成向量在平面上的旋转角度,两个 token 的相对位置自然体现为旋转差。它对相对距离敏感、可外推到训练时没见过的长度,是各家长上下文方案的共同基石。
三、自注意力:QKV 的完整机制
注意力是整个架构的心脏。底层架构篇给过直白类比,这里把机制走完整。
三个投影矩阵
每个 token 的向量被三组可学习的权重矩阵分别投影,得到三个身份:
- Query:我在找什么;
- Key:我能被怎样找到;
- Value:找到我之后能带走什么内容。
三个矩阵是训练中学出来的——模型自己学会了该用哪种视角“发问”、该用哪种标签“被检索”。
打分与加权
拿到 Q 和 K 之后,四步走完一次注意力:
- 打分:当前 token 的 Q 与所有 token 的 K 做点积——方向越一致,分数越高,代表“越相关”;
- 缩放:分数除以 √d(d 是向量维度)。不除的话维度一大点积就巨大,softmax 会饱和成“只看一个 token”,梯度也容易消失——这是个纯数值稳定的工程细节;
- 归一化:分数过 softmax,变成一组加起来为 1 的注意力权重;
- 加权求和:按权重混合所有 token 的 Value,得到当前 token 的新表示——它现在“吸收”了上下文里相关的信息。
因果掩码:GPT 能一边看一边学的关键
decoder-only 模型生成文本时只能看过去、不能看未来。训练时用的是一个小技巧:因果掩码——把每个位置“看向未来”的注意力分数强行置成负无穷,softmax 后权重恰好为零。
这个掩码带来一个惊人的红利:虽然模型在学“预测下一个词”,但掩码保证了每个位置的预测只依赖它左边的内容——于是一句话里所有位置可以同时训练。这就是 Transformer 相比 RNN 的核心优势:训练完全并行。
四、多头注意力:几组视角同时看
一次注意力只能捕捉一种关系。多头的做法是:把向量切成若干份,每份独立做一套完整的 QKV 注意力,最后拼起来再线性融合。
每个头维度更低、视角不同——实践中观察到有的头专注语法结构,有的头追踪指代,有的头对齐长距离依赖。与其说“多头让模型更强”,不如说它让模型同时用多种关系理解同一段话。主流模型几十个头,头数与维度是训练前定好的超参数。
五、块内部:注意力之外还有一半
一个 Transformer 块 = 注意力子层 + 前馈子层,各配一套“稳定器”:
flowchart TB
A[块输入] --> B[多头自注意力]
B --> C[残差连接与归一化]
C --> D[前馈网络 FFN]
D --> E[残差连接与归一化]
E --> F[输出到下一层]
- 前馈网络(FFN):两层 MLP,先把向量升维再压回。注意力负责“在 token 之间传信息”,FFN 负责“对每个 token 独立做深度加工”。一个常被忽略的事实:模型约三分之二的参数在 FFN 里——它被普遍认为是知识的主要存储地;
- 残差连接:把子层的输入直接加到输出上,形成“信息高速路”。没有它,几十层的深网梯度传不回去、根本训不动;
- 归一化:把每层激活值拉回稳定区间,防止数值漂移。现代模型多用 RMSNorm,且放在子层之前(Pre-Norm),训练更稳。
块堆叠几十层,逐层加深理解:底层抓语法与局部搭配,高层提炼语义与逻辑——这是训练后自然形成的分工,不是人为设计的。
六、输出侧:从向量回到 token
最后一个块的输出向量,经过最终归一化后做输出投影:映射回词表大小的维度,每个 token 得到一个分数(logit),softmax 后成为概率分布,再按 temperature 等策略采样出下一个 token——采样细节见底层架构篇第五节。
一个优雅的工程细节:输出投影常与输入 Embedding 共用同一个矩阵(权重绑定)。词表到向量的映射和向量到词表的打分互为逆操作,共享参数既省显存又效果相当。
七、为什么 Transformer 赢了
2017 年《Attention Is All You Need》提出 Transformer 时,主流还是循环神经网络 RNN。Transformer 全面取代它,靠三点:
- 训练并行:RNN 必须逐 token 顺序处理,GPU 干等;Transformer 配合因果掩码全序列并行,万亿 token 的训练才变得可行;
- 长程依赖:RNN 的信息要一站一站传,隔得远就衰减;注意力让任意两个 token 直连,隔十万 token 也是一步可达;
- 可扩展性:结构规整、全是矩阵乘法,完美贴合 GPU——缩放定律(加参数加数据就变强)只有在 Transformer 上才跑得通。它是“大力出奇迹”这条路线的载体。
代价也来自同一个源头:注意力两两配对,计算与显存随长度平方增长——这就是长上下文昂贵的根源,也是滑动窗口、KV 压缩、稀疏注意力这些工程对策的出发点(见工作原理篇的上下文组装)。此外,主流大模型还普遍采用混合专家 MoE 变体:每个块里的 FFN 换成多个“专家”,每个 token 只激活其中少数几个——参数总量巨大、单次计算量可控,是当前旗舰模型的常见选择。
八、小结
| 组件 | 职责 | 一句话 |
|---|---|---|
| Embedding | token 向量化 | 语义相近则向量相近 |
| 位置编码 | 注入顺序信息 | RoPE 用旋转表达相对位置 |
| 自注意力 | token 之间传信息 | Q 配 K 打分,加权取 V |
| 因果掩码 | 只看过去 | 训练并行化的关键开关 |
| 多头 | 多视角并行 | 每个头学一种关系 |
| FFN | token 内深度加工 | 约三分之二参数、知识存储地 |
| 残差 + 归一化 | 稳定深层训练 | 信息高速路与数值稳定器 |
| 输出投影 | 向量变概率 | 常与 Embedding 共享权重 |