跳到主要内容

总览

本章节范围:两卷。基础卷把 self-attention 从最朴素的"加权求和" 一路展开到 GPT 主线的"因果多头",严格 4 步递进,走完拿到 dense attention 的完整心智图。实现卷在此之上讲真实模型用的高效 / 异构注意力(稀疏 / 压缩 / 线性 / SSM),按机制族组织——这是 06 作为"大模型知识与技术的家"对前沿注意力的落点。 目标读者:工程师 / 研究者。基础卷假设已读 03-文本如何变成数字(token id → embedding → 位置编码);实现卷额外假设已过基础卷,并了解 RoPE / KV cache(前置见各篇门槛清单)。

范围与边界

  • 包含:(基础卷)self-attention 想解的根本问题 (RNN 长程依赖 + 训练串行) → 4 步递进 (无参版 → Q/K/V → 因果掩码 → 多头) → 每步引入什么、解掉什么;(实现卷)dense 的 $O(n^2)$ / KV 墙 → 高效注意力的机制族(稀疏化 / 压缩化 / 换算子)逐类的算子级实现
  • 不包含 (外链)

名词定义

本章节子文档默认这些名词已定义,不再重复;父总览 1 总览 已定义的 (Self-attention / Multi-head attention / Causal mask / Q/K/V) 在此不重列。

名词定义
简化自注意力 (Simplified self-attention)教学用的最朴素 attention 形式:直接用输入向量自己做 Q=K=V,无可学参数。Raschka Ch.3 用作教学第一步
Attention score$\mathbf{q}_i \cdot \mathbf{k}_j$ 内积值,衡量 token $i$ 对 token $j$ 的关注权重 (softmax 之前)
Attention weight$\mathrm{softmax}(\mathbf{q}_i \cdot \mathbf{K}^\top)$ 之后的归一化权重,在 token $j$ 上求和为 1
Scaled dot-product attentionVaswani 2017 的标准 attention 形式,内积除以 $\sqrt{d_{\text{head}}}$ 后做 softmax
Causal mask (因果掩码)在 attention score 矩阵上把"未来位置" (j > i) 设为 $-\infty$,让 token 只看历史;decoder-only 标配
Head多头注意力中的单一子空间;一个 head 有独立的 Q/K/V 投影矩阵,维度 $d_{\text{head}}$
Multi-head attention (MHA)把 Q/K/V 沿 hidden 维切成 $n_{\text{head}}$ 个 head,各自独立算 attention,再拼接
Grouped-query attention (GQA)MHA 的变体,多个 Q head 共享一组 K/V head;本章 05 末尾点到,详见长上下文章

@tbl-attn-glossary 本章共享名词

子文档索引

按 "4 步递进" 顺序排列,每篇配独占技术内核 + 负边界 (脑暴契约,各篇写作时不重新讨论):

一句话独占技术内核 (写到深)负边界 (不展开)
02-简化自注意力无可学参数版,纯点积加权建直觉self-attention 排列不变性 → 加权求和直觉 → 用输入向量直接做 Q=K=V → 每个 token "看自己 + 看其他" 的语义 → softmax 归一化不引入可学习投影矩阵 (留 03 篇),不讲因果掩码 (留 04),不讲多头 (留 05)
03-自注意力 Q/K/V引入三投影矩阵 + scaled dot-product为什么必须分 Q/K/V (语义角色) → 三个 $W_Q / W_K / W_V$ 投影 → $\sqrt{d}$ 缩放的工程意义 (softmax 梯度数值稳定) → 与简化版的本质差别 (可学习内容感知 vs 固定相似度)仍用单头,仍无掩码,不讲多头维度切分
04-因果掩码decoder-only 因果性,$-\infty$ 在 softmax 上的数学自回归 next-token prediction 要求只看历史 → 训练时为何能并行 (mask 让位置间无数据依赖) → mask 实现 (上三角 $-\infty$) → softmax 把 $-\infty$ 变成 0 → 与 encoder-only bidirectional attention 的对比 → 推理 decode 阶段 KV cache 的必要性源头KV cache 工程细节归 08-推理;encoder-decoder / cross-attention 不展开;bidirectional encoder (BERT) 仅作对比一句
05-多头注意力多头切分 + 拼接 + 不同 head 学什么单头表达力不足 → 多头切分 hidden 维度 (注意不是复制) → 各 head 独立 Q/K/V → 拼接后线性投影 → head 数量与 head 维度的关系 → 不同 head 实际学到的功能性差异 (positional / syntactic / semantic head) → 多头计算复杂度 vs 单头大维度的对比GQA / MQA 在此点出动机,MLA 与各类高效注意力的实现移至本章实现卷;Flash Attention kernel 优化不展开

@tbl-attn-index 子文档索引 · 基础卷 (含边界契约)

实现卷(前沿高效 / 异构注意力,假设已过基础卷;规划中,链接待回填):

一句话机制族 / SSOT 覆盖负边界
06-从dense到高效(过渡篇)dense 的墙 → 优化方向 → 机制族谱系—(动机 + 谱系图 + 前置门槛清单 + 全技术 SSOT 索引)不重复具体算子(留各机制篇)
07-滑窗与固定稀疏按位置选 key稀疏化(固定):SWA / Longformer / BigBird / StreamingLLM动态选择留 08
08-动态稀疏选择按内容选 key稀疏化(动态):NSA(整体)/ DSA / MoBA;lightning indexer + top-k 唯一主词条压缩 / 线性留后篇
09-序列压缩注意力减 KV entry 数压缩化(序列):compressor / CSA / HCA维度压缩留 10;NSA 压缩分支只对比链 08
10-维度压缩:MLA减每 entry 维度压缩化(维度):MLA(从 03/05 迁入)/ GQA / MQA序列压缩留 09
11-线性注意力与SSM放弃 softmax dot-product换算子:线性注意力 / Mamba / Mamba-2 / SSD分布式 CP 链 interconnect

@tbl-attn-impl-volume 子文档索引 · 实现卷 (规划中,链接待回填)

机制族与 SSOT 归属

实现卷按机制族(对 dense 的偏离方式)组织,不按优化目标——因为多数技术横跨多个优化目标(如 CSA 既压缩又稀疏),但其核心机制只有一种偏离方式。每个技术 / 耦合机制指定唯一主词条页(SSOT),其他文档只链接不重写,避免副本漂移。

机制族怎么偏离 dense技术SSOT 主词条
稀疏化(固定)保留 softmax,按位置减少 query-key 对SWA / Longformer / BigBird / StreamingLLM07-滑窗与固定稀疏
稀疏化(动态)保留 softmax,按内容打分选 keyNSA / DSA / MoBA08-动态稀疏选择
压缩化(序列)保留 softmax,减 KV entry 数compressor / CSA / HCA09-序列压缩注意力
压缩化(维度)保留 softmax,减每 entry 维度MLA / GQA / MQA10-维度压缩:MLA
换算子放弃 softmax dot-product(共享 softmax-free 偏离动作,非 SSD 统一)线性注意力 / Mamba / Mamba-2 / SSD11-线性注意力与SSM

@tbl-attn-mechanism-family 机制族与各技术 SSOT 归属

耦合机制的归属裁定(防跨篇重复,对应 plan review 的 CRITICAL 修正):

耦合机制唯一主词条其他篇怎么处理
lightning indexer + top-k selection08-动态稀疏选择CSA(V4) 与 DSA(V3.2) 共用此机制;09 序列压缩篇的 CSA 段只链 08,不重写
compressor(序列方向压缩)09-序列压缩注意力CSA / HCA 的压缩半边在此;稀疏选择半边链 08
NSA(三分支:压缩+选择+滑窗)08-动态稀疏选择整体归 08(含压缩分支);09 序列压缩篇只在对比时一句链回 08,不重写其压缩分支
MoBA(块级稀疏)08-动态稀疏选择interconnect CP 篇引此处
MLA(维度压缩)10-维度压缩:MLA从 03/05-kv-cache架构压缩迁入;03/05 降级为 KV 体积对比一句 + 链 10

@tbl-attn-ssot-coupling 算子-系统耦合点的 SSOT 裁定

四层知识网络分工:本章实现卷 = 算子机制的 SSOT;03-长上下文/注意力机制变体 = 为什么需要 + 优化方向;interconnect/05 上下文并行 = 这些机制分布式怎么通信;07-前沿模型追踪 / DeepSeek-V4 = 真实模型怎么组合用。算子-系统耦合点(如 top-k 全局视野)归本章实现卷一次讲透,其他层只引。

4 步递进的教学逻辑

本章独特之处在严格递进,不是按"先讲概念再讲实现" 平铺。每篇解掉前一篇留下的一个具体缺陷:

第 N 步引入什么解掉的具体缺陷留下的新缺陷
02 简化版加权求和 + softmaxRNN 串行依赖 → token 间一跳即达用输入直接做 Q=K=V,没有可学参数,表达力受限
03 Q/K/V$W_Q, W_K, W_V$ 投影 + $\sqrt{d}$ 缩放引入可学习,让"看什么" 和"被看什么" 解耦训练时 token 能看到未来,与 next-token prediction 自回归不兼容
04 因果掩码上三角 $-\infty$ maskdecoder-only 自回归训练并行成立单头表达力仍有限,只能学一种"关注模式"
05 多头切 head + 各自算 + 拼接多头并行学不同模式,表达力质变(基础卷结束。dense 的 $O(n^2)$ / KV 墙这一新缺陷,由实现卷接手——见 06 过渡篇)

@tbl-attn-staircase 4 步递进的教学逻辑 (每步引入什么 / 解掉什么 / 留下什么)

为什么严格按这个顺序:业界教程常见两个反模式——(1) 一上来直接给 $\mathrm{softmax}(QK^\top/\sqrt{d})V$ 完整公式,读者懂数学但抓不到"为什么是这样"; (2) 拆分讲但不强调"每一步解决什么", 4 步变成 4 个孤立知识点。Raschka 2024 Ch.3 的设计明确是"每步只引入一个新机制,立刻让读者看到收益",本章严格沿用。

与外部专题的接缝

外链主题在本章哪里引目标
注意力变体的优化方向06 过渡篇 / 05 末尾knowledge/03-长上下文/04-注意力机制变体(变体实现在本章实现卷,03 给方向)
GQA / MQA (KV 架构)/ MLA 的 cache 影响05 末尾 / 08-推理knowledge/03-长上下文/05-kv-cache架构压缩(MLA 的压缩算子见本章 08-压缩注意力篇)
KV cache 推理管理04-因果掩码 末尾08-推理/03-kv-cache
位置编码 (RoPE)03-Q/K/V 节首 (默认已注入)03-文本如何变成数字/04-位置编码
Flash Attention05-多头注意力 末尾外部专题,本章节系列暂未覆盖

@tbl-attn-external 与外部专题的外链对照

参考资料

教学蓝本:

  • Sebastian Raschka. Build a Large Language Model (From Scratch). Manning, 2024. Chapter 3 (4 步递进的设计直接来自这一章).
  • Andrej Karpathy. Let's build GPT: from scratch, in code, spelled out. https://www.youtube.com/watch?v=kCc8FmEb1nY

关键论文:

  • Vaswani et al. Attention Is All You Need. NeurIPS 2017. https://arxiv.org/abs/1706.03762 (scaled dot-product attention + multi-head attention 原始定义)
  • Bahdanau et al. Neural Machine Translation by Jointly Learning to Align and Translate. ICLR 2015. https://arxiv.org/abs/1409.0473 (attention 机制的更早起源,encoder-decoder 框架)

章内交叉引用:父总览 1 总览 给全章节地图与共享名词 / 形状约定。