2026-05-17

Question

请你解释一下 Transformer 里的 self-attention 是什么,它为什么对 LLM 很重要?

可以从这几个角度回答:

  1. self-attention 解决了什么问题?
  2. Query / Key / Value 分别是什么直觉?
  3. attention score 是如何影响 token 之间信息交互的?
  4. 相比 RNN,self-attention 在长文本建模上有什么优势和代价?

Your Answer

Self attention 是针对一个 token,可以结合上下文推断自己实际表达的含义是什么,比如苹果这个词,可以是水果,也可以是一家科技公司,在没有上下文的情况下难以判断。有了 Self attention 机制之后,可以综合已有的 token 推断出它最有可能表达的是什么意思。Q 就是当前 token 想知道自己是什么,K 则是每一个 token 可以提供什么,V 就是实际提供的信息是什么。Q 和 K 决定了一个新的 token 和某一个过往 token 的关联,关联越强,这个 token 的 V 就占比越大。我不知道 RNN 是什么。

Review

你的回答整体方向是对的:抓住了 self-attention 通过上下文让 token 表示变得语境化 这一核心点,Q / K / V 的直觉也基本成立。

不足与补充:

  1. “当前 token 想知道自己是什么”可以再精确一点
    self-attention 不只是判断词义,而是为每个位置生成一个结合上下文的新表示。这个表示会服务于后续预测、理解关系、推理等任务。

  2. attention score 的计算可以补一层机制
    你说 Q 和 K 决定关联强弱是对的,但面试里最好补充:通常会用 Q · K 得到相似度,再经过 softmax 变成权重,最后对 V 做加权求和。

  3. 缺少 multi-head attention 的意识
    单个 attention 头可能关注一种关系,multi-head attention 可以让模型同时关注不同关系,比如语法依赖、指代关系、主题相关性等。

  4. RNN 部分缺失
    不知道 RNN 没关系。这里需要知道的是:RNN 按序列一步步处理 token,天然有顺序结构,但长距离依赖容易衰减,训练也难并行;self-attention 可以让任意两个 token 直接交互,更适合并行训练和长距离依赖建模,但计算复杂度通常是序列长度的平方。

Improved Answer

self-attention 是 Transformer 中让每个 token 根据同一序列里的其他 token 更新自身表示的机制。它的核心作用,是把孤立的 token embedding 变成带上下文语义的 contextual representation。

例如“苹果发布了新手机”和“我吃了一个苹果”里,“苹果”这个 token 初始可能只是一个通用 embedding,但经过 self-attention 后,它会根据周围的“发布”“手机”或“吃了”来形成不同的语义表示。

在机制上,模型会把每个 token 的表示映射成三类向量:Query、Key、Value

  • Query:当前 token 想查询什么信息;
  • Key:每个 token 声明自己拥有什么可被匹配的信息;
  • Value:每个 token 真正提供给其他 token 聚合的内容。

对某个 token 来说,它会用自己的 Query 和所有 token 的 Key 计算相似度,得到 attention score。常见做法是计算 Q · K,再经过 softmax 转成权重。权重越高,说明当前 token 越应该关注那个 token。最后,模型用这些权重对所有 token 的 Value 做加权求和,得到当前 token 的新表示。

self-attention 对 LLM 很重要,因为语言理解高度依赖上下文。它让模型可以建模:

  • 词义消歧,比如“苹果”是水果还是公司;
  • 指代关系,比如“他”“它”指向谁;
  • 语法依赖,比如主谓宾关系;
  • 长距离语义关联,比如前文设定对后文生成的影响。

相比 RNN,self-attention 的优势是:任意两个 token 可以直接建立联系,不需要一步步传递信息,因此更擅长捕捉长距离依赖;同时它对序列位置的计算更容易并行化,适合大规模训练。

代价是:标准 self-attention 的计算量和显存占用通常随序列长度呈平方级增长,也就是 O(n²),所以长上下文场景下成本很高。这也是后来出现 sparse attention、linear attention、KV Cache、长上下文优化等技术的原因之一。