下面我将详细解释单头注意力(Single-Head Attention)的数学机制,包含所有关键公式的推导和说明。整个过程分为 5 个步骤:
假设输入序列有 n 个 token,每个 token 的嵌入向量维度为 dmodel。输入矩阵表示为:
X∈Rn×dmodel=x1x2⋮xn
其中 (xi∈R1×dmodel) 是第 (i) 个 token 的嵌入向量。
通过三个权重矩阵 WQ,WK,WV,将输入投影到 Query、Key、Value 空间:
QKV=X⋅WQ,=X⋅WK,=X⋅WV,WQ∈Rdmodel×dkWK∈Rdmodel×dkWV∈Rdmodel×dv
- (Q)(Query矩阵)维度: n×dk
- (K)(Key矩阵)维度: n×dk
- (V)(Value矩阵)维度: n×dv
说明:在标准 Transformer 中,通常设 dk=dv。例如当 dmodel=512 时,单头可能取 dk=dv=64。
计算 Query 和 Key 的点积,得到原始注意力分数矩阵:
S=Q⋅KT∈Rn×n
其中元素 Sij=qi⋅kjT 表示第 i 个 token 对第 j个 token 的相似度。
Sscaled=dkS
对每一行应用 softmax,得到注意力权重矩阵:
A=softmax(Sscaled)∈Rn×n
具体计算为:
Aij=∑k=1nexp(Sscaled,ik)exp(Sscaled,ij)
此时 A 满足 sumj=1nAij=1(每行和为 1)。
用注意力权重 (A) 对 Value 矩阵加权求和,得到输出:
Output=A⋅V∈Rn×dv
第 (i) 个 token 的输出向量为:
outputi=j=1∑nAij⋅vj
QKVSSscaledAOutput=X⋅WQ=X⋅WK=X⋅WV=Q⋅KT=dkS=softmax(Sscaled)=A⋅V
Query-Key 点积
Sij=qi⋅kjT=∥qi∥∥kj∥cosθij
夹角 thetaij 越小(相似度越高),分数越大。
Softmax 的作用
将分数转化为概率分布,突出重要关系:

加权输出
输出是 Value 向量的凸组合:(\text{output}i = \sum_j A v_j),其中 (\sum_j A_{ij} = 1)。
假设输入序列:(X=[x1x2])(2 个 token),设 (dk=dv=2):
- 投影:
Q=[1230.5], K=[0.5123], V=[0142]
- 注意力分数:
S=QKT=[(1)(0.5)+(3)(1)(2)(0.5)+(0.5)(1)(1)(2)+(3)(3)(2)(2)+(0.5)(3)]=[3.51.5115.5]
- 缩放(设 (d_k=2)):
Sscaled=2S=[2.471.067.783.89]
- Softmax 归一化(按行):
A=[e2.47+e7.78e2.47e1.06+e3.89e1.06e2.47+e7.78e7.78e1.06+e3.89e3.89]≈[0.0060.0470.9940.953]
- 输出:
Output=A⋅V=[0.006⋅0+0.994⋅10.047⋅0+0.953⋅10.006⋅4+0.994⋅20.047⋅4+0.953⋅2]≈[0.9940.9532.0122.094]
- 输出 1 接近 (v_2)(因权重 0.994)
- 输出 2 接近 (v_2)(因权重 0.953)
- 动态权重分配:(A_{ij}) 表示 token (i) 对 token (j) 的依赖强度。
- 信息融合:输出是全局上下文感知的新表示。
- 可导性:所有操作可微,支持端到端训练。
- 计算复杂度:(O(n2dk)),序列较长时需优化(如稀疏注意力)。
总而言之的数学公式: