附录 B 大模型学习所需数学速查¶
本附录不是完整数学教材,而是把正文反复出现的符号放到同一张地图里。建议用纸笔为每个公式构造 2×2 或长度为 3 的例子,再用 NumPy 验证。
B.1 标量、向量、矩阵与张量¶
标量是单个数;向量是一维有序数组;矩阵有行列两个轴;张量是多轴数组。轴的语义比“几维”更重要,例如语言模型隐藏状态常写为 (B,T,D):批次、序列长度、隐藏维。
矩阵乘法 A @ B 要求 A 的最后一维等于 B 的倒数第二维。若 A 为 (m,n)、B 为 (n,p),输出为 (m,p):
$$
C_{ij}=\sum_{k=1}^{n}A_{ik}B_{kj}
$$
逐元素乘法不做求和,两个张量必须形状相同或满足广播规则。注意力里的 QK^T 是矩阵乘,而门控网络里的两条分支通常逐元素相乘。
B.2 点积、范数与余弦相似度¶
点积把两个同长度向量变成标量:
$$
x\cdot y=\sum_i x_i y_i
$$
L2 范数为 sqrt(sum(x_i²))。余弦相似度只比较方向:
$$ \cos(x,y)=\frac{x\cdot y}{|x|_2|y|_2} $$ 若向量已做 L2 归一化,点积就等于余弦相似度。向量数据库使用哪种度量必须与 embedding 模型说明和归一化方式一致。
B.3 概率、条件概率与交叉熵¶
概率分布的每项非负且总和为 1。条件概率 P(A|B) 表示已知 B 时 A 的概率。语言模型输出的是在前缀条件下下一个 token 的分布:
$$ P(x_1,\ldots,x_T)=\prod_{t=1}^{T}P(x_t\mid x_{<t}) $$ Softmax 把 logits 转成概率:
$$
p_i=\frac{e^{z_i}}{\sum_j e^{z_j}}
$$
数值实现应先减去最大 logit。单个正确类别 y 的交叉熵是 -log p_y;序列损失通常对有效标签取平均。Perplexity 常写为 exp(cross_entropy),但不同 tokenizer 的 token 粒度不同,不能脱离条件直接横比。
B.4 导数、偏导与链式法则¶
导数描述输入微小变化如何影响输出。多变量函数对每个变量的偏导组成梯度。复合函数 L=f(g(x)) 的链式法则为:
$$ \frac{dL}{dx}=\frac{dL}{dg}\frac{dg}{dx} $$ 反向传播就是沿计算图反向重复应用链式法则。梯度不是参数更新本身;优化器还会结合学习率、动量、二阶矩和权重衰减。
有限差分可检查解析梯度:
$$ \frac{\partial L}{\partial w_i}\approx \frac{L(w_i+\epsilon)-L(w_i-\epsilon)}{2\epsilon} $$ 梯度检查应使用双精度、小输入并关闭随机层;epsilon 太大有截断误差,太小受浮点舍入影响。
B.5 均值、方差与归一化¶
均值描述中心,方差描述离散程度:
$$ \mu=\frac1n\sum_i x_i,\qquad \sigma^2=\frac1n\sum_i(x_i-\mu)^2 $$ LayerNorm 对一个 token 的隐藏维做中心化与尺度归一化;RMSNorm 不减均值,只除以均方根。归一化的轴、epsilon 位置和可学习缩放必须与实现一致。
B.6 信息论直觉¶
事件概率越小,自信息 -log p 越大。熵是分布平均不确定性。KL 散度衡量分布 p 相对 q 的差异:
$$ D_{KL}(p|q)=\sum_i p_i\log\frac{p_i}{q_i} $$ KL 不对称,也不是严格距离。RLHF 中常用 KL 限制新策略偏离参考模型;蒸馏中可用 KL 让学生接近教师软分布。
B.7 复杂度与数量级估算¶
大 O 表示随变量增长的主导趋势,不等于真实耗时。注意力分数矩阵随序列长度约按 T² 增长;FFN 计算约随 T·D·Dff 增长。真实性能还受 dtype、batch、内存带宽、kernel 融合、通信和硬件利用率影响。
做系统估算时至少同时考虑:参数与状态存储、激活、KV Cache、FLOPs、读写字节、网络通信、排队和长尾。理论数量级用于提出假设,profiler 与压测用于验证。
B.8 浮点数与数值稳定性¶
浮点数只有有限范围和精度。FP16 范围较小,容易上溢/下溢;BF16 指数范围更大但有效尾数更少;FP32 更稳但占用和带宽更高。稳定实现常见策略包括减最大值、log-sum-exp、更高精度累积、loss scaling、梯度裁剪和 epsilon。
看到 NaN/Inf 时,先找首次出现的位置,检查输入、除零、log/exp、学习率、梯度和半精度范围。不要只在最后一层用 nan_to_num 隐藏问题。