首页优化地图方法索引基础概念
返回技术汇总表 ↗

F001 · 基础讲解

Attention 基础:Q/K/V、矩阵乘法与 Softmax

先理解 Attention 如何把其他位置的信息汇总到当前位置,再学习它如何加速。

本页目录

01 · Attention 想解决什么问题

一句话中,一个位置的表示需要参考其他位置。例如“苹果发布了新电脑”中,处理“电脑”位置时,可以参考前面“苹果”“发布”等信息。Attention 根据当前位置与其他位置的匹配程度,决定各位置的信息应占多大比重。实际模型学习的是向量关系,不会显式写出一套词语规则。

理解 FlashAttention 时,先把一个查询位置当成一位提问者:它给各个候选信息打分,把分数变成权重,按权重汇总信息。加速方法改变的是这段工作的执行方式。

02 · Q、K、V 各做什么

符号直观作用怎样得到
Q / Query当前位置用什么特征寻找信息当前位置隐藏向量乘训练得到的 Wq。
K / Key其他位置用什么特征供匹配各位置隐藏向量乘 Wk。
V / Value匹配后真正汇总的信息各位置隐藏向量乘 Wv。

同一位置也会产生自己的 K/V。Q 和 K 用于打分;最终加权的是 V。三者都是向量,“提问 / 标签 / 内容”只是理解分工的类比。

依据:Attention Is All You Need · 原始论文 ↗

03 · 为什么出现 N×N 矩阵

假设 N=4 个位置,每个 Q/K 向量有 d=2 个数。Q 和 K 都可写成 4 行、2 列。转置 Kᵀ 把行列互换,变成 2 行、4 列;QKᵀ 得到 4 行、4 列的分数表。第 i 行、第 j 列表示查询 i 对位置 j 的匹配分数。

用小例子理解符号
Q:  [4, 2]
Kᵀ: [2, 4]
QKᵀ: [4, 4]

一个点积:[1, 2] · [3, 4] = 1×3 + 2×4 = 11

标准缩放点积 Attention 还会把分数除以 √d,以控制数值尺度。因果掩码禁止当前位置读取未来位置;可在 Softmax 前把对应分数屏蔽。

04 · Softmax 怎样把分数变成权重

对一行分数 s,先取指数 exp(s),再除以这一行指数的总和。exp 是指数函数,例如 exp(0)=1、exp(ln 2)=2。ln 是它的反函数;刚开始可以只看取指数之后的权重,不必手算 ln。

用小例子理解符号
假设取指数后是 [1, 2, 4, 3]
总和 = 10
Softmax 权重 = [0.1, 0.2, 0.4, 0.3]

假设 V 是 [10, 20, 30, 40]
输出 = 0.1×10 + 0.2×20 + 0.4×30 + 0.3×40 = 29

真实 V 通常有多个分量,对每个分量做同样的加权求和。最后输出的形状是 [查询数, V 的维度],不是一张新的 N×N 分数表。

05 · 为什么先减去最大值

分数很大时直接计算 exp(s) 可能溢出。把一行所有分数都减去同一个最大值 m,再取指数,可以让最大指数变成 1。所有权重都乘了同一个因子 exp(−m),分子和分母中的因子相消,所以归一化结果不变。

用小例子理解符号
原始强度 [1, 2, 4, 3]
共同除以最大强度 4 → [0.25, 0.5, 1, 0.75]
新总和 2.5
归一化后仍是 [0.1, 0.2, 0.4, 0.3]

FlashAttention 的在线 Softmax 就在利用这个“统一改尺度后结果不变”的性质。

06 · 回到优化方法

记住三个动作就可以继续阅读:QKᵀ 产生分数;Softmax 产生相对权重;PV 汇总 V。不要把中间概率矩阵 P 和生成过程中保存的 KV Cache 混为一谈。

带着这些概念,继续读优化方法

参考资料

继续:采样与约束解码实现优化 →返回优化总览
AI Infra 知识库 · 总览 → 独立讲解网站更新 2026-10-08
搜索知识库

搜索方法与基础概念 · Esc 关闭