# 第五章 训练随机性、参数变异与系统非确定性

Chapter from the Chinese-language book Anatomy of the Stochastic Parrot: 第五章 训练随机性、参数变异与系统非确定性.

## Metadata

- HTML: https://glenzli.com/en/dr-stochastic-parrot/stochastic-parrot-anatomy/vol-03/ch05-training-randomness-model-variation/
- Markdown: https://glenzli.com/en/dr-stochastic-parrot/stochastic-parrot-anatomy/vol-03/ch05-training-randomness-model-variation.md
- Collection: Dr. Stochastic Parrot
- Language: en
- Published: 2026-07-17
- Status: published
- Tags: ai-generated, stochastic-parrot, stochastic-parrot-anatomy, ai

## Content

同一架构和数据配方重复训练，可能得到不同参数；固定 checkpoint 重复调用，也可能得到不同输出。前者是训练算法诱导的模型间变异，后者可能来自随机解码或系统执行。本章建立分层记号，避免把所有差异压成一个“随机性”。

## 5.1 训练结果是算法与环境的函数

把训练数据工件记为 $D$，配方为 $A$，显式随机状态为 $R_{alg}$，数值执行状态为 $R_{num}$，软件和硬件环境为 $E$。最终参数可写成

$$
\Theta=A(D,R_{alg},R_{num},E).
$$

若重复运行时让其中一些量变化，$\Theta$ 就成为相应实验设计下的随机变量。所谓“训练 seed 的分布”并非自然界给定对象，而由研究者规定哪些随机源、设备和数据顺序允许变化。

还要区分固定数据工件与重新抽取数据：

- 固定 $D$、改变训练随机状态，估计算法条件于该数据的变异；
- 从目标数据总体重新取 $D$，还包含有限数据抽样变异；
- 改变数据管线或配方，已经在比较不同训练程序。

不说明重复实验随机化了什么，就不能解释 checkpoint 间方差。

## 5.2 Mini-batch 梯度何时无偏

给定固定经验损失

$$
L(\theta)=\frac1N\sum_{i=1}^N\ell_i(\theta),
$$

若给定当前 $\theta_t$ 后，$B_t$ 独立地从 $\{1,\ldots,N\}$ 均匀抽取为大小 $b$ 的 batch，则

$$
g_t=\frac1b\sum_{i\in B_t}\nabla\ell_i(\theta_t)
$$

在给定 $\theta_t$ 时满足

$$
\mathbb E[g_t\mid\theta_t]=\nabla L(\theta_t),
$$

无论是有放回独立抽样，还是对固定大小子集均匀无放回抽样。证明只需利用每个样本进入 batch 的边际概率为 $b/N$ 和期望线性。

该结论会在以下情况下改变：

- 样本按非均匀概率抽取却未做相应加权；
- 动态 packing 使样本贡献依长度变化；
- 来源配额、课程学习或难例挖掘改变目标分布；
- 数据丢失、重放或过滤依赖当前模型状态；
- 梯度裁剪和自适应优化器使“平均无偏梯度”不等于“平均无偏参数更新”。

因此随机梯度是针对某个明确定义目标的估计量，不能脱离采样器谈“噪声是否无偏”。

## 5.3 显式随机算法的来源

训练路径可能在以下位置消费伪随机数：

- 参数初始化；
- 数据洗牌、来源选择与样本 packing；
- dropout、stochastic depth 与随机 mask；
- crop、噪声或其他数据增强；
- MoE 路由噪声；
- 强化学习中的动作和环境抽样；
- 容错恢复后的数据重放或跳过。

一个顶层 seed 只有在所有子生成器、rank 派生规则和随机数消费顺序固定时才足够。增加一次日志采样、改变 batch shape 或换一种 fused kernel，都可能改变后续随机流。

伪随机不等于“假的变异”。在给定 seed 后算法可以确定，但当 seed 被实验设计为随机因素时，输出分布仍是可分析的算法分布。

## 5.4 数值非确定性不是采样不确定性

实数加法满足结合律，浮点加法通常不满足：

$$
\operatorname{fl}(\operatorname{fl}(a+b)+c)
\ne
\operatorname{fl}(a+\operatorname{fl}(b+c)).
$$

梯度归约树、原子操作顺序、kernel 自动选择和低精度舍入可改变末位。即使显式 RNG 状态相同，不同调度也可能给出不同更新。

这些差异在非凸优化中可能被放大，但“可能放大”不等于“必然导致宏观行为完全不同”。影响大小取决于训练阶段、学习率、稳定性和评测指标，必须通过受控重复测量。

$R_{num}$ 可以被建模为随机因素以估计工程变异，但它的来源是执行顺序和有限精度，不应与数据条件内多解混称。

## 5.5 参数不同不等于函数不同

神经网络参数常不可识别。例如对隐藏单元做一致置换，同时逆置换相邻层权重，可以保持网络函数不变。某些正缩放也能由下一层补偿。

所以参数欧氏距离

$$
\lVert\theta_1-\theta_2\rVert_2
$$

既可能因对称性很大而预测近乎相同，也可能在敏感方向上很小却改变边界行为。参数哈希适合确认工件是否逐位一致，不适合单独衡量功能差异。

行为比较应落到指定输入总体上的预测量，例如

$$
\mathbb E_{X\sim P_X}
D_{\mathrm{KL}}(q_{\theta_1}(\cdot\mid X)
\Vert q_{\theta_2}(\cdot\mid X)),
$$

或外部任务分数。即便如此，平均量也可能掩盖稀有条件区域。

## 5.6 模型集合不自动是 Bayesian posterior

重复训练诱导某个实验分布

$$
P_A(\Theta\mid D),
$$

其中下标 $A$ 提醒我们它由训练算法、超参数、seed 分布和环境共同定义。对输入 $x$ 的模型平均预测为

$$
\bar q(y\mid x)
=\mathbb E_{\Theta\sim P_A}
[q_\Theta(y\mid x)].
$$

有限 ensemble 用样本均值近似它。除非训练算法被证明从特定 Bayesian posterior 或其近似中抽样，否则 $P_A(\Theta\mid D)$ 不能改名为参数后验。不同初始化范围、早停和 checkpoint 选择都会改变该分布。

同样，从一个 checkpoint 用不同 temperature 采样得到的是输出样本，不是参数样本；它不能估计模型间不确定性。

## 5.7 运行内与模型间方差分解

自然语言输出本身不在欧氏空间。先定义二阶可积的可测评分 $S=s(Y)$，例如正确性指示、长度或成本。固定输入 $x$，全方差公式给出

$$
\operatorname{Var}(S\mid x)
=\mathbb E_\Theta[
\operatorname{Var}(S\mid x,\Theta)]
+\operatorname{Var}_\Theta(
\mathbb E[S\mid x,\Theta]).
$$

第一项是固定 checkpoint 后由解码和环境产生的平均运行内变异；第二项是不同训练结果的平均行为差异。

该分解是恒等式，不自动把第一项命名为 aleatoric、第二项命名为 epistemic。若 ensemble 只覆盖少数手选 checkpoint，或者运行内还混有服务版本更新，两项都不对应理想的不确定性分类。

## 5.8 预测熵不能完成上述分解

单个模型下一 token 熵

$$
H(q_\theta(\cdot\mid x))
$$

只描述该条件分布的离散程度。高熵可能来自任务多解、提示含糊或模型能力不足；低熵可能是掌握充分，也可能是自信地错。

即使两个训练运行具有同样熵，其高概率 token 也可能不同；即使平均分布熵很高，每个模型自身也可能都很尖锐。第六章将用 ensemble 互信息区分“模型内平均熵”和“模型间分歧”，但其解释依赖模型样本的构造。

## 5.9 训练因素需要交叉或嵌套设计

设预训练 seed 为 $u$，后训练 seed 为 $v$，解码 seed 为 $r$，评测输入为 $i$，分数为

$$
Y_{i,u,v,r}.
$$

不同问题需要不同重复结构：

- 研究预训练变异：需要多个 $u$；
- 研究后训练配方：每个配方至少要覆盖多个可比的 $u,v$；
- 研究采样变异：固定 checkpoint 后重复 $r$；
- 研究输入总体：需要按真实抽样单位覆盖多个 $i$。

若每个训练配方只有一个 checkpoint，配方效应与该 checkpoint 的 seed 效应完全混杂。增加同一 checkpoint 的一千次解码不能补回缺失的训练重复。

完整交叉设计成本可能过高，可以采用嵌套或不平衡设计，但必须按实际层级估计方差，并把不能分离的因素写成个案限制。

## 5.10 一个分层行为模型

对数值分数，可用以下模型组织变异来源：

$$
Y_{rij}
=\mu+\alpha_r+b_{rj}+u_i+\varepsilon_{rij},
$$

其中 $r$ 是训练配方，$j$ 是该配方下的训练运行，$i$ 是输入，$\alpha_r$ 是配方平均效应，$b_{rj}$ 是运行偏差，$u_i$ 是输入难度。

这个分解必须带识别约束。固定效应可取基准约束 $\alpha_1=0$，或预先给定 $w_r>0$、$\sum_r w_r=1$ 并取 $\sum_r w_r\alpha_r=0$；随机截距版本还需声明

$$
b_{rj}\overset{\mathrm{iid}}\sim G_b,\quad
\mathbb E_{G_b}B=0,\quad
\operatorname{Var}_{G_b}(B)=\sigma_b^2,
$$

$$
u_i\overset{\mathrm{iid}}\sim G_u,\quad
\mathbb E_{G_u}U=0,\quad
\operatorname{Var}_{G_u}(U)=\sigma_u^2,
$$

$$
\varepsilon_{rij}\overset{\mathrm{iid}}\sim G_\varepsilon,\quad
\mathbb E_{G_\varepsilon}E=0,\quad
\operatorname{Var}_{G_\varepsilon}(E)=\sigma^2,
$$

并通常假设三族随机量相互独立；采用 Gaussian likelihood 时还须声明 $G_b,G_u,G_\varepsilon$ 为相应正态分布。若把 $b_{rj}$ 当固定效应，则可改用每个配方内 $\sum_j b_{rj}=0$，这要求有多个运行。没有这些约束，任取 $c_r$ 并令 $\alpha'_r=\alpha_r+c_r$、$b'_{rj}=b_{rj}-c_r$，观测模型不变，参数不可识别。

这个式子不是必须采用的真生成模型，而是检查设计可识别性的工具。若某个 $r$ 只有一个 $j$，配方均值与该次运行偏差不能由该配方数据经验分离；把 $b_{rj}$ 积分掉只会把结论转化为依赖零均值分布假设的部分汇聚，不会制造训练重复。若同一输入未同时评测各模型，也失去配对降低方差的优势。

对二元或计数结果，应使用相应链接函数或直接做分层 bootstrap，而不是强迫正态线性模型。

## 5.11 Checkpoint 恢复定义训练路径

可逐步继续训练的 checkpoint 通常需要保存：

- 模型权重与优化器一阶、二阶矩；
- 优化步数和学习率调度状态；
- 各设备、各并行 rank 的 RNG 状态；
- 数据游标、shard、sampler 与 packing 状态；
- loss scaling 和混合精度状态；
- 并行拓扑、kernel 与版本化配置。

只恢复权重再继续训练，会开启一条合法但不同的训练路径。恢复后 loss 连续也不证明样本顺序与优化器状态逐步一致。

用于统计复现时，还应保存运行选择规则。只发布验证集最优 seed 会把 seed 搜索变成未计入的不透明超参数优化。

## 5.12 固定 checkpoint 的推理仍可能变化

即使 temperature 被服务标记为 0，以下因素仍可能改变输出：

- 并行归约或原子操作的非确定顺序；
- 动态 batching 改变 kernel 和张量布局；
- 量化尺度、设备代际或编译器路径不同；
- MoE 容量与并发请求相互作用；
- 服务端模型、模板或处理器滚动更新；
- 检索、工具和网络状态变化；
- 极接近 argmax 的候选在舍入后换序。

这里至少有三种系统：纯模型前向、模型加解码运行时、包含工具和后处理的产品。只有先固定边界，才能讨论“同一系统是否确定”。

## 5.13 三种复现目标

1. **逐步复现**：参数、状态和中间张量在规定容差内一致，适合调试与数值核验。
2. **输出复现**：给定输入返回相同 token 或系统结果，适合回归测试。
3. **统计复现**：重复运行的预先指定指标分布或效应区间一致，适合随机训练与随机解码研究。

三者没有单向蕴含关系。逐 bit 不同的实现可能统计等价；冻结一条输出路径也不能证明系统分布稳定。报告应先声明所需层级和容差。

## 5.14 最小报告要求

研究模型间变异时，应至少记录：

- 哪些数据、随机源和环境固定，哪些被重复抽样；
- 训练运行数、失败运行与 checkpoint 选择规则；
- 每个输入和每个 checkpoint 的原始结果；
- 解码重复是否嵌套在 checkpoint 内；
- 区间估计在哪个层级重采样；
- 结论面向这些已训练模型，还是试图推广到训练算法总体。

“我们固定了 seed”只说明选定一条路径；“我们改变了三个 seed”也不足以说明已可靠估计尾部风险。重复次数应由目标效应、方差和成本决定，并报告区间而非只报均值。

## 5.15 本章结论

训练 checkpoint 是数据、随机算法和数值环境共同产生的输出；部署结果又在固定 checkpoint 内经历解码与系统状态。参数差异、预测差异和输出差异不是同一对象。要估计训练方法效应，必须在训练运行层重复；要估计部署行为概率，则需在固定系统层重复。下一章讨论如何用 proper score、校准、熵与选择性风险评价这些预测分布。
