你大概听过 ChatGPT、Claude、Gemini 这些 AI,它们共同的"发动机"叫做 Transformer。 这是 2017 年 Google 一篇论文提出的神经网络结构,名字叫《Attention is All You Need》(你只需要注意力)。 本文基于 Jay Alammar 的经典博客 The Illustrated Transformer,用更生活化的比喻重写一遍,让你彻底搞懂它。

读这篇文章你不需要懂数学或编程,只需要会类比和想象。我们开始吧 👇

1.把 Transformer 当成一个黑箱

想象你有一个全自动翻译机:左边塞一句中文进去,右边吐出一句英文出来。

图片

这就是 Transformer 最初被设计出来的目的——做机器翻译。但别小看它,今天所有大语言模型(LLM)本质上都在做同一件事:给一段文字,预测下一个最可能出现的词

2.打开黑箱:编码器和解码器

把黑箱撬开,里面是两组结构——编码器 (Encoder) 负责"理解"输入,解码器 (Decoder) 负责"生成"输出。

编码器堆栈(6 层)Encoder 6Encoder 5... ...Encoder 1解码器堆栈(6 层)Decoder 6Decoder 5... ...Decoder 1编码结果↑ 输入:我是学生↓ 输出:I am a student

图 2:原始论文里,编码器和解码器各叠了 6 层(可调整)

生活化比喻

把编码器想成一个语文老师在反复读你写的中文句子,每读一遍就加深一层理解(所以要叠 6 层)。 然后它把"读懂的意思"交给解码器——一个英文作家,作家根据这份理解,一个词一个词地写出英文翻译。

每一层编码器内部都是两个子模块:

  1. 自注意力层(Self-Attention)

    ——理解"这个词和句子里其他词是什么关系"

  2. 前馈神经网络(Feed-Forward)

    ——对每个词做独立的"深度加工"

解码器结构类似,但中间多加了一层"编码器-解码器注意力",让它在生成时能回头看编码器的结果。

3.词语是怎么变成"数字"的

计算机不认识"苹果"这两个字,它只会处理数字。所以第一步是把每个词变成一串数字——这串数字叫词向量(Word Embedding)

每个词 → 512 个数字组成的向量Thinking↓[0.2, -0.5, 0.8, ..., 0.1]Machines↓[-0.3, 0.9, 0.1, ..., -0.2]are↓[0.5, 0.1, -0.7, ..., 0.4]smart↓[0.1, -0.2, 0.6, ..., 0.9]

图 3:每个词被转成一串 512 维的数字(颜色条代表数值大小)

生活化比喻

就像给每个人发一张"身份证",上面有 512 个属性分值(幽默感、严肃度、体重、身高……)。 意思相近的词(比如"国王"和"皇帝"),身份证数字就相似;意思相反的词则数字差异大。

4.核心魔法:自注意力(Self-Attention)

这是 Transformer 最重要的发明。来看这句话:

"The animal didn't cross the street because it was too tired."
(这只动物没有穿过街道,因为太累了。)

问题来了:句子里的 "it" 到底指 "animal" 还是 "street"?
对人来说一秒就能判断,对模型却是个难题。
自注意力就是让模型在处理 "it" 时,自动把目光"聚焦"到 "animal" 上的机制。

Theanimaldidn'tcrossthestreetbecauseittired线条越粗 = 注意力权重越高 → "it" 最关注 "animal"

图 4:自注意力机制让模型自动"连线" it ↔ animal

🎯 一句话理解自注意力:在处理一个词时,模型会同时回头看句子里所有其他词,给每个词打一个"相关度分数",再根据分数把它们的信息"按比例融合"到当前词的理解中。

5.Q、K、V:像在图书馆查资料

那"相关度"到底怎么算呢?Transformer 的答案是——给每个词准备三套"身份":Query(查询)、Key(钥匙)、Value(内容)

图片

每个词的 Q / K / V 都是从它的词向量,经过三个不同的"变换矩阵"(WQ、WK、WV)算出来的。这些矩阵的参数是模型在大量数据上训练学出来的

图片

图片

✨ 关键洞察:这 6 步在实际实现中是用一次矩阵乘法同时对整个句子完成的——这正是 Transformer 比 RNN 快几十倍的根本原因:所有位置可以并行计算,不用像 RNN 一样一个词一个词地等。

6.多头注意力:多个"视角"同时看

只用一套 Q/K/V 不够好,因为一个词和其他词的关系可能有好几种维度:语法上的、语义上的、指代上的……

于是论文把注意力机制并行地跑 8 次,每一次使用一套独立的 WQ、WK、WV,得到 8 个不同的"视角"。这就是多头注意力(Multi-Head Attention)

生活化比喻

想象你在看一场球赛,一个人只能盯一个位置。所以请了 8 个人:一个盯前锋、一个盯守门员、一个看阵型、一个看球的轨迹…… 然后把 8 个人的观察笔记拼在一起,你对比赛的理解就立体多了。

图片

实际可视化时,不同注意力头真的会专注不同的东西——比如编码 "it" 时,头 1 主要看 "the animal",头 2 更关注 "tired",各司其职。

7.位置编码:告诉模型"谁在前谁在后"

细心的你可能发现一个问题:自注意力是"全局一把抓"的,它不区分词的顺序。但"狗咬人"和"人咬狗"意思天差地别!

解决办法:给每个词的向量加上一个"位置向量"(Positional Encoding),告诉模型"你是第 1 个词 / 第 2 个词 / ..."。

图片

📐 位置向量怎么来的?论文用一组正弦和余弦函数(不同频率)为每个位置生成固定的数字模式。这样做的好处是:模型能自然理解"相对距离",而且能泛化到训练时没见过的更长句子。

8.残差连接:防止"健忘"

Transformer 每一层里,还藏着两个不起眼但很关键的小设计:残差连接(Residual)层归一化(Layer Normalization)

生活化比喻

残差连接就像在每一层加工时,不仅保留加工后的结果,还把原始版本也带着,两份一起传给下一层。这样即使加工过程出了点偏差,原始信息也不会丢失——就像修改文档时永远保留一份"原稿副本"。

层归一化则像把数据"重新按比例放缩到合理范围",防止数字越滚越大导致训练失败。

输入 x自注意力层加法 + 归一化残差捷径:直接把原始 x 加过来

图 8:残差连接让原始信息"抄近路"直接到达后面

9.解码器:一个词一个词地生成

编码器"读懂"了整个输入句子后,会产出一组Key 和 Value 矩阵,交给解码器。接下来解码器开始"写作"。

它和编码器最大的不同是:解码器是自回归的——一次只吐一个词,吐完的词又作为下一步的输入,直到吐出一个特殊的"结束符"<EOS>

图片

解码器里还有一个特殊设计叫Masked Self-Attention(带掩码的自注意力):在预测第 i 个词时,它不允许偷看后面第 i+1, i+2... 个词——因为那些词还没被生成,看到了就"作弊"了。

10.最后一步:从向量到单词

图片

解码器输出线性层Softmax最可能的词:student概率分布(示意):student

图 10:向量 → 概率分布 → 选出最可能的词

🎓 训练是怎么做的?给模型海量"输入-正确输出"对(比如几百万句中英对照),让它做预测。把它预测的概率分布和正确答案的"独热向量"(one-hot)比较,用反向传播调整所有矩阵里的参数,让错误越来越小。经过几天甚至几周的训练,模型就学会翻译了。

11.总结:为什么 Transformer 这么牛?

图片

大白话回顾

如果只让你记住一句话,那就是:

Transformer 的本质就是:让句子里的每个词都用"注意力"互相看一眼、互相融合信息,并且这事能并行做、能叠很多层。

今天你用的 ChatGPT、Claude、通义千问、文心一言……里面的核心算法都是它(或它的变体)。2017 年那篇只有 11 页的论文 《Attention is All You Need》,开启了我们正在经历的 AI 黄金时代。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐