七、AI 圣经:Attention Is All You Need
《写给客户端工程师的 AI 底层原理》连载 · 第 8 期 上一篇我们聊了想掀翻 Transformer 的挑战者 Mamba。这一篇反过来——回到 2017 年那台整车第一次被造出来的地方,重读被奉为「AI 圣经」的《Attention Is All You Need》。前面拆的都是零件,这一篇,看它当年到底长什么样。
七、 AI 圣经:Attention Is All You Need 还说了什么
前面 1~6 章已经把这篇论文的核心机件(Attention、多头、位置编码、KV Cache)拆得很细了。这一章不重复,只补一件事**:把论文原文里”我们前面还没正经讲过、但它其实是主角”的部分捞出来。**一句话——前面讲的是”注意力这颗发动机怎么转”,这一章讲”2017 年这台发动机第一次被装进的那辆整车长什么样”。
🟢【通俗版】论文原文的三个”其实你没细看”的点
老实说,大部分人(包括很多天天调 API 的人)对这篇论文的印象就是”哦,Attention 嘛”。但原文 15 页里,真正的主线其实是这三件事,而它们在前面几章里我们要么一笔带过、要么压根没提:
① 它是一篇”翻译论文”,不是”聊天机器人论文”。2017 年这篇文章的正经任务是机器翻译(英译德、英译法),刷的是 WMT 2014 榜单。所以它的原始架构是一个完整的 Encoder-Decoder(编码器-解码器)——左边一坨读懂原文,右边一坨吐出译文。我们前面讲的 GPT/LLaMA 那种”只有 Decoder”的结构,其实是后人把这台整车拆了一半才有的。
**② 里面藏着三种不同的 Attention,不是一种。**前面第一章我们只讲了”一个字去看别的字”这一种。但原文的整车里,注意力被用在了三个完全不同的地方(编码器内部自己看自己、解码器内部带口罩地看自己、解码器扭头去看编码器)。第三种”扭头去看”——也就是 Cross-Attention(交叉注意力)——是翻译能work的关键,前面完全没提。
③ 它最大的卖点其实是”快”,不是”准”。论文标题喊的是 “Attention Is All You Need”——潜台词是”把 RNN/LSTM 全扔了”。RNN 像接力赛,必须第一棒跑完才能交第二棒,没法并行;Transformer 像开圆桌会议,所有人同时发言、同时互相看。结果就是:同样的翻译质量,训练时间从”几周”砍到 8 张 GPU 跑 3.5 天,还顺手把 BLEU 分数刷到了当年的 SOTA(英德 28.4 / 英法 41.8)。“能并行”才是它掀翻整个领域的真正原因,Attention 只是实现并行的手段。
一个常见误区:很多人以为”大模型 = Transformer = Decoder”。错。原始 Transformer 是双塔(Encoder + Decoder)。后来分了三家:BERT 只留左塔(Encoder,擅长理解/分类),GPT 只留右塔(Decoder,擅长生成),原始双塔结构反而退居翻译/摘要等 seq2seq 场景。你现在用的 ChatGPT 是”半台车”。
🔴【进阶版】Encoder-Decoder 全景 & 三处注意力的分工
把前面散落的知识点拼成论文原本的整车,就是下面这张图。注意看注意力出现的三个位置——这是原文 Figure 1 的灵魂,也是前面章节没展开的部分。
📊 全景图:原始 Transformer 双塔架构
flowchart LR
subgraph ENC[编码器 Encoder ×6层]
E1["输入: 原文
我 爱 你"] --> E2["① 自注意力
Self-Attention
每个字看全句(无口罩)"]
E2 --> E3["前馈网络 FFN"]
E3 --> EOUT["原文的语义表示"]
end
subgraph DEC[解码器 Decoder ×6层]
D1["已生成: I love"] --> D2["② 带口罩自注意力
Masked Self-Attn
只能看已生成的词"]
D2 --> D3["③ 交叉注意力
Cross-Attention
扭头去看编码器输出"]
D3 --> D4["前馈网络 FFN"]
D4 --> DOUT["预测下一个词: you"]
end
EOUT -.-> D3
style E2 fill:#E6F4FF,stroke:#3B82F6
style D2 fill:#FFE6E6,stroke:#DC2626
style D3 fill:#E6FFE6,stroke:#10B981
三处注意力的分工——同一套 QKV 机制,喂进去的东西不同,作用天差地别:
| 位置 | 名字 | Q 来自 | K/V 来自 | 干什么 |
|---|---|---|---|---|
| 编码器内 | Self-Attention | 原文 | 原文 | 读懂原文,每个词无遮挡地看全句 |
| 解码器内 | Masked Self-Attn | 已生成译文 | 已生成译文 | 带 Causal Mask,只准看已经吐出来的词 |
| 解码器→编码器 | Cross-Attention | 已生成译文 | 编码器输出 | 译文每生成一个词,都回头对齐原文该看哪里 |
费曼比喻 · 同声传译:编码器是”听原文的耳朵”,把整句话嚼碎理解好(Self-Attn);解码器是”说译文的嘴”,一边只能顺着自己已经说出口的话往下接(Masked Self-Attn),一边又不停用余光瞟一眼原文的意思、确认没跑偏(Cross-Attn)。Cross-Attention 就是那道”原文↔译文”的对齐视线——没有它,翻译就成了闭着眼睛瞎编。
**为什么前面章节能”只讲一半”?**因为 GPT 这类生成模型直接砍掉了整个编码器和 Cross-Attention,只留解码器的 Masked Self-Attention。于是”翻译式的双塔”简化成了”续写式的单塔”,前面 1~2 章讲的就是这单塔里的机件。但要理解 BERT 为什么擅长理解、T5 为什么适合翻译摘要,就得回到这张双塔全景。
📊 分叉图:一篇论文,三支血脉
flowchart TD
ROOT["Attention Is All You Need 2017
原始 Encoder-Decoder 双塔"]
ROOT --> B["只留左塔 Encoder
→ BERT 家族
擅长: 理解/分类/检索"]
ROOT --> G["只留右塔 Decoder
→ GPT/LLaMA/Claude
擅长: 生成/对话(当前霸主)"]
ROOT --> T["保留双塔
→ T5/BART
擅长: 翻译/摘要 seq2seq"]
B --> V["把图片切块当词
→ ViT 视觉分支"]
style ROOT fill:#FFF4E6,stroke:#F59E0B
style G fill:#E6FFE6,stroke:#10B981
一句话讲完这一章:这篇论文真正的贡献不是”发明了注意力”,而是”敢把 RNN 彻底删掉、用纯注意力搭出一台能并行的 Encoder-Decoder 翻译机”——并行带来速度,双塔+三种注意力带来质量,后人把这台整车拆成 BERT / GPT / T5 三支,才有了今天的一切。
📚 回到原文:
- Attention Is All You Need (Vaswani et al., 2017):15 页,重点看 Figure 1(双塔全景)和 3.2 节(三处注意力)。
下期预告 · 收尾篇 正文到此全部讲完。最后一篇不讲新概念,是一张给你随时查的工程师速查卡——参数换显存、三大架构对比、术语英中对照,收藏向压轴。