真实面经题目 · 原创解析

注意力机制中为什么要计算 Q 和 K 的相似度?

注意力机制计算 Q 和 K 的相似度,是为了让每个位置根据当前查询目标,从所有候选位置中动态分配信息权重。Q 表示当前位置想找什么,K 表示每个位置能被什么条件匹配,相似度越高,对应 V 的信息越应该被聚合进当前表示。

出现于:字节跳动 · 技术客户成功

60 秒回答模板

可以用 Query、Key、Value 三者的分工回答。输入序列经过线性变换得到 Q、K、V。对某个 token 来说,它的 Q 表示这个位置在当前层想关注的模式;其他 token 的 K 表示它们自身提供的可匹配特征。计算 Q 和 K 的点积相似度,就能衡量当前 token 应该关注哪些位置。相似度经过缩放和 softmax 后变成权重,再对 V 做加权求和,得到融合上下文的新表示。这样模型不需要固定窗口或人工规则,而是能根据语义、语法、位置和任务动态建立长距离依赖。

考点 动态选择
难度 真实面经高频题
回答目标 讲清机制、边界和追问

深入解析

01

Q 的含义

Q 可以理解为当前位置发出的查询向量,表达它在当前层需要从上下文中寻找什么信息。不同层、不同头的 Q 会学习不同关注模式,例如寻找主语、指代对象、函数调用参数、时间条件或句子边界。Q 不是原始 token 本身,而是模型通过训练学到的查询表示。

02

K 的含义

K 是每个位置提供给别人匹配的键向量,表达这个位置具有什么可被检索的特征。一个 token 的 K 可能编码它的词性、语义角色、位置关系或结构功能。所有位置的 K 共同构成可匹配集合,当前 Q 会和这些 K 比较,决定哪些位置更相关。

03

相似度的作用

计算 Q 和 K 的相似度,本质上是在做内容寻址。点积越大,说明当前查询和某个候选位置的特征越匹配,该位置的信息就应获得更高权重。再经过缩放可以避免维度较大时点积过大导致 softmax 饱和,经过 softmax 后权重归一化,便于稳定训练和解释信息分配。

04

V 的聚合

K 负责被匹配,V 负责提供真正要被汇入的信息。注意力权重不是直接返回相似度,而是用这些权重对所有 V 加权求和。这样当前 token 的新表示就包含了被关注位置的内容。Q 和 K 决定看谁,V 决定拿什么信息回来。

05

多头的意义

单一相似度空间很难同时表达所有关系。多头注意力会把 Q、K、V 投影到多个子空间,让不同头学习不同依赖,例如局部搭配、长距离指代、语法结构、段落主题或代码作用域。最后再把多个头的结果合并,形成更丰富的上下文表示。

易错点

  • 把 Q、K、V 当成固定业务含义,忽略它们是模型学习到的投影表示。
  • 只说相似度越高越关注,却没有说明 V 才是最终被加权聚合的信息。
  • 遗漏缩放和 softmax,无法解释分数如何变成稳定的注意力权重。
  • 把注意力权重等同于严格可解释因果,忽略它只是模型内部信息分配的一种信号。

面试官追问

为什么不用 Q 直接和 V 算相似度?

因为 K 和 V 承担不同角色。K 用于匹配,V 用于提供内容。拆开后模型可以学习一种表示负责检索相关性,另一种表示负责传递信息,表达能力更强。

为什么点积后要除以维度平方根?

向量维度越高,点积方差通常越大,softmax 容易进入极端饱和区,梯度变小。缩放能让分数范围更稳定,有利于训练。

Q、K、V 是人工指定的吗?

不是。它们来自输入向量经过可学习矩阵的线性投影,具体表示由训练数据和目标函数学习出来。人工只定义结构,模型学习如何使用。

自注意力和交叉注意力有什么区别?

自注意力中 Q、K、V 来自同一序列,用于序列内部建模。交叉注意力中 Q 通常来自解码端,K 和 V 来自编码端或外部信息,用于从另一个来源取信息。