Featured image of post 01 | 一切的起点:Transformer 到底解决了什么问题?

01 | 一切的起点:Transformer 到底解决了什么问题?

从 Attention Is All You Need 出发,用一个翻译小例子讲透自注意力、多头和位置编码,以及为什么搞懂它,是做 AI 护栏的人绕不开的第一课。

系列第一篇。这个系列会从 2017 年的 Transformer 开始,一路读到今天,每天一篇经典模型架构的论文或技术报告。

我是一名刚入行大模型算法、主攻 AI 安全的工程师,所以每篇结尾我都会留一块「护栏视角」,聊聊这篇论文和 AI 安全的关系。

写得通俗一点,但该有的重点一个不少。

先说结论:Transformer 做对了一件事

2017 年 Google 发了一篇论文叫 Attention Is All You Need(注意力就是你所需要的一切)。

这个名字很狂,但它是真话:它把「注意力机制」从配角变成了主角,其他组件全部降级成辅助。此后的 GPT、BERT、Llama、DeepSeek……全都是这篇论文的子孙后代。

作为系列的第一篇,我想先不聊公式,而是回答一个问题:

在 Transformer 出现之前,处理「序列」(也就是有先后顺序的数据,比如一句话、一段声音、一帧帧视频)用的是 RNN。RNN 到底哪里不行,逼得大家非要发明一个新东西?

搞清楚「它解决了什么问题」,比背下来它的结构重要一万倍。

背景:RNN 的困境——一句话要一个字一个字地读

RNN(循环神经网络)处理一句话的方式,很像一个只长了一只眼睛、而且没有记忆本的人读书:

图 1:RNN 串行读取示意——每一步的输出都依赖上一步(tldraw 绘制)

注意那个箭头:每一步的输出,都依赖上一步的结果。第 3 步想理解「猫」,必须先等第 2 步算完;第 2 步又得等第 1 步。

这带来两个致命问题:

问题 1:慢。 句子有 100 个词,就得串行算 100 步。GPU 再强也只能干瞪眼,因为没法并行——这就像你雇了 100 个工人,却让他们排成一列传砖头。

问题 2:健忘。 信息要从第 1 步一路「传」到第 100 步,中间每传一手就磨损一点。这就是著名的长距离依赖问题:句子开头提到的人名,到句尾早就被冲淡了。你读一段 200 字的推理小说,作者在第 3 句埋的线索,你读到第 50 句还记得;RNN 不记得。

我自己的体会:RNN 不是「笨」,是人的直觉害了它。我们人类读句子确实是一个字一个字读的,所以最早做序列建模的人就照着这个直觉造了 RNN。但机器的优势从来不是「像人」,而是「可以同时看所有东西」。

核心:Self-Attention 在干嘛?——一次性看全,再决定谁重要

Transformer 的答案简单粗暴:不要一个字一个字读了,把整句话一次性全部摊开,然后让每个词自己去找「谁对我重要」。

这就是自注意力(Self-Attention)。

用一个具体例子:翻译「我 爱 猫」

假设输入只有三个词:。Transformer 会做三件事:

第一步:每个词都变成一串数字(向量)。 [0.1, 0.8, ...][0.5, 0.2, ...][0.9, 0.4, ...]。数字具体是什么不重要,你只要知道:意思相近的词,向量距离近。这一步叫 Embedding,相当于给每个词发了一张「身份证」。

第二步:每个词对整句话做一次「注意力投票」。 每个词都要回答一个问题:「这句话里,谁和我关系最大?」

  • 看了看: 和我自己关系 0.3, 和我关系 0.6, 和我关系 0.1 → 归一化成权重 [0.3, 0.6, 0.1](和为 1)
  • 看了看: 0.4, 自己 0.2, 0.4
  • 看了看: 0.1, 0.5, 自己 0.4

这就得到一张 3×3 的注意力矩阵,每一行代表「这个词怎么看整句话」:

0.3 0.6 0.1
0.4 0.2 0.4
0.1 0.5 0.4

第三步:用这张表把每个词的信息重新混合一遍。 的新表示 = 0.3× + 0.6× + 0.1×。也就是说, 的最终表示里,混进了 60% 的 的信息——因为在这个句子里,「我」和「爱」关系最紧密。

这一步做完,每个词都变成了「结合了上下文语境」的新向量。这就是自注意力的全部核心:加权求和。就这么简单。

为什么它天然不怕长距离?

因为 想联系句首的 一步就到,不需要像 RNN 那样传 100 手。距离不是问题,注意力权重说了算。

那 Query / Key / Value 又是什么?

这是所有讲 Transformer 的文章最容易把人劝退的地方。我的理解是这样的——想象你去图书馆借书:

图 2:QKV 图书馆比喻——Query 找书、Key 是标签、Value 是内容(AI 生成插画)

  • Query(查询) = 你想找什么:「我要找讲猫的书」
  • Key(书脊标签) = 每本书的标签:「这本讲猫」「这本讲狗」
  • Value(书的内容) = 书真正的内容

注意力做的事情就是:拿你的 Query 去和所有书的 Key 比对相似度,相似度高的书,多读一点它的 Value。

公式长这样,但别怕,你已经懂了它的意思:

1
2
Attention(Q, K, V) = softmax(Q·Kᵀ / √d) · V
            └─ Q和每个K比相似度 ─┘   └─ 按权重取内容 ─┘

√d 是除一个缩放因子,防止分数太大把 softmax 推成 0/1 两极分化(就是「防止一个人垄断投票」)。softmax 就是把一堆分数归一化成「和为 1 的权重」。

论文原图把这个流程画得很清楚(左半部分就是上面的公式,右半部分是并行版):

图 3:Scaled Dot-Product Attention(左)与 Multi-Head Attention(右)(图源:Vaswani et al., 2017, Figure 2)

图 4:QKV 计算流程(tldraw 绘制)

一个经常被忽略但很重要的细节:Q、K、V 并不是词向量本身,而是各自经过一个不同的线性变换得到的。为什么要分开变换?因为「我想找什么」和「我能提供什么」是两码事——在「猫」这个词上, 想找的信息和 能提供的信息,当然不该用同一副面孔。

Multi-Head:不要一个视角,要八个

单一注意力只有一种「关系观」。但句子里的关系是多种多样的:语法关系、指代关系、情感关系……

Multi-Head Attention(多头注意力)就是把注意力同时做 8 份(论文里是 8 个头),每份用不同的 Q/K/V 变换,相当于 8 个不同角度的「读书人」同时读这句话,最后把 8 份结果拼起来。论文里的结构是这样(右边就是 Multi-Head 的拼装方式):

图 5:Multi-Head Attention 结构(图源:Vaswani et al., 2017, Figure 2 右)

图 6:多头注意力——8 个分工不同的头(tldraw 绘制)

后来 Anthropic 等团队做可解释性研究时发现,这些「头」真的各司其职:有的头专门盯指代(it 指谁),有的头专门盯句法。多头注意力 = 模型的多个"分工器官",这个视角后面讲 AI 安全时还会用到。

位置编码:不按顺序读了,怎么知道先后?

RNN 按顺序读,天然自带「顺序感」。Transformer 一次性全读,顺序信息就丢了——猫爱我我爱猫 摊开后长得一模一样,这不行。

解法:在词向量上叠加一个「位置信号」,让每个位置的向量长得不一样。

图 7:位置编码——词向量 + 位置向量 = 带顺序信息的向量(tldraw 绘制)

位置向量用正弦/余弦函数生成(论文里的做法),也可以学出来。它相当于给每个词发了一张「第几号座位」的票——向量相加之后,模型既知道词义,又知道顺序。

看一眼论文里的完整架构

把上面几个零件拼起来,就是论文原版的 Transformer(下图)。左边是 Encoder:N 层堆叠,每层 = 多头注意力 + 前馈网络;右边是 Decoder:结构类似,但多了 Masked 多头注意力——它只能看已经生成的词(不然翻译的时候偷看答案)。

图 8:Transformer 完整架构(图源:Vaswani et al., 2017, Figure 1)

不过注意:论文版是 Encoder-Decoder(翻译场景),今天的大模型基本都是 Decoder-only(只留右半边,且没有 Masked 之前的那层交叉注意力)。 下一篇读 BERT/GPT 时会讲到这条分岔路。你只需要知道:今天所有大模型的骨架,都能在这张图里找到原型。

为什么它赢了?三个字:可扩展

Transformer 不是第一个用注意力的(2014 年就有 attention 了),但它是第一个把注意力用到极致、彻底去掉循环的。赢在三点:

  1. 可并行:整句话一次性算完,GPU 吃满,训练速度快了几个数量级。
  2. 长距离能力:一步直达任意远的词,长文本不再「传话传丢」。
  3. 可扩展(scaling):这是最关键的。结构简单 + 并行,意味着可以无限堆层、堆参数。后来的 GPT 系列证明了:模型越大、数据越多,能力越强——这是 RNN 时代做不到的。

一句话总结这段历史:RNN 输在「只能顺着读」,Transformer 赢在「一次全读 + 自己决定谁重要」。 这不是一个量级的改进,是赛道换了。

护栏视角:为什么做 AI 安全的人,必须先懂注意力?

你可能会想:我是做安全、做护栏的,架构细节跟我有什么关系?关系非常大,说三点:

第一,护栏的本质是「理解模型在想什么」。 无论是提示注入防御、内容审核还是红队测试,说到底都是在猜模型的行为逻辑。而模型的行为逻辑,很大程度就写在这些注意力权重里。Anthropic 的可解释性团队(比如研究 Superposition、Circuit 的系列工作)就是在逐个解剖注意力头,试图回答「模型为什么会这样想」。你连它的思考器官长什么样都不知道,怎么给它装护栏?

第二,很多安全攻击,攻击的就是注意力机制本身。 提示注入的本质,是攻击者想办法让模型把注意力从「用户的指令」挪到「隐藏的恶意指令」上——在注意力层面,这就是一场「抢权重」的战争。理解注意力,你才能理解攻击为什么有效、防御该怎么设计。

第三,注意力图是可解释性的第一入口。 对刚入门的算法工程师,注意力热力图是最容易上手的模型可视化工具:输入一句话,画出词与词之间的注意力权重,你立刻能看到模型「在看什么」。这是做 AI 安全研究性价比最高的起点之一。

本篇重点回顾

概念 一句话版本
RNN 的痛点 串行 + 健忘,长文本记不住开头
Self-Attention 一次看全句,加权求和,一步直达任意词
Q/K/V Query 找书、Key 是标签、Value 是内容
多头 8 个分工不同的视角同时看
位置编码 用「座位号向量」补回顺序信息
为什么赢 并行 → 可扩展 → 堆出大模型

下篇预告:Transformer 之后,模型开始分岔——一路走向 BERT(理解型),一路走向 GPT(生成型)。下一篇我们读 BERT,看看「双向」到底是什么意思,以及它为什么统治了 NLP 两年。

参考资料

  • Vaswani et al., Attention Is All You Need, 2017 — arxiv.org/abs/1706.03762
  • Jay Alammar, The Illustrated Transformer — 公认最好的可视化入门,强烈推荐(有中文翻译)
  • Anthropic, Towards Monosemanticity 等可解释性系列 — 理解注意力头如何工作
  • 3Blue1Brown 的《注意力与 Transformer》视频 — 直觉讲得极好