注意力机制里的qkv——目前讲解得最清晰的注意力机制

现在我们来用一个小小的文本例子,看看注意力到底是如何改变信息表示的。

💬 例子:一句话 “The animal didn’t cross the street because it was too tired.”

我们要理解这句话中 “it” 指的是什么。
直觉告诉你,“it” 是指 “the animal” 而不是 “the street”。
而注意力机制,神奇的地方就在于:模型能自动学出这种语义依赖!


⚙️ 一、输入表示(词向量)

假设我们把句子拆成 tokens:
["The", "animal", "didn't", "cross", "the", "street", "because", "it", "was", "too", "tired"]

每个词有一个向量表示,例如(简化为二维):

表格
 
向量 (embedding)
The [0.2, 0.1]
animal [0.9, 0.8]
street [0.7, 0.1]
it [0.5, 0.5]
tired [0.1, 0.9]

🔁 二、计算 Self-Attention(理解 “it”)

当模型在处理当前位置 “it” 时:

  • 它会生成一个 Query 向量 Q₍ᵢₜ₎。
  • 同时,每个词也都有自己的 Key 向量 K(即它“展示给别人看”的信息)。

然后模型计算每个 Key 对 “it”的相关程度:

表格
 
被关注的词相似度(Q·Kᵀ)含义
The 0.2 几乎不相关
animal 0.9 非常相关
street 0.1 不相关
it 1.0 自身最相关
tired 0.3 稍有关系

Softmax 之后得到注意力权重:

表格
 
注意力权重
The 0.05
animal 0.45
street 0.02
it 0.4
tired 0.08

🧩 三、加权求和(汇聚语义)

然后将这些权重乘以它们各自的 V(Value 向量)——
也就是每个词真正包含的语义特征。

加权求和之后,“it”的新表示中:
-来自 “animal” 的特征占了近一半;
-来自 “it” 自身占了 0.4;
-几乎不受 “street” 影响。

最终结果表示:

“it” 的含义 ≈ “animal” 的语义。


🌈 四、这体现了注意力的关键特点

表格
 
特点说明
动态性 不同位置的 Query(例如 “it” 或 “street”)会关注不同词。
信息聚合 当前词的表示由全局上下文加权求和得到。
可解释性 你能可视化看到 “it” 关注了哪几个词。

🧭 换句话说:

注意力机制让模型在“理解一个词时”,不只是看它自己,而是去找句子里谁和它最有关系。

 

从零开始构建大模型一书中讲解得最清晰:

image

 

image

 

image

 

 

image

 

image

 

image

 

image

 

image

 

image

 

理由,点积还有一个几何等价定义:
a⋅b=∥a∥⋅∥b∥⋅cosθ
θ:它们之间的夹角

点积大(特别是正且接近最大值) ⇒ 向量方向接近 ⇒ 相似度高
点积接近 0 ⇒ 向量近乎正交 ⇒ 基本无关
点积为负 ⇒ 向量方向相反 ⇒ 语义上可能“对立”

如果我们先把向量都归一化为单位向量:点积 = 余弦相似度(cosine similarity)。因此,点积天然就能用来表示“方向相似度”;
这就是为什么在机器学习中,用「点积」衡量相似性是非常自然又高效的做法。

 

image

 

 

image

 

image

 

image

 

image

 

image

 

 

image

 

image

 

image

 

其实自注意力机制核心总结下来就是:

为了实现一个根据上下文变动的注意力向量数值。步骤:

传统embedding计算向量 --》两两计算相似度 --》获得当前单词和所有单词的权重 --》加权求和 --》即可获得当前单词(q)的注意力向量

 

为了让模型可以学习更新,所以引入了Wq、Wk,Wv,使其可以学习更新,因此QKV:

image

无非就是上面简单计算里引将原始的了embedding经过了Wqkv以后进行了一次神经网络的转换而已。

 

 

 

 

 

posted @ 2025-10-28 09:56  bonelee  阅读(144)  评论(1)    收藏  举报