自注意力称量仪 · Transformer 图解

这是一台会动的机器,解释 Transformer 的核心步骤——自注意力。先看机器,再按八步读懂它。

它回答一个问题:句子里的每个词,该怎么判断“这句话里谁跟我有关、各占多重要”?例句:The cat sat on the mat(猫坐在垫子上)。

TRANSFORMER
被选中的托盘派出三把梳齿(Q=这个词的提问,三个“头”各一把):梳齿的形状,就是它在找什么样的邻居打孔卡(K=每个词的标签):每个头一行、每行 4 孔;齿对上孔=匹配,对上越多分越高油箱(V=每个词真正的货)按占比出油:softmax 把得分换成占比,每个头的占比合计恰好为 1——杯满代表“预算花完”,谁重要看混合比例三杯倒进漏斗(多头拼接)、压回统一大小(投影),加到被选词自己的那摞纸上——残差:原稿不动,只添笔记左端旋钮=果断度:拧向一头只宠爱最像的词,拧向另一头人人分一点(真实模型里叫“温度”)每个词都在问同一件事:这句话里,谁跟我有关?①六个词各占一个托盘,各带一张打孔卡(K=这个词的标签)和一座油箱(V=这个词的内容)。②轮到谁,桥上就放三把梳齿(Q=这个词的提问;三个“头”各一把、各打各的分——“头”是评委的个数,不是词数)。③齿对上孔=匹配,表盘走一格=得分;softmax 把得分换算成占比,每个头的占比合计恰好为 1。④油箱按占比出油、注满对应头的杯;三杯倒入漏斗压成一块,加回该词自己的那摞纸——原稿不动,只添笔记(残差)。⑤压机把每个词摊开 4 份再压回 1 份,各自消化、词与词不交流(前馈网络)。⑥走一遍是一层,共 6 层,一遍比一遍理解得深。真实模型用 64 个数字代表一个词、逐位相乘再相加来比相似度;这台机器把它裁成 4 位,让“匹配”成为看得见的动作。

跟着机器走八步

每步三个问题:你在图上看见了什么 → 这一步在术语里叫什么 → 为什么 Transformer 需要它。下面的徽章会跟着动画自动点亮当前步骤、并让图上对应的零件变亮;点徽章可以钉住某一步、跳到它的文字。

① 词变成零件 —— token(词块)

你看见:六个托盘在轨道上一字排开,每个托盘里有一张打孔卡、一座油箱,还有自己的一小摞纸。

它叫:句子先被切成一块块,每块叫一个 token。这句话里一块就是一个词。

为什么:Transformer 不逐字母读句子,它对“一块块词”做数学运算。每个词随身带三样东西:标签卡(就是图上的打孔卡,待会儿被人认)、油箱(待会儿交货)、一摞纸(记录它目前被理解到什么程度)。

② 提问与标签相遇 —— Q 遇上 K

你看见:点击某个托盘设为“查询词”,桥上放出三把梳齿,滑到每个托盘上方往卡上落——有的齿插进孔里,有的悬在卡面上,旁边的小表盘跟着走格。

它叫:梳齿的形状是 Q(query,提问):“我在找什么样的邻居”;打孔卡是 K(key,标签):“我有什么特征”。齿对上孔=特征对上了。

为什么:一个词想知道“谁跟我相关”,靠的就是拿自己的提问去对每个词的标签。注意“3”是评委的个数,不是词数:句子里有 6 个词,机器派了 3 个“头”(评委),一个看搭配、一个看指代、一个看远近,各打各的分、互不商量——这就是“多头”。

③ 分数变占比 —— softmax

你看见:三个小表盘各停在一个格数上,比如测 "the" 时三头分 3·2·3(同词同卡,完全匹配)。

它叫:softmax 是一台换算器,把任意分数换成一组合计恰好 100% 的占比:分越高占比越大,还顺带拉开差距。

为什么:注意力像一笔“预算”,总共 100%,要决定怎么分给 6 个词。全给一个词、或六词平分,都不对;softmax 给出的是有偏向的分账。图左端旋钮调的就是这份账的果断度(真实模型叫“温度”):拧向一头只宠爱最像的词,拧向另一头人人分一点。读数里“各头分给它的份额”指的是:每个头自己的 100% 是摊给全句六个词的,落在这一个词上往往只是一小片,所以三个头各自的份额相加不必是 100%。

④ 按占比取货 —— V(内容)

你看见:某个托盘的油箱观察窗液位下降,对应头的杯液位上升——占比越大,放出的油越多。每个头巡游一圈,自己的杯恰好注满。

它叫:油箱是 V(value,内容)——这个词真正携带的信息。标签(K)只负责被找到,被选中后才按占比交出货。杯满=这一头的预算刚好花完,谁重要看混合比例,不看满不满。

为什么:“重要”不能停在打分上,要真的按比例把对方的内容搬一份过来。

⑤ 三份汇总 —— 拼接 → 投影

你看见:三个杯的油都倒进一个漏斗,凝成一板块。

它叫:三个头各写了一份评分单,先并排贴成长条(拼接),再压缩回统一大小(投影)——像把三张明细誊成一张汇总表。

为什么:三个评委的意见要合成一份,才能交给下一个环节。

⑥ 写回原稿 —— 残差

你看见:板块落到查询托盘自己的那摞纸上,纸摞长高一块。

它叫:残差连接。混合物像一张便签贴回原稿——原稿一字不动。

为什么:保证“至少不比原来差”:新学的知识加上去,万一学坏了,原稿还在,信息永不丢失。纸摞一层比一层高,代表这个词的理解在逐层累积。

⑦ 各自消化 —— 前馈网络

你看见:右侧的压机逐个托盘巡游:把纸摞摊开 4 份,再压回 1 份。

它叫:前馈网络。摊开 4 倍纸面=打草稿(真实模型把每个词的数字格子扩到 4 倍),压回 1 份=誊清。

为什么:注意力管“词与词交流”,前馈管“每个词自己消化刚收集的信息”——此刻词与词不交流,像散会后各自回工位整理笔记。

⑧ 重复六遍 —— 层与编码器

你看见:两台机器走完一整遍,右下角计数器走一格,共 6 格;6 格走完后纸摞清空、重新开始。

它叫:走一遍叫一层。原论文的编码器(Transformer 里负责“读懂输入”的那一半)正好 6 层。

为什么:一遍只能看懂浅层关系(挨得近、长得像);多走几遍,才能悟出指代、搭配这类深层关系——每过一层,纸摞上的笔记就更厚一层。(这里“6 层”和“6 个词”撞了数字,纯属巧合:层数是流程重复的次数,和词数无关。)

点亮后想恢复,点任意已点亮的按钮即可全部照亮。

动手试三件事

  1. 看完一轮再说话:什么都不点,看完整一轮(约一分钟),盯着读数栏——每句话都和机器动作同步。
  2. 换个提问:点击 "cat",下一层由它提问。看打分:它和 "mat" 的标签卡几乎相同、和 "sat" 搭配——三头会给出不同的分账。(真实模型不看读音:标签是语义特征,“押韵”只是这个玩具例句里的巧合。)
  3. 拧果断度:把左端旋钮拖到最极端,再看同一站的出油:分毫不变的是三头得分,改变的是占比分账——极端时几乎全给一个词,平缓时人人有份。

术语小词典

token(词块)
把句子像积木一样拆开,一块就是一个 token;这句话里一块=一个词。
自注意力
“自己看自己”:一个词环顾同一句里的同伴,判断该重点听谁的——像开会时每人扫一圈,决定认真听谁发言。
Q(提问)
一份寻人启事:“我在找具备这些特征的信息”。梳齿的形状就是这份条件清单。
K(标签)
每个词挂着的工牌(图上的打孔卡),写明“我有什么特征”;孔位就是勾选框。
V(内容)
词真正携带的货。标签只负责被找到,被选中后才按比例交货——像售货机:按键(K)选货,出货口给货(V)。
占比 / 权重
分给每个来源的“注意力预算”,所有份额加起来必须正好花完(=100%)。
softmax
换算器:把一堆任意分数换成一组合计正好 100% 的占比,分数越高占比越大,还顺带拉开差距。
多头
几个偏好不同的评委各自独立打分,最后把评分单钉在一起。图中 3 是评委数,不是词数。
拼接 / 投影
把几份评分单并排贴成长条(拼接),再压缩回标准大小(投影)——誊成一张汇总表。
残差
原稿+便签:加工结果写在便签上贴回原稿,原稿一字不改——信息不丢,学坏了也能退回。
前馈网络
每个词单独进的“消化间”:先摊开 4 倍纸面打草稿,再压回原大小誊清;此时词与词不交流。
层 / 编码器
同一条流水线走一遍叫一层,一遍比一遍理解得深;编码器是 Transformer 里负责“读懂输入”的那一半(另一半负责生成输出),原论文编码器共 6 层。

机器与真实模型的对照

图里是货真价实的

  • 每个头的占比合计恰好为 1(softmax 归一化);
  • 注意力结果加回原词自己——残差连接;
  • 前馈先扩约 4 倍再压回(4d → d);
  • 编码器 6 层堆叠(原论文数字);
  • 每个头独立打分、互不商量(多头并行)。

图里刻意裁小的(为了看得见)

  • 真实模型用 64 个数字代表一个词,这里裁成 4 个数字;
  • 真实匹配是两串数字逐位相乘再相加(点积),还除以固定系数防分数过大;这里裁成“齿对孔”;
  • 原论文每个编码器层有 8 个头,这里画 3 个;
  • 真实句子几十上百个词,这里 6 个词。

数值尺度是玩具:把“表示一个词的数字个数”从 64 裁到 4、把点积裁成“齿对孔”,是为了让“匹配”成为看得见的动作。但“把任意分数折算成合计 100% 的占比”这套口径,以及残差、前馈 4 倍、6 层这些流程骨架,与真实 Transformer 相同。