深色模式
数学基础
做 AI 系统研究,数学的要求是理解含义、看懂公式、会算复杂度,不需要会证明定理。课内的线性代数、概率论、高等数学认真学好就够用,这一页告诉你哪些内容最常用,以及帮你建立直觉的资料。
线性代数(最重要)
为什么重要:神经网络的计算几乎全是矩阵乘法。理解矩阵乘法的形状变化和计算量,是分析模型推理开销的基础。
要掌握的内容
| 内容 | 在 AI 里的用处 |
|---|---|
| 向量、矩阵、矩阵乘法及其形状规则 | 每一层神经网络、注意力计算 |
| 矩阵乘法的计算量(m×k 的矩阵乘 k×n 的矩阵,约需 2mkn 次浮点运算) | 估算模型推理的计算量(FLOPs) |
| 点积、余弦相似度、范数 | 向量检索、注意力分数 |
| 线性变换的几何意义 | 理解 embedding 空间 |
| 特征值、奇异值分解(SVD) | 降维(PCA)、模型压缩(用 SVD 做低秩近似);LoRA 微调也利用了低秩结构:用两个小矩阵的乘积表示权重的增量 |
资料
- 3Blue1Brown《线性代数的本质》:用动画讲清几何直觉,强烈推荐先看这个,再看课本会容易得多。
- MIT 18.06 线性代数(Gilbert Strang):经典课程,B 站有中文字幕版。
- MIT 18.065(矩阵方法在数据分析和机器学习中的应用):学完 18.06 后的进阶,讲 SVD、PCA 和神经网络。
概率与统计
为什么重要:模型的输出是概率分布;实验结果要用统计量描述;请求到达过程要用概率建模。
| 内容 | 在 AI 和系统里的用处 |
|---|---|
| 随机变量、期望、方差 | 实验结果的平均值和波动 |
| 常见分布:伯努利、高斯、泊松、指数 | 请求到达(泊松过程)、噪声建模(扩散模型) |
| 条件概率、贝叶斯公式 | 理解生成模型和分类器 |
| 最大似然估计 | 模型训练的目标函数从哪来 |
| 分位数、置信区间 | P99 延迟、误差棒 |
| softmax 与交叉熵 | 大模型的输出层和损失函数 |
资料:课内教材为主;想要更直观的讲解可以看 Harvard Stat 110(Joe Blitzstein,B 站有中文字幕版)。
微积分与优化
为什么重要:模型训练就是用梯度下降最小化损失函数。
| 内容 | 用处 |
|---|---|
| 导数、偏导数、梯度 | 反向传播 |
| 链式法则 | 反向传播的核心,计算图上逐层求导 |
| 梯度下降及其变体(SGD、Adam) | 训练神经网络 |
| 凸函数与局部最优 | 理解优化为什么能收敛或不收敛 |
资料:3Blue1Brown《微积分的本质》;3Blue1Brown 的“神经网络”系列视频用动画讲清了反向传播。
一本书串起来
Mathematics for Machine Learning(Deisenroth、Faisal、Ong 著,可免费下载 PDF):专门讲机器学习需要的线性代数、解析几何、矩阵分解、向量微积分、概率和优化,最后用 PCA、线性回归、SVM 等例子把数学用起来。适合学完课内数学后系统梳理一遍。
系统方向要会的“估算”
做 AI Infra 研究时经常需要快速估算,这些都只需要中学数学:
- 模型权重占多少显存:参数量 × 每个参数的字节数。7B 参数的模型用 FP16(2 字节)存储约需 14 GB,用 INT4(0.5 字节)约需 3.5 GB。
- KV Cache 占多少显存:2(K 和 V)× 层数 × KV 头数 × 每头维度 × 序列长度 × 批大小 × 每个数的字节数。
- 生成速度的上限:解码阶段每生成一个 token 都要把全部权重从显存读一遍,所以单个请求(batch=1)的解码速度上限大约是“显存带宽 ÷ 模型大小”。批处理时读一遍权重可以同时为多个请求各生成一个 token,总吞吐可以超过这个值。
练习:查一个你知道的模型(比如 Qwen3-8B)的配置文件 config.json,算出它的权重大小和 8K 上下文时单个请求的 KV Cache 大小。
读组内论文需要的数学
组内的建模与算法类论文(见读组内论文)用到的数学比深度学习多一些,但入门时只需要看懂含义,不需要会证明。
看懂优化问题
text
min Σ_k T_k 目标:所有任务的完成时间之和最小
s.t. |C_n(t)| ≤ C_n, ∀ t, n 约束:任意时刻、任意节点,运行的容器数不超过上限
Σ_n u_n^k = 1, ∀ k 约束:每个任务恰好调度到一个节点
u_n^k ∈ {0, 1} 决策变量只能取 0 或 1| 记号 | 读法 |
|---|---|
min、max | 要最小化或最大化的目标 |
s.t. | subject to,“满足以下约束” |
∀ n | 对所有的 n 都成立 |
Σ_{l∈L_c} | 对集合 L_c 中的所有元素求和 |
L_c ∩ L_n、L_c \ L_n | 交集(两边都有的层)、差集(L_c 中有而 L_n 中没有的层) |
[x > h](Iverson 括号) | 条件成立取 1,不成立取 0,LRScheduler 用它组合多个条件 |
决策变量只能取整数(例如 0 或 1)的叫整数规划,一般很难求最优解;把整数条件放宽成实数(例如 0 到 1 之间)叫松弛,松弛后的线性规划或凸优化问题容易求解,再把小数解取整,是很多近似算法和在线算法的基本套路(ORR 的逐步取整就是这样)。
NP-hard 是什么意思
NP-hard 的问题目前没有已知的多项式时间最优算法,问题规模一大,求最优解的时间就会爆炸式增长。论文证明 NP-hard 的常见方式是归约:说明某个已知的 NP-hard 问题(装箱、背包、集合覆盖等)是自己问题的特例。例如把每个节点看成箱子、每个容器看成物品,调度问题就包含了装箱问题,所以至少和装箱问题一样难。
读论文时记住结论就够了:问题是 NP-hard 的,所以论文转而设计启发式、强化学习或近似算法,而不是求精确最优解。另外,任务逐个到来、不知道未来时,还需要在线算法,这和问题是否 NP-hard 是两回事。
在线算法与竞争比
在线算法要在不知道未来输入的情况下马上做决策。用竞争比衡量它的好坏:最坏情况下,在线算法的代价与“提前知道全部输入的最优解”的代价之比。
经典例子是滑雪租赁问题:租一天雪板花 1 元,买一副花 B 元,你不知道自己还会滑几天。策略“先租 B−1 天,第 B 天还在滑就买”:
- 如果总共只滑了 d < B 天,花了 d 元,正好等于最优(一直租);
- 如果滑了 d ≥ B 天,花了 (B−1) + B = 2B−1 元,而最优是第一天就买,花 B 元。
所以这个策略的代价最多是最优的 2 − 1/B 倍,竞争比约为 2。无服务器计算中“容器空闲后还要保留多久”的问题和它很像:保留容器每秒都占内存(相当于租),释放后下次请求要冷启动(相当于买)。OCS 这类论文研究的就是这类权衡。
排队的基本概念
请求到达常用泊松过程建模,相邻请求的间隔服从指数分布(L9 的仿真器就是这样生成任务的)。利特尔法则:系统中平均的请求数 = 到达率 × 每个请求在系统中的平均停留时间。例如每秒到达 10 个请求、每个请求平均停留 0.5 秒,系统中平均就有 5 个请求,可以用来快速检查实验数据是否合理。
资料
- 《算法导论》第 34 章(NP 完全性)和第 35 章(近似算法):理解 NP-hard 和归约。
- Stephen Boyd 的 Convex Optimization(可免费下载)和斯坦福 EE364A 课程:线性规划、凸优化、对偶。做在线算法、近似算法方向时再系统学。
- 练习:用自己的话写出 LDLS 的优化问题(目标、每条约束、决策变量),再说明为什么它包含装箱问题。