arganzheng · 2026-01-15
拿到一篇 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["一 · 形状"] --> P2["二 · 内积"] --> P3["三 · SVD"]
end
subgraph PR["概率"]
direction TB
P4["四 · 条件分布"] --> P5["五 · MLE"]
end
subgraph IT["信息论"]
P6["六 · 熵 / KL"]
end
subgraph CA["微积分与优化"]
P7["七 · 链式法则"]
end
subgraph ST["统计推断"]
P8["八 · 置信区间"]
end
LA --> PR
PR --> IT
PR --> CA
IT --> 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\)、训练 \(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 直接沿用) |
内积含方向与大小、范数只量大小、余弦只比方向;范数兼作正则项与误差度量
正交保内积:RoPE 靠旋转把相对位置放进内积;LoRA 省在 \(r(m+n)\ll mn\)
语言模型 = 链式法则每一项的参数化:决定 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 从这里来 |
所有 loss 都是每 token 负对数似然 \(-\frac1T\sum_t\log p(x_t\mid x_{<t})\)
交叉熵 = 熵 + KL;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+CE 的梯度是 \(p-y\);策略梯度 = 按奖励加权的最大似然
| 估计 | 结果 |
|---|---|
| 精确梯度 | 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\cdot\)SE;HumanEval 164 题分辨不出 3 个点
| 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 就够了;卡在哪一个,回到右边那一篇。