首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深入浅出注意力机制的三大核心角色:Query、Key、Value

深入浅出注意力机制的三大核心角色:Query、Key、Value

作者头像
未名编程
发布2025-07-10 15:25:20
发布2025-07-10 15:25:20
39400
代码可运行
举报
文章被收录于专栏:PythonPython
运行总次数:0
代码可运行

💡深入浅出注意力机制的三大核心角色:Query、Key、Value

标签:#深度学习 #Transformer #注意力机制 #自然语言处理 #多头注意力 #NLP基础 作者:未名编程 📅 更新时间:2025年6月


🧠 前言:读懂 Attention 的钥匙

你或许听说过 Transformer、大语言模型(LLMs)、BERT、ChatGPT 等神奇模型,但是否真正理解它们的“注意力机制”呢?

如果说 Transformer 是一座智能大厦,那 Query、Key、Value 就是它的三根地基柱石。它们定义了模型“注意谁”和“相信谁”的核心机制。

本文将以「直观类比 + 数学推导 + 示例演算 + 模型原理」四重视角,带你从“似懂非懂”到“融会贯通”。


📌 1. 通俗类比:Query、Key、Value 就像主持人找发言人

想象你是一位主持人(Query),想要讨论一个主题「fruit」,你走进会议室,对所有参与者(Key)说:

“谁对水果最了解,请发言。”

  • 每位参与者的专业方向自我介绍就是他们的 Key
  • 每位参与者真正掌握的内容就是他们的 Value
  • 你手上的问题「fruit」就是 Query

你对每个 Key 做语义匹配,计算他们与 Query 的“相似度”——这一步是点积。然后根据匹配程度对大家的 Value 进行加权汇总,就得到了一个“全场发言摘要”。

这就是注意力机制的精髓。


🧪 2. 数学建模:从点积到 Softmax 再到加权和

🧮 2.1 构造向量输入

我们定义如下词向量:

代码语言:javascript
代码运行次数:0
运行
复制
Query(fruit)       → q = [1.2, 0.7, -0.5]
Key / Value(apple) → k,v_apple = [1.1, 0.8, -0.4]
Key / Value(banana)→ k,v_banana = [1.0, 0.6, -0.6]
Key / Value(chair) → k,v_chair = [-0.2, 0.1, 0.9]

我们要回答的问题是:

“我想找与 fruit 最相关的信息,应该重点听谁的 Value?”


📐 2.2 第一步:点积计算 Query 和 Key 的相关性

使用公式:

x_i = q \cdot k_i = \sum_{j=1}^{d} q_j \cdot k_{i,j}

计算:

  • fruit · apple = 1.2×1.1 + 0.7×0.8 + (-0.5)×(-0.4) = 2.08
  • fruit · banana = 1.2×1.0 + 0.7×0.6 + (-0.5)×(-0.6) = 1.92
  • fruit · chair = 1.2×(-0.2) + 0.7×0.1 + (-0.5)×0.9 = -0.62

得到点积相似度:

x = [2.08,\ 1.92,\ -0.62]

🔁 2.3 第二步:Softmax 归一化为注意力权重
\alpha_i = \frac{e^{x_i}}{\sum_j e^{x_j}} \Rightarrow \text{Softmax}(x)

得到:

代码语言:javascript
代码运行次数:0
运行
复制
{
  "apple": 0.520,
  "banana": 0.439,
  "chair": 0.041
}

解释:模型认为 apple 更相关,banana 次之,chair 几乎无关。


🎯 2.4 第三步:加权汇总 Value 得到输出向量
\text{Output} = \sum_i \alpha_i \cdot v_i

计算:

  • 第一维:0.52×1.1 + 0.439×1.0 + 0.041×(-0.2) ≈ 1.003
  • 第二维:0.52×0.8 + 0.439×0.6 + 0.041×0.1 ≈ 0.683
  • 第三维:0.52×(-0.4) + 0.439×(-0.6) + 0.041×0.9 ≈ -0.434

✅ 最终输出向量:

[\,1.003,\ 0.683,\ -0.434\,]

🧰 3. 为什么 Key 和 Value 要分开?

虽然 Key 和 Value 都源于输入,它们的角色却截然不同:

向量

来源

功能说明

Query

当前词表示 × W_Q

代表当前“我想要找什么”

Key

所有词表示 × W_K

判断谁最匹配这个查询目标

Value

所有词表示 × W_V

真正携带可供提取的信息内容

这个设计可以让模型“按需提取”,在不同语境下灵活聚焦目标语义区域。


🧠 4. 一个更直观的类比:字典查词法

假设我们有一个模拟字典:

代码语言:javascript
代码运行次数:0
运行
复制
{ "apple": 10, "banana": 5, "chair": 2 }

输入查询为 “fruit”,系统给出的注意力权重:

代码语言:javascript
代码运行次数:0
运行
复制
{ "apple": 0.6, "banana": 0.4, "chair": 0.0 }

最终结果:

\text{Output} = 0.6 \times 10 + 0.4 \times 5 + 0 \times 2 = 8

这“8”就是关于“fruit”这个 Query,融合 apple、banana 语义后提取出的“知识精华”。

这个案例形象展示了注意力机制的核心流程:

“相关性决定关注度,关注度决定信息贡献。”


🧬 5. 模型视角下的 Q、K、V 构建

在真实模型中,Q、K、V 都来源于同一个输入序列(如词嵌入矩阵

XX

):

Q = XW_Q,\quad K = XW_K,\quad V = XW_V

其中

WQ,WK,WVW_Q, W_K, W_V

是学习得到的参数矩阵,维度一般为:

WQ:dmodel×dkW_Q: d_{\text{model}} \times d_k
WK:dmodel×dkW_K: d_{\text{model}} \times d_k
WV:dmodel×dvW_V: d_{\text{model}} \times d_v

这使得同一句话的每个 Token,在不同位置都能充当 Query、Key、Value,并进行自注意力操作(Self-Attention)。


🧾 6. 全流程公式总结

标准注意力机制表达式:

\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V

解释:

QKTQK^T

→ 计算所有 Query 和 Key 的点积(相似度)

dk\sqrt{d_k}

→ 缩放因子,防止梯度过大

  • Softmax → 将相似度转成概率权重
  • 与 V 相乘 → 按权重整合内容信息

这就是“注意谁、听谁、怎么听”的完整流程。


🌈 7. 总结回顾

名称

类比角色

作用机制

Query

主持人提问

发出“我要找谁”的信号

Key

与会者简历

判断谁符合需求

Value

与会者建议

聚合重要信息

点积

匹配度打分

衡量 Query 和 Key 相似

Softmax

注意力分配器

转成概率权重

输出

专家答复

加权整合的信息


📚 延伸阅读推荐

  • 【多头注意力机制图解】一词多义如何处理?
  • 【Transformer 编码器全解】为什么能代替 RNN?
  • 【位置编码 Positional Encoding】不加顺序模型就傻了?
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 💡深入浅出注意力机制的三大核心角色:Query、Key、Value
    • 🧠 前言:读懂 Attention 的钥匙
    • 📌 1. 通俗类比:Query、Key、Value 就像主持人找发言人
    • 🧪 2. 数学建模:从点积到 Softmax 再到加权和
      • 🧮 2.1 构造向量输入
      • 📐 2.2 第一步:点积计算 Query 和 Key 的相关性
      • 🔁 2.3 第二步:Softmax 归一化为注意力权重
      • 🎯 2.4 第三步:加权汇总 Value 得到输出向量
    • 🧰 3. 为什么 Key 和 Value 要分开?
    • 🧠 4. 一个更直观的类比:字典查词法
    • 🧬 5. 模型视角下的 Q、K、V 构建
    • 🧾 6. 全流程公式总结
    • 🌈 7. 总结回顾
    • 📚 延伸阅读推荐
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档