Transformer
论文:Attention Is All You Need(2017)
Transformer 是一种基于**自注意力(Self-Attention)**的序列建模架构,不依赖循环或卷积即可对序列进行编码,成为 BERT、GPT 等大模型的基础。
自注意力(Self-Attention)
区别于传统 RNN 需要按位置逐个传递、串行计算,自注意力允许所有位置同时并行计算,并通过注意力权重直接建模任意位置之间的依赖关系,因此更易捕捉长程依赖,也便于并行加速。
多头注意力(Multi-Head Attention)
将 Q、K、V 在特征维度上拆成多组,每组独立做一次自注意力,最后把多组输出拼接再线性变换。这样模型可以在不同子空间里学习不同类型的依赖关系(如局部语法、长程指代等)。
Q、K、V
自注意力通过三组向量表示每个位置的角色:
- Q(Query):当前位置「想找什么」—— 用于与其它位置的 Key 做匹配。
- K(Key):当前位置「能提供什么」—— 供其它位置的 Query 来检索。
- V(Value):当前位置的「实际内容」—— 匹配后用于加权聚合的信息。
模型通过训练学习 WQ、WK、WV 等投影矩阵,将输入映射为 Q、K、V;运行时可理解为用这些矩阵表达模型学到的「如何查询、如何提供、如何聚合」的知识。
KV Cache
推理阶段是自回归的(逐个生成新 token),例如 "A" → "AB" → "ABC" → "ABCD"。若生成 D 时仍对整段序列重新算一遍注意力,会产生大量冗余计算。
QKV 结构适合做 KV Cache:生成 D 时只需新算 (Q_D)、(K_D)、(V_D),而注意力计算所依赖的 (K_A)、(V_A)、(K_B)、(V_B) 等可直接复用上一轮已算好的结果;当前步只关心「用 D 的 Query 去查前面所有 Key/Value」,因此不需要保留或复用之前的 (Q_A)、(Q_B) 等。
缩放点积注意力(Scaled Dot-Product Attention)
核心计算为:用 Query 与所有 Key 做点积得到相似度,经 softmax 得到注意力权重,再对 Value 加权求和。公式中会对点积结果除以 √(dk)(dk 为 Key 维度),以缓解维度较大时点积数值过大导致 softmax 梯度变小的问题。