注意力机制是如何“注意”的?一个词看懂上下文背后的秘密

注意力机制是如何“注意”的?一个词看懂上下文背后的秘密。

你是否好奇,当 Transformer 模型读一句话时,是如何动态判断“当前这个词,最该参考前面哪几个词”的?这个过程并非魔法,也不是人工编写的规则,而是由 Q、K、V 三个向量 配合训练完成的一套精妙计算。

可以把整个过程想象成:当前词和前面每一个词进行一次“对话”,然后互相打分,得分高的就重点参考。具体来说,分四步。

第一步:三个关键角色登场

对于序列中的每个词,模型都会为它生成三个向量:

  • Q(Query,查询):代表“当前词”的需求。就像在大声问:“我需要理解我自己,谁有相关信息?”
  • K(Key,键):代表每个词的“标签”。每个词举着名牌,写着:“我主要包含这类信息。”
  • V(Value,值):每个词真正携带的具体内容,是最终要被提取的信息。

第二步:打分——“谁对我更重要”

当要理解词 A 时,模型就用 A 的 Q 向量,去和前面每个词的 K 向量计算点积(内积),得到一个标量分数。数学上,向量方向越相近,点积越大,意味着语义越相关。

例如,“北京”的 Q 遇上“首都”的 K,会因为语义高度相关得到一个很高的分数;而遇到“的”这类虚词的 K,分数往往很低。

第三步:从分数变成概率

这些原始分数经过 Softmax 归一化,被挤压成一组在 0 到 1 之间、总和为 1 的概率值。这个概率,就是最终的“注意力权重”。

于是,“首都”可能分到 0.6,“是”分到 0.1,“的”只分到 0.05。模型就真实地“知道”了:理解“北京”时,重点看“首都”。

第四步:提取信息

最后,用这些权重对所有词的 V 向量进行加权求和。权重高的词的 V 被大量保留,权重低的则几乎被忽略。融合后的向量,就携带了丰富的上下文信息,用来完成当前词的预测或理解。

那么,这一切是由谁决定的?

答案是:数据训练

Q、K、V 向量的生成矩阵一开始是完全随机的。模型在完成“预测下一个词”或“完形填空”的任务时,会不断犯错,再通过反向传播调整这些矩阵里的参数。经过万亿次调整,模型在无数句子中捕捉到了词与词之间的统计共现规律,涌现出这样的能力:

  • “的”通常是结构词,不重要;
  • “首都”对一个地点名词很重要;
  • 动词和它的主语关系紧密;
  • 代词往往指向前文出现过的实体……

所以,“最该参考谁”的决定,本质上就是模型在海量文本中学到的、隐藏于 Q 和 K 互动中的语义相关性判断。所谓“多头注意力”,无非是准备很多套不同的 Q、K、V 生成矩阵,让模型能同时从语法、语义、长距离依赖等多个角度去做这样的打分。

这,就是注意力机制的核心秘密。