自注意力机制中的查询、键和值

自注意力机制的核心是查询(Query)、键(Key)和值(Value)这三个向量。理解它们的角色和相互作用对于掌握自注意力的工作原理至关重要。

对于输入序列中的每个元素(token),我们通过特定的变换生成三个向量:Q、K 和 V。它们的概念性作用如下 :

  • 查询(Query, Q):代表当前正在处理的元素(token)的视角。它像一个探针或问题,用于探索序列中的其他元素,以确定哪些元素与当前元素最相关,从而更好地理解当前元素的上下文。查询向量表达了当前元素“想要了解什么”或“正在寻找什么” 。
  • 键(Key, K):代表序列中(包括当前元素自身在内)的每个元素所携带的一种“标签”或“标识符” 。它描述了该元素“能够提供什么信息”或“代表什么内容”,用于和查询向量进行匹配。查询向量会与所有键向量进行比较,以评估相关性。
  • 值(Value, V):代表序列中每个元素的实际内容或信息。一旦通过查询和键的比较确定了相关性(注意力权重),这些权重就会作用于对应的值向量。最终的输出是这些加权值向量的聚合,表示模型根据相关性“提取”到的信息。

理解 QKV 概念的一个常用且有效的方法是将其类比于信息检索系统,例如数据库查询、字典查找或搜索引擎:

  • 查询(Query):相当于你在搜索引擎中输入的搜索词,或者你想在字典里查找的单词,或是数据库的查询请求。
  • 键(Key):相当于搜索引擎索引中的网页标题或关键词,字典中的词条,或者数据库中用于匹配查询的索引字段。系统会将你的查询与这些键进行比较,以找到匹配项。
  • 值(Value):相当于搜索结果返回的网页内容,字典中单词的释义,或者数据库中与键对应的完整记录。

在自注意力中,每个元素都扮演着查询者的角色,向序列中的所有其他元素(作为键值对)“提问”。通过比较查询和键,计算出每个键(即每个其他元素)与当前查询的相关程度(相似度得分)。然后,这些得分被用来对相应的值(即其他元素所包含的信息)进行加权求和,最终得到一个融合了来自所有相关元素信息的、上下文感知的表示。