arganzheng · 2026-09-28
拿到一篇 LLM 论文,能不能读懂它的每一个公式; 给一个建模假设,能不能推出它的训练 loss; 给一个评测结果,能不能判断差异是真的还是噪声?
教材第一章的「矩阵乘法」,本系列只要三件事:
| 事 | 内容 | 用处 |
|---|---|---|
| 形状规则 | \([m,k] \times [k,n] \to [m,n]\),内维必须相同 | 读任何结构图的第一反应 |
| 成本规则 | 每个输出元素 \(k\) 次乘加 → \(2mnk\) FLOPs | 训练要花多少钱 |
| 代一个数 | Llama-3-8B,\(d=4096\):一个 token 过 \(W_Q\) 是 33.5 MFLOPs,4096 个 token 是 137 GFLOPs | L4 整本算力账只是它的重复 |
flowchart LR
subgraph LA["线性代数"]
direction TB
P1["一 · 形状与 2mnk"] --> P2["二 · 内积 / 范数 / 余弦"] --> P3["三 · 正交 / 旋转 / SVD"]
end
subgraph PR["概率"]
direction TB
P4["四 · 条件分布"] --> P5["五 · MLE → 交叉熵"]
end
subgraph IT["信息论"]
P6["六 · 熵 / KL → DPO"]
end
subgraph CA["微积分与优化"]
P7["七 · 链式法则 → 策略梯度"]
end
subgraph ST["统计推断"]
P8["八 · 置信区间、拟合"]
end
LA -- "内积的方差 → 除以 √d_k" --> PR
PR -- "NLL 是交叉熵特例" --> IT
PR -- "softmax 梯度 p − y" --> CA
IT -- "KL 进入 RL 目标" --> CA
PR -- "二项分布 → 标准误" --> ST
classDef la fill:#e8f1f8,stroke:#5b8db8
classDef pr fill:#fdf1e0,stroke:#d1913c
classDef it fill:#eaf5e6,stroke:#6aa84f
classDef ca fill:#f4e8f7,stroke:#9b59b6
classDef st fill:#f2f2f2,stroke:#888
class P1,P2,P3 la
class P4,P5 pr
class P6 it
class P7 ca
class P8 st
箭头是推导上的依赖,不是阅读顺序:只想弄懂一个公式,沿箭头往回找就是最小前置。
结论:两条规则够用——形状规则 \([m,k]\times[k,n]\to[m,n]\)、成本规则 \(2mnk\);一个 token 过整个模型约 \(2N\) FLOPs,训练约 \(6ND\)。
| 对象 | 数字 |
|---|---|
| \(W_Q\)(\(4096 \times 4096\))一个 token | 33.5 MFLOPs |
| 4096 个 token | 137 GFLOPs |
| 一层七个矩阵 | 218M 参数,81% 在 MLP |
| 全模型 | 8.03B 参数,一个 token 前向约 15 GFLOPs |
| 训练总算力 | \(C \approx 6ND\)(第八篇 Chinchilla 直接沿用) |
结论:三个词一套语言——内积含方向与大小、范数只量大小、余弦只比方向;范数有长度 / 正则化项 / 误差度量三个身份。
结论:正交保内积,所以旋转 \(m\theta\) 与 \(n\theta\) 后的内积只剩 \(n-m\)——RoPE 编码相对位置;截断 SVD 是最好的低秩近似,LoRA 的参数省在 \(r(m+n) \ll mn\)。
结论:语言模型是链式法则 \(p(x_{1:T}) = \prod_t p(x_t \mid x_{<t})\) 里每一项的参数化;这个定义决定了 next-token 目标、逐 token 生成、KV cache、评测依赖采样设置。
| 在哪里 | 怎么用 |
|---|---|
| 性质本身 | \(n\) 个独立变量之和方差相加,标准差只按 \(\sqrt n\) 涨;均值的标准差 \(\sigma/\sqrt n\) |
| 初始化 | 一层输出方差 \(d\,\sigma_W^2\sigma_x^2\) → 标准差取 \(1/\sqrt d\) 量级(Llama 0.02 vs \(1/\sqrt{4096} = 0.0156\)) |
| attention | \(q^\top k\) 是 \(d_k\) 项之和,方差 \(d_k\);\(d_k = 128\) 时标准差约 11.3,不除 \(\sqrt{d_k}\) softmax 就饱和 |
| 扩散 | \(T\) 步加高斯噪声等价一步 |
| 第七篇 | 随机梯度噪声方差 \(\propto 1/B\) |
| 第八篇 | 评测的标准误 \(\sqrt{p(1-p)/n}\);高斯 95% 在 \(\mu \pm 1.96\sigma\)——1.96 从这里来 |
结论:取对数 → 取负 → 除以 token 数,得到每 token 负对数似然 \(\mathcal L = -\frac1T\sum_t \log p_\theta(x_t\mid x_{<t})\);所有 loss 都是这个模板换一个概率。
结论:\(H(p,q) = H(p) + D_{\mathrm{KL}}(p\Vert q)\)——交叉熵是熵加上「多付的那部分」;KL 不对称,方向决定行为;从 KL 约束的最优策略四步推出 DPO。
| 量 | 数字 |
|---|---|
| 困惑度 \(= e^{\text{loss}}\) | loss 1.8 ↔ PPL 6.05 ↔ 2.6 bit/token(1 nat = 1.44 bit) |
| loss 的下限 | 数据本身的熵:Chinchilla 的 \(E = 1.69\) |
| \(p=(0.5,0.5)\)、\(q=(0.9,0.1)\) | \(H(p)=0.693\)、\(H(p,q)=1.204\)、\(D(p\Vert q)=0.511\)、\(D(q\Vert p)=0.368\) |
| RLHF 的 KL 项 | \(\beta D_{\mathrm{KL}}(\pi\Vert\pi_{\text{ref}})\) 是 reverse:不能去参考模型认为不可能的地方 |
| 跨 tokenizer 比 | PPL 依赖词表,要换成 bits per byte |
去掉 \(\pi_{\text{ref}}\) 就失去「不偏离」的约束。
结论:梯度与参数同形;softmax + 交叉熵的梯度是 \(p - y\);期望的梯度用 \(\nabla\pi = \pi\nabla\log\pi\) 写回期望——策略梯度是「按奖励加权的最大似然」,减 baseline 期望不变。
| 估计 | 结果 |
|---|---|
| 精确梯度 | 0.0500 |
| REINFORCE | 无偏,std 0.144 |
| 减合理 baseline | std 0.070(方差减半) |
| 减离谱 baseline | std 0.898(更糟) |
| GRPO 组内均值(含自己) | 缩了 \((1 - 1/G)\) 倍,0.75×;RLOO 留一法无偏 |
结论:95% 区间 \(= \hat p \pm 1.96\,\text{SE}\),HumanEval 164 题分辨不出 3 个点;幂律在双对数上是直线;固定 \(C = 6ND\) 求极值,\(N\)、\(D\) 同步增长。
| Benchmark | 题数 / 正确率 | SE | 95% 半宽 | 独立比较显著差异 |
|---|---|---|---|---|
| HumanEval | 164 / 0.80 | 3.1% | ±6.1% | 8.7 个点 |
| GSM8K | 1319 / 0.90 | 0.8% | ±1.6% | 2.3 个点 |
| MMLU | 14042 / 0.70 | 0.4% | ±0.8% | 1.1 个点 |
| 线 | 出现的篇 | 一句话 |
|---|---|---|
| 形状规则、\(2mnk\) | 一、二、三、七、八 | 内积是最小情形,Jacobian 用它检查,\(C = 6ND\) 沿用成本规则 |
| 独立和的方差相加 | 二、四、七、八 | 初始化、\(\sqrt{d_k}\)、SGD 噪声 \(\propto 1/B\)、评测的 SE |
| 同一个 \(-\log p\) 模板 | 四、五、六、七 | 预训练、SFT、奖励模型、DPO、REINFORCE、GRPO 换的只是放进去的概率 |
| 拉格朗日乘子与「不偏离」 | 六、七、八 | KL 约束的闭式解、PPO 的裁剪、Chinchilla 的最优 \(N,D\) |
| loss 这个数字的一生 | 一、五、六、八 | 从 \(\ln V = 11.8\) 出发,经过 1.95,逼近数据的熵 1.69 |
| # | 公式 | 出处 | 篇 |
|---|---|---|---|
| 1 | \(\mathcal L = -\frac1T\sum_t\log p_\theta(x_t\mid x_{<t})\) | 预训练 / SFT | 四、五、六 |
| 2 | \(\partial\mathcal L/\partial z = p - y\) | softmax 梯度 | 五、七 |
| 3 | \(\text{softmax}(QK^\top/\sqrt{d_k})\,V\) | Transformer | 一、二、四 |
| 4 | \((R_{m\theta}q)^\top(R_{n\theta}k) = q^\top R_{(n-m)\theta}k\) | RoPE | 三 |
| 5 | \(L = E + A/N^\alpha + B/D^\beta\),\(C \approx 6ND\) | Chinchilla | 八 |
| 6 | \(-\log\sigma(\beta\log\frac{\pi_\theta(y_w)}{\pi_{\text{ref}}(y_w)} - \beta\log\frac{\pi_\theta(y_l)}{\pi_{\text{ref}}(y_l)})\) | DPO | 六 |
| 7 | \(\nabla_\theta J = \mathbb E_{\pi_\theta}[A(y)\nabla_\theta\log\pi_\theta(y)]\) | 策略梯度 | 七 |
| 8 | \(\alpha = \sum_x\min(p(x), q(x))\) | 投机解码接受率 | 六 |
八个都能读懂,L0 就够了;卡在哪一个,回到右边那一篇。