Transformer 注意力机制
—— 给完全外行的图解

一篇不需要任何数学基础的文章 · 边读边玩,读完你能讲给别人听
① 为什么需要注意力 ② Q/K/V 是什么 ③ 加权混合 ④ 动手玩一玩 ⑤ 多头注意力 ⑥ 自测

先说结论:注意力机制,就是让模型在读到每个词的时候,回头把整句话重新扫一遍,决定"我现在最该关心谁",然后把这些相关的信息按比例掺在一起,帮自己理解这个词。

听起来还是有点抽象?没关系。整篇文章只用一个比喻——一群人围桌开会。开完全场会,你就懂了 Transformer 里最核心的那个东西。文中的彩色示意图可以直接点、可以玩,你亲眼看着"注意力"被分配出去。

阅读约定:遇到橙色虚线圈住的词,表示它是个"术语",但别怕——每次它出现,旁边都配了白话解释。全文不出现任何公式。

1为什么需要"注意力"?—— 从一句话说起

看这句话:

"小猫追着球跑,因为它很好玩。"

"它"指的是谁?你脱口而出:球。因为好玩的是球,不是猫。

再看一句:

"小猫追着球跑,因为它饿了。"

这回"它"是小猫。饿了的是猫。

注意到了吗?同样是"它"这个字,含义完全取决于句子里的其他词。你人类做这件事毫不费力,是因为你读"它"的时候,脑子里自动把整句话扫了一遍,把"好玩/饿"这些线索捞了出来。

但如果一个模型是"一个词一个词按顺序读、读到哪算哪、从不回头看",它读完"它"就往下走了,根本不知道"它"该连着谁。早期的翻译模型真是这么干的,所以经常犯这种错:

把"动物没过马路,因为它太累了"翻成法语时,"它"该是阳性(指动物);而"……因为它太宽了"里"它"指马路,该是阴性。老模型分不清,翻错过无数次——这是注意力机制诞生时的经典案例。
开会比喻 · 第一幕

想象一场圆桌会议,桌上每个人手里举着一块写着词的牌子:"小猫""追着""球""跑""因为""它""很好玩"。现在轮到"它"发言了。

"它"的做法是:站起来,把桌上每个人挨个看一遍,心里给每人打个"跟你有关吗"的分数——球 8 分、好玩 9 分、小猫 7 分、跑 2 分……然后它把分数最高的人的话,重点记进自己的笔记本。这就是"注意力":谁跟我相关,我就多看谁几眼。

会议桌(一句话) 小猫 追着 球 跑 因为 它 很好玩 「它」的视线 → 谁相关就看谁 箭头方向 = 视线去向 | 线越粗 = 注意力越多 虚线圈 = 它最关心的词(Top 1) · 被瞟了一眼 ★ 盯住
图 1 | "它"发言时,把注意力按"相关程度"分给全句的每个词(线越粗分得越多)

这一步就是注意力机制的灵魂:注意力权重——每个词分到的"关注份额",全部加起来正好 100%。剩下的,只是把这个"扫视 + 打分 + 按比例取信息"的过程,讲得更细一点。

2Query / Key / Value —— 检索的三件套

刚才说"它"要给每个人打"相关分"。可问题来了:分数是怎么打出来的?信息又是怎么取回来的?这就要请出三个听起来吓人、其实你天天在用的词了。

先换一个你熟悉的场景 · 图书馆

你去图书馆找书,其实同时用到了三样东西:

角色在图书馆在一句话里
Q 查询你心里的问题:"我想找讲做菜的书""它"想问全场:谁能帮我搞清楚我是谁?
K 标签每本书书脊上的分类标签每个词挂在身上的牌子,写着"我是管什么信息的"
V 内容书里真正的内容每个词真正携带的信息本体(含义、情绪、单复数……)

打分 = 拿你的 Q(问题)去挨个对每个词的 K(标签):问题跟标签对得越拢,分数越高。"我想知道我是谁"对上"球·我是一个物体、可以被玩"的标签——很配,高分;对上"跑·我是个动作"——不太配,低分。

取信息 = 按分数比例,把每个词的 V(内容)掺回来。注意:标签只用来打分,真正被取走的是内容。

生活里最像的一次:你在音乐 App 搜索框输入"周杰伦"(这是 Q),每首歌有标题、歌手、标签(这些是 K),搜出来以后你真正听的是歌本身(这才是 V)。搜索词从没变成歌,它只是帮你"按匹配度"把歌排了个序、按比例端给你。
回到开会比喻 · 第二幕:每人发三张卡

Transformer 给会上每个人发三张卡片,人人都有,一张不落:

关键来了,也是最妙的一点:这三张卡是从同一个词身上"长"出来的。"球"这个词,既举着自己的 Q(我还要打听点啥),也举着 K(我能提供什么),还揣着 V(我的干货)。自己人跟自己人开会,因此这套做法的名字叫自注意力——那个著名的说法"Attention is All You Need(有了开会就够了)",指的就是它。

词:"球" Q 想知道 "谁跟我有关?谁玩我?" 提问时用 K 能提供 "我是个能玩的物体" 挂在门口供人配对的标签 V 干货 "物体·圆形·能被追着玩" 配对成功后真正递出的内容 句子里每个词都这样,长出自己的三张卡("它"也一样,人人有份)
图 2 | 每个词都会"长"出三张卡:Q 提问、K 挂标签、V 给干货

那……开完一次会,词会变成什么样?

这是整篇文章最重要的一句话,值得读两遍:

开完会后,"它"这个位置上的新词义 = 全场每个词的"干货",按注意力比例混合出的新含义。

比如混合的结果里,"球"的干货占大头(因为"它"最该指球),"很好玩"占一部分,"小猫"也掺了一点。混合出来的这个新"它",就不再只是一个干巴巴的代词,而是一个吸收了全句上下文的、饱满的"它"。接下来模型无论要翻译、要接着写、要回答问题,用的都是这个"混好了"的词。

Transformer 干的事,就是把这样的一场会,开很多层、反复开:第一层开完,每个词都吸收了一轮上下文;第二层在这些"更饱满的词"之间再开一场,理解就再深一层……层层叠下来,模型对整句话的把握越来越立体。这就是"注意力就是全部所需"的意思——不需要别的花哨机关,靠开会就能堆出深刻的理解。

3打分 → 变成百分比 → 按比例混合

现在把中间那两步补全。第一小步:分数怎么变成"份额"?

开会打分时,"它"给全场打的原始分数可能是 3 分、1 分、7 分……这些数有好有坏:可正可负、加起来也不整齐。所以模型会做一次"换算"——

把原始分数统一换算成百分比:全部加起来必须正好 100%,而且不许有负数。
比如原始分「小猫 7 分 · 追着 3 分 · 球 8 分 · 跑 2 分 · 因为 0 分 · 它 2 分 · 很好玩 7 分」
换算后 ➜ 「小猫 22% · 追着 9% · 球 28% · 跑 7% · 因为 5% · 它 7% · 很好玩 22%」

这个换算器有个名字,叫 softmax。你不用记这个名字,只要记住它的两个保证:① 全是正数或零;② 加起来恰好 100%。为什么必须这样?因为接下来要用这些数当"配比"去混合干货——配比当然得是非负的、加起来满打满算的。

有个细节顺带一提:换算用的是"倍数关系"放大——原始分高一点,换算后占比会高出不少,于是模型的目光会明显集中在少数几个词上,而不是雨露均沾。这正是我们想要的效果:该盯住的盯牢,不相干的几乎不看。

第二小步:按配比混合干货。这一步像调一杯饮料:

词注意力配比每个词递出的干货 V掺进"它"的新含义里…
球28%物体·能被玩28% 的"球味"信息
小猫22%动物·毛茸茸·会饿22% 的"猫味"信息
很好玩22%有趣的性质22% 的"好玩"气息
追着 / 跑 / 它 / 因为28%(合计)各自的动作、连接信息少量掺入
配比合计 100%➜ 混出新的"它":一个大概率指"球"、带着"好玩"气息的它
图 3 | 配比条:颜色块越宽,这个词的干货被掺得越多(下一节可以点词,亲眼看它变化)
球 28%
猫 22%
好玩 22%
其余四词 28%
新的"它" = 28%球 + 22%猫 + 22%好玩 + 28%其余

这一步的学名叫加权求和——"加权"就是"按配比","求和"就是"合在一起"。说白了:按配方调一杯混合饮料。注意力机制的全部核心,到这就讲完了。真的,没有藏步骤。

下面,轮到你亲手玩它。

4动手玩:点击一个词,看它把注意力分给谁

下面这句话就是会议桌。点任何一个词,它就会站起来"扫视全场":弧线连到它正在关注的词,粗细就是注意力多少,右下是它按配比混出来的新含义。

名词类 动词类 被点中的词 功能词
👆 点我 👆 (试试先点"它",再点"追",感受差别)
图 4 | 互动版:点谁,谁开会。弧线粗细 = 注意力多少

换了场景,注意力立刻跟着变

注意力最迷人的一点:配比不是写死的,是当场算出来的。同一批词,换到另一句话里,配比马上变。下面给你一个"场景切换":同样都有"苹果",一句在说水果,一句在说公司。

「苹果」泡在果汁里,和橙子挤在一起,很甜。
👆 在这句里点"苹果",看看它关心谁
图 5 | 同一个"苹果",在水果摊和在发布会,开出的会完全不同

顺带说穿一个常见误会:很多人以为大模型是"一个词一个词往后查词典"背下来的。不是。它是每读一个词,就当场开一次会、当场算一次配比。所以同一句话换个词,全场的注意力会瞬间重新分配——你刚才亲眼看到了(用上面的"水果摊 / 发布会"按钮多切几次,盯着"苹果"的配比条看)。

5多头注意力:同时开好几场会

到目前为止我们只开了一场会。但一个词跟别人的关系,往往不止一种:"它"既要搞清指代(我是谁),句子里的另一些词要顾语法(谁修饰谁),还要看情绪(这句是抱怨还是夸)……一场会只有一套配比,顾不过来。

Transformer 的解法豪横又简单:多开几场,每场专职一件事。这就是多头注意力。

开会比喻 · 第三幕:圆桌旁另开三张小桌

还是这批举词牌的人,但会议室里摆了四张小桌,每张桌只聊一个话题。每个人都同时"分身"参加所有桌——每张桌上,他重新打分、重新分配注意力,互不干扰:

① 指代桌"它"最该指谁?重点看"球""猫"这类名词。
它→球它→猫
② 语法桌谁修饰谁?"追"该配"跑",副词贴动词。
追→跑很→好玩
③ 情绪桌这句是开心玩闹还是抱怨?盯"好玩""饿"这类情绪词。
它→好玩猫→饿
④ 场景桌这是在哪里发生?留意时间、地点类线索。
跑→房间追→院子
图 6 | 四张小桌同时开:每张桌一套自己的注意力(示意,真实模型常开 8~96 场)

每张桌开完,各交一份"会议纪要"(各自混出的新含义),最后把所有纪要拼在一起,交给下一层继续加工。拼起来的信息,比任何单独一场会都全面:既有"它=球"的判断,又有语法搭对、情绪色彩、场景氛围。

生活对照:读一份合同时你会同时用好几种眼光——法务眼光盯条款、财务眼光盯金额、业务眼光盯交付时间。你不是把合同读三遍,而是同时戴几副眼镜读一遍。多头注意力就是给模型同时戴上好几副眼镜。

补一句实话,免得神化:每张小桌的人手(相当于每场的"信息容量")比单开大会时少一些——总的算力差不多,只是切成了几份、各管一摊。这是"分工换深度"的买卖,实践证明很划算。

6一分钟总结 & 自测

整篇东西压缩成一段话,你能复述出来就算学会了:

读到每个词时,模型让它站起来提问(Q),去匹配场上每个词的标签(K),匹配度换算成加起来正好 100% 的百分比;然后按这个百分比,把每个词的干货(V)混合成一杯新饮料——这就是这个词吸收了上下文之后的新含义。这场会每层都开、多头并行,理解因此一层层立体起来。

三道小题,验一验

1️⃣ 在"小猫追球因为它很好玩"里,"它"的注意力大头应该分给谁?
2️⃣ Q、K、V 三张卡里,最后真正被"混合"进新词义的是哪张?
3️⃣ 为什么需要"多头"(多开几场会)?

常见疑问快答

本页所有分数均为示意值,用来展示机制的行为方式;真实模型在训练中自己学出这些配比。
比喻为求直观做了简化,但机制骨架(Q/K/V 配对打分 → softmax 百分比 → 加权混合 → 多头并行)与真实 Transformer 一致。