先说结论:注意力机制,就是让模型在读到每个词的时候,回头把整句话重新扫一遍,决定"我现在最该关心谁",然后把这些相关的信息按比例掺在一起,帮自己理解这个词。
听起来还是有点抽象?没关系。整篇文章只用一个比喻——。开完全场会,你就懂了 Transformer 里最核心的那个东西。文中的彩色示意图可以直接点、可以玩,你亲眼看着"注意力"被分配出去。
看这句话:
"小猫追着球跑,因为它很好玩。"
"它"指的是谁?你脱口而出:球。因为好玩的是球,不是猫。
再看一句:
"小猫追着球跑,因为它饿了。"
这回"它"是小猫。饿了的是猫。
注意到了吗?同样是"它"这个字,含义完全取决于句子里的其他词。你人类做这件事毫不费力,是因为你读"它"的时候,脑子里自动把整句话扫了一遍,把"好玩/饿"这些线索捞了出来。
但如果一个模型是"一个词一个词按顺序读、读到哪算哪、从不回头看",它读完"它"就往下走了,根本不知道"它"该连着谁。早期的翻译模型真是这么干的,所以经常犯这种错:
想象一场圆桌会议,桌上每个人手里举着一块写着词的牌子:"小猫""追着""球""跑""因为""它""很好玩"。现在轮到"它"发言了。
这一步就是注意力机制的灵魂:注意力权重——每个词分到的"关注份额",全部加起来正好 100%。剩下的,只是把这个"扫视 + 打分 + 按比例取信息"的过程,讲得更细一点。
刚才说"它"要给每个人打"相关分"。可问题来了:分数是怎么打出来的?信息又是怎么取回来的?这就要请出三个听起来吓人、其实你天天在用的词了。
先换一个你熟悉的场景 · 图书馆你去图书馆找书,其实同时用到了三样东西:
| 角色 | 在图书馆 | 在一句话里 |
|---|---|---|
| Q 查询 | 你心里的问题:"我想找讲做菜的书" | "它"想问全场:谁能帮我搞清楚我是谁? |
| K 标签 | 每本书书脊上的分类标签 | 每个词挂在身上的牌子,写着"我是管什么信息的" |
| V 内容 | 书里真正的内容 | 每个词真正携带的信息本体(含义、情绪、单复数……) |
打分 = 拿你的 Q(问题)去挨个对每个词的 K(标签):问题跟标签对得越拢,分数越高。"我想知道我是谁"对上"球·我是一个物体、可以被玩"的标签——很配,高分;对上"跑·我是个动作"——不太配,低分。
取信息 = 按分数比例,把每个词的 V(内容)掺回来。注意:标签只用来打分,真正被取走的是内容。
Transformer 给会上每个人发三张卡片,人人都有,一张不落:
关键来了,也是最妙的一点:这三张卡是从同一个词身上"长"出来的。"球"这个词,既举着自己的 Q(我还要打听点啥),也举着 K(我能提供什么),还揣着 V(我的干货)。自己人跟自己人开会,因此这套做法的名字叫自注意力——那个著名的说法"Attention is All You Need(有了开会就够了)",指的就是它。
这是整篇文章最重要的一句话,值得读两遍:
开完会后,"它"这个位置上的新词义 = 全场每个词的"干货",按注意力比例混合出的新含义。
比如混合的结果里,"球"的干货占大头(因为"它"最该指球),"很好玩"占一部分,"小猫"也掺了一点。混合出来的这个新"它",就不再只是一个干巴巴的代词,而是一个吸收了全句上下文的、饱满的"它"。接下来模型无论要翻译、要接着写、要回答问题,用的都是这个"混好了"的词。
Transformer 干的事,就是把这样的一场会,开很多层、反复开:第一层开完,每个词都吸收了一轮上下文;第二层在这些"更饱满的词"之间再开一场,理解就再深一层……层层叠下来,模型对整句话的把握越来越立体。这就是"注意力就是全部所需"的意思——不需要别的花哨机关,靠开会就能堆出深刻的理解。
现在把中间那两步补全。第一小步:分数怎么变成"份额"?
开会打分时,"它"给全场打的原始分数可能是 3 分、1 分、7 分……这些数有好有坏:可正可负、加起来也不整齐。所以模型会做一次"换算"——
这个换算器有个名字,叫 softmax。你不用记这个名字,只要记住它的两个保证:① 全是正数或零;② 加起来恰好 100%。为什么必须这样?因为接下来要用这些数当"配比"去混合干货——配比当然得是非负的、加起来满打满算的。
有个细节顺带一提:换算用的是"倍数关系"放大——原始分高一点,换算后占比会高出不少,于是模型的目光会明显集中在少数几个词上,而不是雨露均沾。这正是我们想要的效果:该盯住的盯牢,不相干的几乎不看。
第二小步:按配比混合干货。这一步像调一杯饮料:
| 词 | 注意力配比 | 每个词递出的干货 V | 掺进"它"的新含义里… |
|---|---|---|---|
| 球 | 28% | 物体·能被玩 | 28% 的"球味"信息 |
| 小猫 | 22% | 动物·毛茸茸·会饿 | 22% 的"猫味"信息 |
| 很好玩 | 22% | 有趣的性质 | 22% 的"好玩"气息 |
| 追着 / 跑 / 它 / 因为 | 28%(合计) | 各自的动作、连接信息 | 少量掺入 |
| 配比合计 100% | ➜ 混出新的"它":一个大概率指"球"、带着"好玩"气息的它 | ||
这一步的学名叫加权求和——"加权"就是"按配比","求和"就是"合在一起"。说白了:按配方调一杯混合饮料。注意力机制的全部核心,到这就讲完了。真的,没有藏步骤。
下面,轮到你亲手玩它。
下面这句话就是会议桌。点任何一个词,它就会站起来"扫视全场":弧线连到它正在关注的词,粗细就是注意力多少,右下是它按配比混出来的新含义。
注意力最迷人的一点:配比不是写死的,是当场算出来的。同一批词,换到另一句话里,配比马上变。下面给你一个"场景切换":同样都有"苹果",一句在说水果,一句在说公司。
顺带说穿一个常见误会:很多人以为大模型是"一个词一个词往后查词典"背下来的。不是。它是每读一个词,就当场开一次会、当场算一次配比。所以同一句话换个词,全场的注意力会瞬间重新分配——你刚才亲眼看到了(用上面的"水果摊 / 发布会"按钮多切几次,盯着"苹果"的配比条看)。
到目前为止我们只开了一场会。但一个词跟别人的关系,往往不止一种:"它"既要搞清指代(我是谁),句子里的另一些词要顾语法(谁修饰谁),还要看情绪(这句是抱怨还是夸)……一场会只有一套配比,顾不过来。
Transformer 的解法豪横又简单:多开几场,每场专职一件事。这就是多头注意力。
开会比喻 · 第三幕:圆桌旁另开三张小桌还是这批举词牌的人,但会议室里摆了四张小桌,每张桌只聊一个话题。每个人都同时"分身"参加所有桌——每张桌上,他重新打分、重新分配注意力,互不干扰:
每张桌开完,各交一份"会议纪要"(各自混出的新含义),最后把所有纪要拼在一起,交给下一层继续加工。拼起来的信息,比任何单独一场会都全面:既有"它=球"的判断,又有语法搭对、情绪色彩、场景氛围。
补一句实话,免得神化:每张小桌的人手(相当于每场的"信息容量")比单开大会时少一些——总的算力差不多,只是切成了几份、各管一摊。这是"分工换深度"的买卖,实践证明很划算。
整篇东西压缩成一段话,你能复述出来就算学会了: