Transformer 架构全景¶
注意力只是心脏,Transformer 是整副骨架——GPT、Claude、Gemini、DeepSeek 全都长在这副骨架上。本页仍不碰公式,接着注意力页把整栋楼讲完。 🟢 稳定 | 对位 W4(注意力页的续篇)| 最后核实:2026-09-08
为什么要懂¶
注意力页讲了"每个词怎么互相看",但没讲:词怎么进模型的、看完之后怎么处理、整栋楼怎么盖起来。补上这页,你就能回答:为什么输出是逐字蹦出来的(流式的原理)、为什么参数动辄千亿、为什么"更深更宽"等于更贵——以后看模型新闻("MoE 架构""上百层")不再一头雾水。
全景图:跟着一句话走完全程¶
模型正在续写临床句子,当前上下文是「受试者发生不良事件后」。整条流水线长这样:
flowchart TB
TXT["输入文本<br/>受试者发生不良事件后"] --> TOK["tokenizer 切分<br/>把句子切成 token"]
TOK --> EMB["embedding 领门牌<br/>每个 token 变成几千维坐标<br/>语义相近则坐标相邻"]
EMB --> POS["位置编码发号牌<br/>标明每个 token 排第几"]
POS --> BLK["Transformer 层叠大楼<br/>几十到上百层,层层精炼"]
BLK --> DIST["楼顶输出<br/>下一个 token 的概率分布<br/>暂停 35% / 立即 15% / 继续 10% / 其他"]
DIST --> SMP["采样挑一个<br/>temperature 与 top_p 在此起作用"]
SMP --> END{生成结束了吗}
END -->|否,新 token 接到队尾| BLK
END -->|是| OUT["输出完整回答"]
走线解读:楼顶为什么会给出「暂停 35%」这样的分布?因为预训练语料里,这类临床句式后面 overwhelmingly 跟处置动词——模型的知识就这么用上了(知识从哪来,见训练管线)。选中「暂停」后,它被接到句子末尾,整栋楼从头再跑一遍,产生下一个 token——流式输出的"打字机效果"就是这一遍遍循环的外在表现。
核心解释:大楼的四个部分¶
① 进门领门牌:embedding(嵌入)
token 进模型的第一件事:变成一个几千维的数字向量(一串坐标)。可以想成图书馆的书架排位:图书管理员(模型)把语义相近的书排在相邻位置,检索时"邻居"自然一起被找到:
| 这个词 | 坐标上的邻居(语义近) | 坐标上的远亲(语义远) |
|---|---|---|
SEX |
GENDER、RACE、ETHNIC | SAE、血糖、打印机 |
暂停给药 |
停药、剂量下调 | 风景、洗衣机 |
(示意:真实向量几千维,这里压缩成直觉。)模型的全部"理解"都建立在这套坐标系上——语义搜索和 embedding 检索(阶段 2 RAG 的地基)用的就是这套坐标。(tokenizer 决定模型"看世界的分辨率",见 token 页。)
② 每层楼两道工序:开会 + 消化
flowchart LR
IN["进入第 37 层"] --> ATT["工序一:注意力全员会议<br/>token 互相通气<br/>建立谁和谁相关的关联"]
ATT --> FFN["工序二:FFN 回工位消化<br/>每个 token 独立加工信息<br/>事实知识主要存在这里"]
FFN --> SAFE["安全装置<br/>残差连接:在原稿上追加修订<br/>层归一化:数值拉回量程"]
SAFE --> OUT["信息更精炼,送上第 38 层"]
- 注意力(集体会议):token 们互相通气,决定"谁的信息对我重要"——就是上一页的 QKV
- 前馈网络 FFN(个人消化):开完会各自回工位,独立加工刚收到的信息。研究普遍认为,模型记住的大量事实知识("阿司匹林是解热镇痛药")主要存在 FFN 的权重里——注意力负责"找相关",FFN 负责"动脑子"
一层楼 = 全员开一次会 + 各自消化一遍。旗舰模型有几十到上百层,信息层层精炼——普遍认为底层处理语法搭配,高层处理语义推理。
③ 配套基础设施(三个不起眼但缺一不可的部件)
- 残差连接:每层的修改像临床方案的历次修订(amendment)——新版本 = 完整保留旧版内容 + 追加修改,从不推倒重写。所以信息传到第 100 层时,最初的"原稿"依然可查,不会层层转抄到失真
- 层归一化(LayerNorm):每层出口做一次仪器量程校准——像实验室仪器定期校准,防止数值越算越爆炸或越算越趋近于零,百层流水线才能稳定运转
- 位置编码:注意力本身分不清词序("A 给 B 输血"和"B 给 A 输血"在它眼里词集合相同!)——必须额外发号牌。就像数据里的 VISITNUM:没有访视编号,「筛选期」和「第 52 周」只是两个无法排序的名字;号牌一挂,时间线才存在
④ 楼顶出结果:概率分布
顶层输出的不是文字,是下一个 token 的概率分布——然后掷一颗加权骰子选一个,接到队尾,整栋楼重跑。一次一个 token,循环往复。
decoder-only:GPT 们的"半栋楼"¶
2017 年原版 Transformer(Google《Attention Is All You Need》)是encoder-decoder 双子楼,为翻译设计:encoder 先通读全文(双向看),decoder 再逐词输出译文。
flowchart TB
subgraph S1["原版 Transformer(2017,为翻译而生)"]
direction LR
E["Encoder 编码楼<br/>双向视野:通读全文<br/>负责理解"] --> D["Decoder 解码楼<br/>单向视野:逐词产出<br/>负责表达"]
end
subgraph S2["GPT 类模型:只留半栋楼"]
direction LR
G["Decoder 单楼<br/>单向视野:只看左边<br/>预测下一个词"]
end
GPT 类模型只保留了 decoder 一半,并加"因果掩码"——规则像闭卷考试:做第 10 题时可以看前 9 题和自己的草稿,但不许翻到第 11 题之后。技术上模型完全可以双向看(encoder 就是这样),但 decoder-only 刻意蒙住右边——因为它的训练目标就是"只凭过去猜未来"。
为什么这半栋楼赢了?
- 训练目标统一:预测下一个词——整本书、整个互联网都是免费教材,不需要人工标注
- 架构极简:一叠完全相同的层,好造好扩展(多堆层、加宽度就能变强)
- 训练与生成同构:训练时在做什么,推理时就在做什么
代价:单向视野意味着它没法先通读再总结——这正是"检索用的 embedding 模型(双向)"和"生成模型(单向)"分工的由来(阶段 2 RAG 会再遇到)。
参数都在哪、为什么越大越贵¶
千亿参数绝大部分藏在两处:注意力的投影矩阵和 FFN 的权重矩阵。层越多、每层越宽(向量维度越高),参数越多——参数多 = 显存多 = 每步计算多 = 贵。这是模型选型"价格"维度的底层原因。
动手试试¶
打开 The Illustrated Transformer(图解版,resources.md 必读表有收录),只看架构总图和 decoder 部分,把本页的"大楼"对应到图上:embedding → 楼层两道工序 → 楼顶概率。15 分钟。
常见误解¶
- ❌「Transformer = 注意力」→ 注意力只是一半;FFN 占参数大头,还存着大量事实知识
- ❌「模型内部有知识库模块」→ 没有分区。知识分布式摊在几千亿参数里,不存在"SAE 专区"或"医学区"
- ❌「模型一次生成一段话 / 生成是一趟计算」→ 每生成一个 token,整栋楼完整跑一遍。1000 token 的回答 = 大楼全功率运转 1000 次——输出 token 定价比输入贵 3–5 倍,一部分根源就在这
- ❌「2017 年原论文 = 今天的模型」→ 骨架同源,但七年的演进(decoder-only、新位置编码、MoE……)早已面目全非。读原论文是考古,不是学现状
一页记住(速查表)¶
| 部件 | 类比 | 一句话职责 |
|---|---|---|
| tokenizer | 切菜刀 | 把文本切成 token 最小单位 |
| embedding | 图书馆书架排位 | 语义相近,坐标相邻 |
| 位置编码 | 访视编号 VISITNUM | 补上顺序信息 |
| 注意力 | 全员会议 | 决定谁的信息重要 |
| FFN | 回工位独立消化 | 加工信息、存放事实知识 |
| 残差连接 | 方案修订 amendment | 只追加修订,永远保留原稿 |
| LayerNorm | 仪器量程校准 | 把数值拉回安全范围 |
| N 层堆叠 | 大楼楼层 | 层层精炼:底层语法,高层语义 |
| 楼顶输出 | 掷加权骰子 | 概率分布 + 采样,一次一个 token |
现状与深挖¶
- 当前架构演进热点:MoE(每层只激活部分"专家",参数大但算得省——L3 有专页)、注意力效率变体(长上下文降本)。都不改变你的使用方式,知道名字即可。
- 深挖顺序:本页 → 3Blue1Brown 注意力章节(可视化)→ 原论文(兴趣再读)。