数学基础

← 返回 AI 路线图
大学数学复习 → 读懂大模型论文 · 4 周
Attention(Q,K,V) = softmax(QKᵀ / √d)·V
4周
2–3h每天投入(约 70 小时)
4个主题
3篇检验论文
当前:W01
勾选进度保存在这个浏览器里,换设备或清除浏览器数据后不会保留。
每周打卡

按周学习计划

按需学

进阶模块

学完 4 周之后,读到某类论文卡住了,再来学对应的模块。每个模块大约需要 1 周。

大模型算账

前置:第 1、4 周路线图:规模定律、Chinchilla、MoE、KV Cache、量化

看懂发布公告和技术报告里的数字:模型多大、训练花了多少算力、长上下文要多少显存、MoE 为什么推理便宜。只需要乘法。

  1. 参数量。每层约 12d²:注意力的 Q、K、V、O 四个矩阵共 4d²,MLP 两个 d×4d 矩阵共 8d²。总参数约 12·L·d²,再加词表嵌入 V·d。例:GPT-3 的 L = 96、d = 12288,12 × 96 × 12288² ≈ 174B,和公布的 175B 基本一致。
  2. 训练算力。矩阵乘法 (m×n)(n×p) 约 2mnp 次浮点运算。每个 token 前向约 2N,反向约 4N,所以训练总算力 C ≈ 6ND(N 是参数量,D 是训练 token 数)。这是忽略了注意力计算的近似。
  3. Chinchilla 法则。算力固定时,每个参数约配 20 个训练 token 最划算。例:70B × 20 = 1.4T token,训练算力 6 × 70×10⁹ × 1.4×10¹² ≈ 5.9×10²³ FLOPs。
  4. 训练时间。时间 ≈ C ÷ (GPU 数 × 单卡峰值 × MFU),MFU 是实际用上的算力占峰值的比例。例:1000 张 H100(BF16 稠密峰值约 989 TFLOPS),MFU 40%,上面的 5.9×10²³ 约需 17 天。
  5. 权重显存。参数量 × 每个参数的字节数。70B 模型用 BF16(2 字节)约 140 GB,量化到 4 bit 约 35 GB。
  6. KV Cache。每个 token 占 2 × 层数 × KV 头数 × 头维度 × 字节数,2 是 K 和 V 各一份。例:Llama 2 70B(80 层、8 个 KV 头、头维度 128、BF16)每个 token 占 320 KiB,4096 个 token 占 1.25 GiB。如果不用 GQA,64 个头全存,就是 8 倍。
  7. MoE。每个 token 只激活部分专家,所以计算量看激活参数,显存看总参数。例:Mixtral 8x7B 总参数约 46.7B、激活约 12.9B;DeepSeek-V3 总参数 671B、激活 37B。
模块自测 先自己算,再点开看答案
1. 一个 L = 32、d = 4096 的模型,用 12Ld² 估算参数量是多少?Llama 1 7B 正是这个尺寸,实际是 6.7B,差在哪里?
12 × 32 × 4096² ≈ 6.44B。差的主要是词表嵌入:词表 32000,输入嵌入和输出层各一份 32000 × 4096 ≈ 0.13B,合计约 0.26B,加起来约 6.7B。
2. 一个 8B 模型训练 15T token,训练算力是多少?按 Chinchilla 法则它应该训练多少 token?为什么实际要多训这么多?
6 × 8×10⁹ × 15×10¹² = 7.2×10²³ FLOPs。Chinchilla 最优约是 8B × 20 = 160B token,实际多了约 94 倍。Chinchilla 只算训练成本最低;模型上线后推理成本更重要,同样效果下小模型推理更便宜,所以宁可让小模型多训。
3. 一个 32 层、8 个 KV 头、头维度 128 的模型,用 BF16 跑 128K(131,072)token 的上下文,一条请求的 KV Cache 有多大?
每个 token:2 × 32 × 8 × 128 × 2 = 131,072 字节,即 128 KiB。乘以 131,072 个 token,约 16 GiB。这还只是一条请求,并发越多越大,这就是长上下文贵的主要原因。
4. 一个 70B 模型用 BF16 推理,只放权重至少要几张 80 GB 显卡?
权重约 140 GB,至少 2 张(160 GB)。但还要留出 KV Cache 和中间激活的空间,2 张卡余量很小。要服务长上下文或多个并发请求,就得加卡或者量化。

强化学习数学

前置:第 2、3 周路线图:RLHF、DPO、GRPO、o1、DeepSeek-R1

推理模型是现在最热的方向,它的论文里全是策略梯度、PPO 和 GRPO 的公式,而 4 周计划没有讲强化学习。这个模块只讲大模型用得到的部分。

  1. 基本设定。把语言模型看成策略 π_θ(y|x):给定问题 x,生成回答 y。奖励 r(x, y) 来自奖励模型,或者规则(比如答案对不对)。目标是 J(θ) = E_{y~π_θ}[r(x, y)]。
  2. 策略梯度。∇J = E[r · ∇log π_θ(y|x)]。关键一步是 ∇π = π · ∇log π。直觉:奖励高的回答,就提高它的对数概率。
  3. 基线与优势。减去一个和 y 无关的基线 b,梯度的期望不变,但方差变小。A = r − b 叫优势:比平均水平好多少。PPO 用一个价值模型来估计基线。
  4. PPO 的截断。概率比 ρ = π_θ / π_old,目标是 min(ρA, clip(ρ, 1−ε, 1+ε)·A),ε 常取 0.2。作用:同一批数据可以多更新几步,但每步不让新策略离旧策略太远。
  5. KL 惩罚。RLHF 的目标是 E[r] − β·KL(π_θ‖π_ref)。奖励模型只在训练数据附近可靠,模型偏得太远,就会钻奖励模型的漏洞(奖励欺骗)。
  6. GRPO。同一个问题采样 G 个回答,优势 Aᵢ = (rᵢ − mean(r)) / std(r),同一回答的所有 token 共用这个优势。用组内平均代替价值模型,省掉一个和策略一样大的模型。
  7. 和 DPO 的关系。同一个带 KL 约束的目标有闭式解 π* ∝ π_ref · exp(r/β)。DPO 把它反过来,用策略表示奖励,于是不用训练奖励模型,也不用强化学习。
模块自测 先自己推,再点开看答案
1. 为什么减去基线 b 不会改变策略梯度的期望?
E[b·∇log π] = b·Σ π·∇log π = b·Σ ∇π = b·∇(Σ π) = b·∇1 = 0。概率之和恒为 1,它的梯度是 0。
2. GRPO 对一个数学题采样 4 个回答,奖励是 [1, 0, 0, 1](对 = 1,错 = 0)。优势各是多少?如果 4 个都答对呢?
均值 0.5,标准差 0.5(按总体标准差算),优势是 [1, −1, −1, 1]。有的实现用样本标准差,数值略有不同,但正负一样。4 个都对时,标准差是 0,优势全为 0,这道题提供不了学习信号,所以实践中会过滤掉全对或全错的题。
3. PPO 中 ε = 0.2,某个 token 的优势 A = 1,概率比 ρ 已经到了 1.5。目标值是多少?梯度还会继续推高 ρ 吗?
min(1.5 × 1, 1.2 × 1) = 1.2。截断后的那一项是常数,对 θ 的梯度为 0,所以不会再继续推高这个 token 的概率。这就是截断的作用。
4. 如果 RLHF 去掉 KL 惩罚,最可能发生什么?
模型会找到奖励模型打分高、但人其实不喜欢的输出,比如越写越长、重复讨好的话,这就是奖励欺骗。语言质量和回答的多样性也会变差。KL 惩罚把模型拴在参考模型附近。
为什么学这些

论文里的公式对应哪些数学

论文里常见的东西需要的数学
Attention softmax(QKᵀ/√d)V矩阵乘法、点积、softmax。√d 来自方差:d 个独立的单位方差项相加,方差是 d,除以 √d 后方差回到 1
LoRA、低秩近似秩、矩阵分解、SVD
RoPE 位置编码旋转矩阵、复数
LayerNorm / RMSNorm均值、方差
损失函数、困惑度 perplexity对数、交叉熵、KL 散度、最大似然;perplexity = exp(平均交叉熵)
反向传播、Adam偏导、梯度、链式法则、矩阵求导
Scaling Laws幂律、对数坐标
RLHF / PPO / DPO / GRPO期望、策略梯度、KL 约束、Bradley-Terry 模型(sigmoid)
扩散模型、VAE高斯分布、马尔可夫链、ELBO、Jensen 不等式
怎么学

学习方法

每个概念走三步

3B1B 建立直觉,课程或教材学严格定义,最后用 NumPy 写一遍验证。例如手写 softmax,再用数值差分检查推出来的梯度。

追踪每个矩阵的 shape

读每个公式都在旁边写出维度,如 Q: n×d。很多”看不懂”其实是维度没理清。

按目标决定学多深

习题不必全做。一个知识点能解释论文里的某个公式,就可以往下走。行列式手算技巧、Jordan 标准形、积分技巧、级数收敛判别、组合计数难题都先跳过。

论文读三遍

第一遍只看摘要、图和结论;第二遍看方法,公式先跳过;第三遍把关键公式推一遍(Keshav《How to Read a Paper》的方法)。

LLM 当助教,自己验算

可以让模型解释公式,但结论要自己推一遍或跑一遍代码。模型给的推导会出错。

写出来才算懂

每学完一块在博客写一篇。讲不清楚的地方,就是还没懂的地方。

参考资料

课程与书

线性代数

微积分

概率统计

读论文的辅助

课程和书都是长期公开的资料,但链接和最新版本没有逐一核实,开始学之前请打开确认。计划按每天 2–3 小时、每周 6 天学习加 1 天复习估算;每天只有 1 小时的话,一个月完不成,请顺延。一个月之后按需再读:Chinchilla(2203.15556)、InstructGPT(2203.02155)、GRPO 与 DeepSeek-R1(2402.03300、2501.12948)、DDPM(2006.11239),对应的强化学习和扩散数学见“按需进阶”。