Skip to content

Latest commit

 

History

History
221 lines (135 loc) · 12.7 KB

File metadata and controls

221 lines (135 loc) · 12.7 KB

第 10 章 学习笔记

记录学习过程中的临时提问与解答,供复习参考。


模块 1:推理基础 — QA 记录

📅 2026-05-22

Q:什么是 teacher-forcing,对于之前没有提及的专有名词,文档中未作解释

A:Teacher-forcing 是训练自回归模型时的一种策略:每一步预测时,用真实标签(ground-truth)的前序 token 作为输入,而不是用模型自己上一步预测的 token。

具体来说,假设真实序列是 [我, 爱, 深, 度, 学习]

Teacher-forcing(训练时):
  Step 1: 输入 [我]           → 预测 "爱"    ← 用真实的 "我"
  Step 2: 输入 [我, 爱]       → 预测 "深"    ← 用真实的 "我, 爱"
  Step 3: 输入 [我, 爱, 深]   → 预测 "度"    ← 用真实的 "我, 爱, 深"

非 teacher-forcing(推理时):
  Step 1: 输入 [我]              → 预测 "爱"
  Step 2: 输入 [我, 爱 guessed]  → 预测 ???   ← 如果 Step 1 预测错了,错误会传播

名称来源——老师(teacher)在每一步都"强行(forcing)"把正确答案塞给你。好处:① 提供稳定监督信号便于快速收敛;② 允许整段序列并行计算。

文档已修改为在术语首次出现时直接给出括号内的简短解释,不再使用单独的术语表。


Q:代码中 phi 什么意思

A:$\phi$ 是核函数(kernel function),用于替代 softmax 做注意力的线性化近似。

标准 Softmax 注意力中,token 间的相似度通过 $e^{QK^\top}$ 计算(指数函数 + softmax),复杂度 $O(N^2)$。线性注意力的核心思路是:如果能找到一个核函数 $\phi$,使得 $e^{q \cdot k} \approx \phi(q) \cdot \phi(k)$,那么计算顺序可以从 $(QK^\top)V$ 变为 $Q(K^\top V)$,复杂度从 $O(N^2d)$ 降为 $O(Nd^2)$

示例中 $\phi$ 用的是 ReLU(np.maximum(x, 0)),实际工业中(如 MiniMax Lightning Attention)用的是 SiLU 激活函数,原理相同但效果更好。


Q:全局注意力机制描述中是否缺少 mask 部分

A:是的,图 10.5 中 Softmax Attention 的流程简化了 mask 步骤。实际训练时的完整流程是:$QK^\top$ → 加上 causal mask(上三角设为 $-\infty$)→ softmax → $\times V$。这个 mask 是标准 Softmax 注意力在训练时保证因果性的关键。线性注意力则通过前缀累加天然实现因果性,不需要显式 mask。文档已更新补充了这部分。


Q:实际中线性注意力是这么计算的吗?S 是对每个 $k_i @ v_i$ 的累加,但实际是否应该是当前的 $k_i$ 和所有之前已经出现的 $v$ 乘积?

A:$S$ 累加的确实是 $\sum_{j=1}^{i} k_j v_j^\top$,而不是 $k_i \times v_{j<i}$。这在数学上和标准注意力完全等价。

展开 $q_i^\top S_i$$$q_i^\top S_i = \sum_{j=1}^{i} (q_i^\top k_j) \cdot v_j^\top$$ 每个 $v_j$$q_i \cdot k_j$ 加权——和标准注意力的结构完全一致,只是计算顺序不同。

标准注意力:先算所有 q·k → N×N 矩阵 → 再加权所有 v     → O(N²d)
线性注意力:先算所有 k⊗v → d×d 矩阵 → 再用 q 去查询   → O(Nd²)

数值推演(3 个 token,d=2)也验证了两种方式结果完全一致。


Q:为什么 $y_i = (q_i^\top @ S) / (q_i^\top @ Z)$,理论上 $y_i = (q_i^\top @ S)$ 即可?

A:因为标准 softmax 注意力的输出是加权平均(权重和为 1),不是加权求和: $$y_i = \frac{\sum_j e^{q_i \cdot k_j} \cdot v_j}{\sum_j e^{q_i \cdot k_j}}$$

  • 分子:$q_i^\top S$ — 加权和
  • 分母:$q_i^\top Z$ — 归一化因子

没有分母,输出幅度会随序列长度无限增长。$q_i^\top Z$ 的作用和 softmax 分母 $\sum e^{z_k}$ 一样——保证输出是 $v$ 的加权平均。


Q:数值验证那段表达了什么,偏差指的是什么?

A:对比的是两种计算方式对同一个 token 的输出差异:

  • 错误方式(全局计算):一次性算 $K^\top V$(包含所有 token),第 i 个 token 能看到全部 L 个 token
  • 正确方式(前缀累加):只累加到位置 i,第 i 个 token 只看到位置 1~i

偏差 = Y_wrong[i] - Y_correct[i],即"偷看到未来信息后输出变化了多少"。位置越靠前偷看到的未来 token 越多,偏差越大;最后一个 token 没有未来信息,偏差为零。


Q:Lightning Attention 模块的门控信号添加的作用是什么,为什么从传统 Attention 到线性 attention 后需要加门控?

A:门控信号的作用分三个层面:

  1. 引入非线性,弥补线性注意力表达能力不足:标准 Softmax 本身是强非线性操作(竞争性归一化),线性注意力用 ReLU/SiLU 替代后丢失了这种非线性。门控 $G = \sigma(XW_g)$ 通过 Sigmoid 输出 [0,1] 的值,逐维度做"开关"——输入依赖的非线性过滤。

  2. 实现数据依赖的遗忘:线性注意力的累加器只做加法——旧信息永远不会被遗忘。门控使得更新变为 $S_t = g_t \odot S_{t-1} + k_t v_t^\top$,让模型自己学会哪些历史信息该保留、哪些该丢弃(类似 LSTM 的门控思想)。

  3. 平滑训练过程:TransNormerLLM 论文消融实验:有 gate Loss=2.248,无 gate Loss=2.263。

标准 Softmax 注意力不需要门控,因为 softmax 本身就是强非线性+归一化。线性注意力为了降低复杂度用简单核函数替代 softmax,代价是丢失非线性表达和遗忘能力——门控就是用来补上这个损失。

来源:Lightning Attention 论文 (arXiv 2405.17381)、TransNormerLLM 论文、NeurIPS 2025 最佳论文之一 "Gated Attention for Large Language Models"。


模块 1 作业批改记录

Q1 — 得分:8/10 算术强度计算思路正确。公式中第三项应为 2BF 而非 2BD(B=1 时数值碰巧一致);H100 带宽应为 3.35 TB/s 而非 3.5 TB/s,临界值 ≈295 而非 282.57。

Q2 — 得分:7/10 "维度空间 vs 序列空间"的洞察很好。缺少 MiniMax 论文的关键实验发现:纯线性注意力无法完成检索任务(retrieval),因为 d×d 的 S 矩阵是所有 token 的"模糊混合",无法定位特定 token 的精确位置。

Q3 — 得分:5/10 方向正确但表述不够精确。前缀累加不是"让 i 位置的 key 只能与 i 位置的 value 计算",而是"位置 i 的输出只依赖位置 1 到 i 的所有 K-V 对"。此外缺少题目要求的数值推演引证。

综合评价:Q1 计算能力扎实;Q2 对信息建模差异理解深入,补充检索论据会更完整;Q3 需要加强数学表述精度。可以继续下一模块。


模块 2:推理优化与替代架构 — QA 记录

📅 2026-05-22 ~ 2026-05-25

Q:SSM 和 DDPM(Denoise Diffusion Probability Model)有什么区别,都是有个 denoise 的过程

A:这两个的"denoise"是完全不同的东西。

SSM 没有 denoise 过程。SSM 的核心是一个状态转移方程: $$h'(t) = Ah(t) + Bx(t), \quad y(t) = Ch(t) + Dx(t)$$ 它做的是状态更新——把当前输入 x(t) 和历史状态 h(t) 线性组合,得到新状态。整个过程没有"噪声"的概念。

DDPM 才是真正的 denoise

前向:真实数据 x₀ → 加噪声 → x₁ → ... → x_T(纯噪声)
反向:纯噪声 x_T → 预测噪声并去除 → x_{T-1} → ... → x₀(恢复数据)

每一步都在预测并减去噪声,训练目标就是学习"噪声长什么样"。

SSM DDPM
核心操作 状态更新 h_t = f(h_{t-1}, x_t) 噪声预测 ε̂ = f(x_t, t)
输入 序列数据 被噪声污染的数据
目标 建模序列依赖关系 去除噪声恢复原始数据
有没有噪声 没有 有,是核心设计
生成方式 逐步输入→逐步输出 从纯噪声开始→逐步去噪→生成

简单说:SSM 是在"记东西"(更新状态),DDPM 是在"擦脏东西"(去除噪声)。


Q:"SSM(结构化状态空间模型,如 S4)" 这里的 S4 指的是什么

A:S4 是 Structured State Space for Sequence Modeling 的缩写,是 SSM 家族中第一个在长序列建模任务上取得突破性成功的具体模型(Gu et al., ICLR 2022)。它通过对状态矩阵 A 施加特殊结构约束(HiPPO 初始化 + 对角加低秩分解),使 SSM 在长序列任务上实用化:训练用卷积模式并行、推理转递归模式。后续 S5、Mamba 等都是 S4 的改进变体。


Q:"研究发现预训练 Mamba 模型仅达到同规模 Transformer 38% 的 ICL 性能提升" 什么是 ICL 性能

A:ICL 是 In-Context Learning(上下文学习),指模型不需要微调参数,直接通过在 prompt 中给出几个示例就能学会执行新任务的能力。例如在 prompt 中给几个"英文→中文"的翻译示例,模型就能推理正确翻译新词。

"38% 的 ICL 性能提升"意思是:在相同 few-shot 设置下,Mamba 通过上下文示例获得的性能增益只有同规模 Transformer 的 38%——即 Mamba 在"看示例学新任务"的能力上显著弱于 Transformer。因为 ICL 依赖注意力机制做精确的 token-to-token 匹配(从示例中检索相关信息),而 Mamba 的隐藏状态是一种"压缩摘要",在精确检索上天然弱于注意力。


Q:这个章节的内容为什么比较晦涩难懂

A:客观原因有三:① 跨度太大(推理原理、算术强度、线性注意力、提示词压缩、SSM/Mamba、扩散模型、草案模型——7个独立方向塞在一章);② 缺少统一主线(更像是技术 survey 而非递进教学);③ 模型介绍偏概览(缺少从问题出发的推导)。建议:模块 1 的 Prefill/Decode、KV Cache、算术强度必须掌握;模块 2 的 SSM/扩散模型更多是了解前沿方向;优先理解"为什么"而非"怎么做"。


模块 2 作业批改记录

Q1 — 得分:7/10 调度粒度对比正确,缺少"释放已完成请求的位置给新请求"这个关键机制说明。

Q2 — 得分:7/10 机制和局限理解正确,缺少硬/软压缩在"序列是否真的物理变短"上的关键区分——硬压缩真正减少了 token 数量和计算量,软压缩用特殊向量替代但特殊 token 仍需参与完整注意力计算。

Q3 — 得分:6/10 三阶段 L_B 变化理解正确。诚实地指出文档对 L_B 背景介绍不足。缺少"为什么不全程大 L_B"的完整回答(训练稳定性、显存灾难、推理实用性)。

综合评价:模块 2 内容跨度大,SSM/扩散模型更多是前沿了解。建议重点掌握 Q1(批处理)和 Q2(提示词压缩)。


模块 3:草案模型 — QA 记录

📅 2026-05-25

(本模块无临时提问)

模块 3 作业批改记录

Q1 — 得分:6/10 从算术强度切入的思路正确,但公式推导有误(DF/N 写法不对)。正确理解是:串行 B=1 每次都要重新读权重(K 步读 K 次),并行 B=K 权重只读 1 次分摊给 K 个 token。推测解码不是减少总计算量,而是减少权重的重复读取。

Q2 — 得分:4/10 关键混淆:级联解码是逐 token 做决策,不是按 block 计算。将推测级联(block + 置信度)和级联解码(token + 路由)搞混了。建议回看模块 3 第二节"每步 1 个 token"的描述。

Q3 — 得分:6/10 命中率下降的直觉对。缺少"延迟适应性"分析:两级模型只提供 2 个操作点,多级可通过调整递延阈值覆盖连续延迟-质量谱。

综合评价:Q1 思路方向对;Q2 存在关键概念混淆(block vs token 级别);Q3 直觉正确但不完整。本章三个模块全部完成,模块 1 掌握最好(算术强度、KV Cache),模块 2/3 的前沿内容理解上还需要加强。


第 10 章 学习总结

掌握扎实的知识点

  • Prefill/Decode 两阶段流程和 KV Cache 工作原理
  • 算术强度计算和 memory-bound vs compute-bound 判断
  • 训练 vs 推理的核心差异(teacher-forcing、并行性、瓶颈)

需要加强的薄弱环节

  • 线性注意力的因果性保证(前缀累加的精确数学表达)
  • 级联解码 vs 推测级联的区分(token 级 vs block 级)
  • SSM/Mamba 和扩散模型的具体架构细节(前沿了解即可,不必深究)

课下学习建议

  1. 手工推导一次 B=1 和 B=K 的算术强度对比计算(巩固模块 1+3 的关联)
  2. 画出推测解码、级联解码、推测级联三种策略的流程图并标注关键差异(token 级/block 级、生成前/生成后决策)
  3. 模块 2 的 SSM 和 LLaDA 2.0 属于扩展视野的内容,重读时优先理解"解决了什么问题"而非具体数学细节