标签:#深度学习 #Transformer #注意力机制 #自然语言处理 #多头注意力 #NLP基础 作者:未名编程 📅 更新时间:2025年6月
你或许听说过 Transformer、大语言模型(LLMs)、BERT、ChatGPT 等神奇模型,但是否真正理解它们的“注意力机制”呢?
如果说 Transformer 是一座智能大厦,那 Query、Key、Value 就是它的三根地基柱石。它们定义了模型“注意谁”和“相信谁”的核心机制。
本文将以「直观类比 + 数学推导 + 示例演算 + 模型原理」四重视角,带你从“似懂非懂”到“融会贯通”。
想象你是一位主持人(Query),想要讨论一个主题「fruit」,你走进会议室,对所有参与者(Key)说:
“谁对水果最了解,请发言。”
你对每个 Key 做语义匹配,计算他们与 Query 的“相似度”——这一步是点积。然后根据匹配程度对大家的 Value 进行加权汇总,就得到了一个“全场发言摘要”。
这就是注意力机制的精髓。
我们定义如下词向量:
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?”
使用公式:
计算:
得到点积相似度:
得到:
{
"apple": 0.520,
"banana": 0.439,
"chair": 0.041
}
解释:模型认为 apple 更相关,banana 次之,chair 几乎无关。
计算:
✅ 最终输出向量:
虽然 Key 和 Value 都源于输入,它们的角色却截然不同:
向量 | 来源 | 功能说明 |
---|---|---|
Query | 当前词表示 × W_Q | 代表当前“我想要找什么” |
Key | 所有词表示 × W_K | 判断谁最匹配这个查询目标 |
Value | 所有词表示 × W_V | 真正携带可供提取的信息内容 |
这个设计可以让模型“按需提取”,在不同语境下灵活聚焦目标语义区域。
假设我们有一个模拟字典:
{ "apple": 10, "banana": 5, "chair": 2 }
输入查询为 “fruit”,系统给出的注意力权重:
{ "apple": 0.6, "banana": 0.4, "chair": 0.0 }
最终结果:
这“8”就是关于“fruit”这个 Query,融合 apple、banana 语义后提取出的“知识精华”。
这个案例形象展示了注意力机制的核心流程:
“相关性决定关注度,关注度决定信息贡献。”
在真实模型中,Q、K、V 都来源于同一个输入序列(如词嵌入矩阵
):
其中
是学习得到的参数矩阵,维度一般为:
这使得同一句话的每个 Token,在不同位置都能充当 Query、Key、Value,并进行自注意力操作(Self-Attention)。
标准注意力机制表达式:
解释:
→ 计算所有 Query 和 Key 的点积(相似度)
→ 缩放因子,防止梯度过大
这就是“注意谁、听谁、怎么听”的完整流程。
名称 | 类比角色 | 作用机制 |
---|---|---|
Query | 主持人提问 | 发出“我要找谁”的信号 |
Key | 与会者简历 | 判断谁符合需求 |
Value | 与会者建议 | 聚合重要信息 |
点积 | 匹配度打分 | 衡量 Query 和 Key 相似 |
Softmax | 注意力分配器 | 转成概率权重 |
输出 | 专家答复 | 加权整合的信息 |