真实面经题目 · 原创解析
Self-Attention 中为什么要做 QKV 线性变换?
QKV 线性变换让同一个输入表示分别投影到查询、键和值三个语义空间,使 Attention 能学习匹配关系和被聚合内容,而不是用原始 embedding 直接相乘。
真实面经题目 · 原创解析
QKV 线性变换让同一个输入表示分别投影到查询、键和值三个语义空间,使 Attention 能学习匹配关系和被聚合内容,而不是用原始 embedding 直接相乘。
Self-Attention 里同一个 token 表示会分别乘以 Wq、Wk、Wv 得到 Q、K、V。Q 表示当前 token 想找什么信息,K 表示每个 token 能被匹配的索引特征,V 表示真正要被聚合的内容。如果不做线性变换,就只能在原始 embedding 空间做固定匹配,表达能力弱。线性投影让模型学习不同子空间的关系,多头注意力还会把表示拆到多个头里捕捉不同模式。
Q 用于发起查询,K 用于被匹配,V 用于提供内容。三者来自同一输入但承担不同功能。
可学习线性变换让模型决定哪些维度用于匹配、哪些维度用于传递信息,而不是受原始 embedding 限制。
不同头有各自的 QKV 投影,可以学习语法、位置、语义、实体等不同关系模式。
注意力分数由 Q 和 K 决定,但真正汇总的是 V。把匹配空间和内容空间拆开后,模型可以一边学习谁该关注谁,一边学习应该传递什么信息。
如果直接用原始输入同时承担查询、索引和内容三种角色,模型只能在同一表示空间里完成所有关系建模。QKV 投影给了模型重新组织维度和学习任务相关子空间的能力。
Wq、Wk、Wv 都是随任务一起训练的参数,模型会自动学习哪些维度适合做匹配、哪些维度适合传递内容。回答到这里能说明你理解的不是固定特征工程,而是端到端可学习表示,也能解释为什么不同层不同头会学到不同关系。
它们角色不同,一个表达查询需求,一个表达可匹配特征,独立参数能提升灵活性。
V 投影让模型选择要传递的内容维度,也能配合多头在不同子空间聚合信息。
每个头通常有独立的 QKV 投影,在不同低维子空间做注意力,再拼接回输出。