Skip to content

03. Attention(注意力机制)

Self-Attention 如何工作?Q、K、V 的直觉是什么?


🎯 学习目标

完成本模块后,你将能够:

  • ✅ 理解 Self-Attention 的数学原理
  • ✅ 理解 Q、K、V 的直觉意义
  • ✅ 理解 Multi-Head Attention 的优势
  • ✅ 理解 GQA(Grouped Query Attention)
  • ✅ 从零实现 Scaled Dot-Product Attention

📚 学习路径

1️⃣ 快速体验(15 分钟)

bash
cd experiments

# 实验 1:Attention 基础
python exp1_attention_basics.py

# 实验 2:Q、K、V 详解
python exp2_qkv_explained.py

🔬 实验列表

实验目的时间
exp1_attention_basics.pyAttention 的排列不变性和基础计算5分钟
exp2_qkv_explained.pyQ、K、V 的直觉理解5分钟
exp3_multihead_attention.pyMulti-Head 机制详解10分钟

💡 关键要点

1. Self-Attention 的核心公式

Attention(Q,K,V)=softmax(QKTdk)V

直觉

  • QKT:计算"相关性分数"(谁和谁相关)
  • dk:缩放因子(防止 softmax 饱和)
  • softmax:归一化为概率分布
  • ×V:加权求和(提取相关信息)

2. Q、K、V 的直觉

角色全称问题类比
QQuery我想找什么?图书馆查询
KKey我提供什么标签?书的关键词
VValue找到后给什么?书的内容

例子:处理句子 "The cat sat on the mat"

  • "cat" 的 Query:"我想找与动物相关的信息"
  • "sat" 的 Key:"我是一个动作词"
  • 如果 Q·K 匹配 → 取出 "sat" 的 Value

3. 为什么需要 Multi-Head?

问题:单头注意力只能学习一种"关系模式"

解决:多头并行,每个头学习不同模式

  • Head 1:语法关系(主谓宾)
  • Head 2:语义关系(同义词)
  • Head 3:位置关系(相邻词)
  • ...

公式

MultiHead(Q,K,V)=Concat(head1,...,headh)WO

4. GQA(Grouped Query Attention)

MHA(Multi-Head Attention):每个头有独立的 Q、K、V

  • 参数:3 × n_heads × head_dim

GQA:多个 Q 头共享一组 K、V

  • 参数:(n_heads + 2 × n_kv_heads) × head_dim
  • 减少 KV Cache,加速推理

MiniMindn_heads=8, n_kv_heads=2

  • 8 个 Q 头,2 个 KV 头
  • 每 4 个 Q 头共享一组 KV

📖 文档


✅ 完成检查

学完本模块后,你应该能够:

理论

  • [ ] 写出 Attention 的数学公式
  • [ ] 解释 Q、K、V 的作用
  • [ ] 解释缩放因子 dk 的作用
  • [ ] 解释 Multi-Head 的优势

实践

  • [ ] 从零实现 Scaled Dot-Product Attention
  • [ ] 可视化注意力权重
  • [ ] 理解因果掩码(Causal Mask)

🔗 相关资源

论文

代码实现

  • MiniMind: model/model_minimind.py:250-330

🎓 下一步

完成本模块后,前往: 👉 04. FeedForward(前馈网络)

基于 MiniMind 项目的学习笔记