注意力机制定义
传统的注意力机制QK不同源。
而在自注意力机制中,QKV都来自于同一组元素,是想让机器注意到整个输入中不同部分之间的相关性。
计算方式:
Attention(Q,K,V)=Softmax(Q⋅KTdk)⋅V
Attention(Q,K,V)=Softmax(\frac{Q·K^T}{\sqrt{d_k}})·V
Attention(Q,K,V)=Softmax(dkQ⋅KT)⋅V
多头注意力(MHA,Multi-Head Attention)
原理
将输入序列的查询(Q)、键(K)、值(V)向量分别拆分成多个子空间,也就是多个头,每个头独立计算注意力权重并生成输出,最终拼接所有头的输出并通过线性层融合。
特点
- 并行捕捉不同语义/位置特征(例如一个头关注局部依赖,另一个头关注长程依赖)。
- 参数量与头数线性增长,计算复杂度为 O(n²)(序列长度平方),减少了计算量。
来源
- 《Attention Is All You Need》https://arxiv.org/pdf/1706.03762
分组查询注意力(GQA,Grouped Query Attention)
原理
将查询头(Q)分组,每组共享同一组键(K)和值(V)。例如,8个查询头分为2组,每组4个Q头共享1组K和V。
特点
- 平衡性能与效率:比MHA减少KV缓存(推理时内存占用更低),比MQA保留更多表达能力。
- 参数量介于MHA和MQA之间,适合长序列生成任务(如LLaMA-2)。
来源
- 《GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints》https://arxiv.org/pdf/2305.13245
多查询注意力(MQA,Multi-Query Attention)
原理
所有查询头(Q)共享同一组键(K)和值(V),即多个Q头对应1个K和1个V。
特点
- 显著减少KV缓存(推理时内存占用降低为MHA的 1/n_head),提升生成速度。
- 可能损失多样性:共享KV导致特征表达能力弱于MHA。
来源
《Fast Transformer Decoding: One Write-Head is All You Need》https://arxiv.org/pdf/1911.02150
多头潜在注意力(MHLA,Multi-Head Latent Attention)
原理
将输入映射到低维潜在空间,在潜在空间中执行多头注意力计算,最后映射回原始空间。具体就是将原本的矩阵拆分为两个矩阵相乘。如原矩阵维度为d_model*d_model,拆分为d_model*d_latent,其中(d_latent≪d_model),减少存储压力。
特点
- 降低计算复杂度:潜在维度 d_latent≪d_model,复杂度从 O(n²d)降至 O(n²d_latent)。
- 可能引入信息损失,需权衡压缩率与性能。
可以关注deepseek相关文档,其所用注意力就是该注意力机制。
欢迎指正和补充~