跳到主要内容

3.2 Q、K、V:拿着问题查字典

图书馆的一次检索​

上一节说,注意力的第一步是给「相关程度」打分。分是怎么打出来的?想象你去图书馆查资料:

  • 你带着一个问题去:「猫累了会怎样?」
  • 每本书的书脊上有索引标签:「猫科动物行为」「昆虫图鉴」「烹饪大全」……
  • 书里面才是真正的内容。

你拿问题去和每个索引标签比对:跟「猫科动物行为」很匹配,多翻几页;跟「烹饪大全」不匹配,基本不看。匹配度决定了你从每本书取用多少内容。

注意力的打分机制一模一样。句子里的每个词都同时扮演三个角色,各由一个向量表示:

  • Q(query,查询):我想找什么——「它」的 Q 大致是「谁是我指代的对象?」
  • K(key,键):我能被什么样的问题找到——「小猫」的 K 大致是「我是一个动物主语」;
  • V(value,值):真被选中了,我实际提供什么信息。

于是打分就是拿 Q 去和每个词的 K 比对匹配度,匹配度经 softmax 变成总和 100% 的权重,再按权重加权取用各词的 V:

注意力权重=softmax(Q 与各个 K 的匹配度)\text{注意力权重} = \text{softmax}(\text{Q 与各个 K 的匹配度})

举个具体的数:读到「它」这个词时,拿它的 Q 去和句中每个词的 K 比对,假设算出「它 · 小猫」的匹配分是 8.2、「它 · 蝴蝶」是 2.1。softmax 会把这两个分数换成一对总和为 100% 的权重——分差越大、差距被拉得越开——结果大约是 90% 给小猫、10% 给蝴蝶。于是「它」在取用信息时,九成看的是小猫。你待会儿在实验台里看到「它」的弧线几乎全砸向小猫,背后就是这么一次打分 + softmax。

关键的一问:Q、K、V 从哪来?都是从同一个词向量变出来的。 每个词的 embedding 分别戴上三副「学出来的眼镜」(三组可训练参数),就得到它的 Q、K、V——同一个词,看世界的方式、被看的方式、被取用的内容,各不相同。这三副眼镜没有任何人工设计,全靠第 2 章的训练三件套从数据里学出来。

亲手玩一玩注意力​

下面是一个注意力实验台,例句正是上一节那句话。打开时默认选中「指代头」和「它」:

🎮 动手实验
注意力实验台:每个词都在看谁?
点击任意一个词,弧线粗细 = 它分给其他词的注意力权重。换不同的「头」,同一句话会被用完全不同的方式扫视。(权重为示意数据,模式参考真实模型中观察到的头行为)
🧭 专管「这个代词指谁」:选中「它」,看它把注意力砸向哪里。
小猫100%追着蝴蝶跑,它累了就趴下休息。
「它」的注意力去向: 小猫 100%
💡 要点:注意力权重每行加起来恰好是 100%——每个词把「关注预算」分配给全句。不同的头 = 不同的关注模式:有的管指代、有的管邻居、有的管「谁在做动作」。真实大模型每层有几十个头、共几十层,这些分工全是训练中自己涌现的,没人手工指定。

照着做三个实验:

  1. 看「它」找主人:默认状态下(「指代头」+ 选中「它」),弧线几乎全部砸向「小猫」——注意力权重接近 100%,「蝴蝶」作为干扰项只分到零头。这就是上一节「你毫不费力答对的题」在模型里的样子。
  2. 点「🔢 切换热力图」:换成 11×11 的权重总表——行 = 谁在看(query),列 = 看谁(key),颜色越深权重越大。注意每一行加起来恰好是 100%:每个词都有自己的一份关注预算,谁也不多谁也不少。
  3. 勾上「因果遮罩(只许看前文,GPT 的规则)」:热力图右上角的整个三角瞬间清空——每个词右边的列全部归零,被砍掉的权重重新分配给前文。GPT 在生成时就戴着这副「眼罩」:预测下一个词时不许偷看答案(因果遮罩)。
这个类比在哪里不准确?

查字典的类比有两处失真。其一,真字典是硬匹配:查中哪本就取哪本,其余一概不碰;注意力是软匹配——每本书都取一点,匹配度高的多取、低的少取。这个「软」不是缺点,恰恰是它能被训练的原因:软权重处处可导,梯度下降才有的放矢(硬性的「选/不选」没有梯度可言)。其二,实验台里的权重是手工构造的示意数据(模式参考真实模型中观察到的注意力头行为);真实模型里的每一个权重都是 Q·K 匹配度现场算出来的,见深入层。

小结​

本节要点
  • 每个词同时拥有三个向量:Q(想找什么)、K(能被谁找到)、V(提供什么内容),都由同一个词向量乘三组学出来的投影得到。
  • 打分 = Q 与 K 的匹配度(点积);softmax 把打分变成总和 100% 的关注预算;再按预算加权取用 V。
  • 因果遮罩把「看未来」的权重清零——GPT 生成时不许偷看答案。
📝 动手自测0/3
1. 一个词的 Q、K、V 三个向量是从哪里来的?
2. softmax 在注意力机制里的作用是什么?
3. 勾上「因果遮罩」后,热力图发生了什么?为什么 GPT 需要它?

延伸阅读​