明确哪些因素在变化,哪些构成重复
先从这个问题入手:你要评估的是训练初始化的影响、数据顺序的影响、训练/测试划分的影响,还是随机生成的影响?一个种子控制一个随机数生成器;它本身并不能标识上述所有维度。每次运行保留一行记录,并记录真正被改动的因素。
对同一个检查点、在同一语料上重复运行十次确定性评估,并不会产生十次独立训练。同样,来自单一模型的一千次预测也不能替代多次训练来估计其变异性。请选择与决策相对应的重复单位。
在整组实验开始前,先确定主要指标、它的方向,以及足以支持改变的最小效应量。在以下示例中,数值越大越好,示例性的有用阈值为 0 到 100 的展示指标上的 0.30 分。这个阈值来自项目决策,而非某种普适的统计学规则。
在共同条件下配对配置
对于第 i 对,在相同的数据划分和预先设定的共同条件下运行基准 A 和候选 B。然后计算 dᵢ = score(Bᵢ) − score(Aᵢ)。配对基于在结果出来之前就定义好的对应关系;它不是事后把数值相近的分数凑在一起。
使用相同的随机种子列表可能有助于整理配对,但两种架构消耗随机数的方式可能不同。当你的代码对初始化种子、数据种子和生成种子加以区分时,请分别声明它们。同时还要记录数据划分或其标识符:一个相同的整数并不能证明数据的遍历方式也相同。
如果某一对中出现失败,请保留两种状态,并说明将如何处理它。不要在没有说明总体变化的情况下,把五个成功候选的平均值与六个基准的平均值进行比较。
技术来源: NIST — 配对观测之间的对应关系
保留种子与确定性的局限
PyTorch 指出,即使种子相同,也无法保证在不同版本、平台或 CPU 与 GPU 运行之间获得完全可复现的结果。其指南区分了对随机数生成器的控制和对非确定性操作的控制。请记录所用的版本和选项,而不是用“已固定 seed”来概括整个环境。
确定性运行的一个用途是在给定条件下复现某种行为。它并不能证明模型对其他初始化或数据具有稳健性。反过来,两次相同重跑之间出现差异,应先进行诊断,再将其解释为候选方案的效果。
对两个变体保持相同的确定性策略。如果你为了诊断某个错误而改变它,请将该组实验单独标识。实验结果应始终与其获得时所处的条件绑定。
计算示例:五个配对差值
以下是五对用于计算的虚构数据,未实际执行训练。种子是示例标识符。基准和候选在此使用相同的比较协议。分数以 100 为满分表示;差值为分数点,而非相对百分比。
差值的均值为 (0.4 + 0.3 + 0.1 + 0.5 + 0.1) / 5 = 0.28 分。其中位数为 0.30 分,范围为 0.10 到 0.50。差值的样本标准差约为 0.179 分,分母为 n − 1。五个符号均为正,但相对于平均增益而言,幅度仍然很大。
| 示例种子 | 基准 A | 候选 B | B − A |
|---|---|---|---|
| 17 | 71,0 | 71,4 | +0,4 |
| 29 | 71,6 | 71,9 | +0,3 |
| 43 | 71,3 | 71,4 | +0,1 |
| 71 | 70,8 | 71,3 | +0,5 |
| 101 | 71,8 | 71,9 | +0,1 |
解读区间时不要赋予其过度的适用范围
为了演示一种常用的计算,假设各对之间的差值相互独立,且来自近似正态的分布。此处对其均值的 95% Student 区间使用四个自由度:0.28 ± 2.776 × 0.080,即约 [0.058;0.502] 分。仅有五对数据时,分布的形状很难判断;计算本身并不会使这些假设成立。
在示例中,该区间位于零以上,但它覆盖了设定为0.30个点的实用阈值。因此,它并不支持“平均增益超过0.30个点”这一严格要求。一个正向差异仍可能太小或太不确定,不足以证明变更的合理性。
95%区间描述的是在其假设下的一种覆盖程序,而不是计算后附加在参数上的95%概率。它在这里只覆盖配对所代表的变异,并不自动覆盖另一个领域、另一个语料库或将来的硬件。
如果使用SciPy,ttest_rel会比较配对样本并提供置信区间。数组的顺序决定符号:对于B − A,请把B放在前面。请保留数值和所使用的方法,而不仅仅是一个p值。
准备决策和后续重复
示例的结果是“实用增益未确立”,而不是“候选方案无用”。根据变更的成本,您可以保留基线、继续收集数据或测试更实质性的修改。在拿到整组数据之前就宣布这一规则。如果下限高于您的实用阈值,将更有力地支持采用,前提是协议的其余部分有效。
根据所需的精度和预期的变异性来规划重复次数,并为失败预留余量。不存在一个能普遍保证结论成立的种子数量。可以通过试点实验来估计离散程度;保持其探索性定位,然后固化确认流程。
不要每完成一对就查看,然后在结果变得有利时立即停止,却使用为固定样本量设计的区间。请事先选择样本量和分析方法,或采用合适的序贯方法。只对表现令人失望的候选方案增加试验,同样会改变比较的平衡。
不要混淆训练变异与语料库评估
在固定测试集上的一系列种子反映的是在该测试集上各次训练的变异。它本身并不能衡量与测试样本选择相关的不确定性。如果您的问题还涉及划分或领域,请设计一个计划,让这些维度发生变化,而不要把它们混在单一的重复计数器中。
将最终评估与模型选择隔离开来。用同一个测试集从众多变体中筛选,会偏向那些碰巧在该测试集上表现良好的选项。子组和补充指标应为决策提供信息,同时让其数量和探索性地位保持可见。
最终输出汇集原始得分、配对、差异、离散程度、区间方法和针对实用阈值的决策。请附上失败案例和泛化局限。这样您就可以解释为什么该差异在您看来是充分的、不充分的,还是仍无法判定的。
实际问题
五个种子足以做出选择吗?
五个种子可以用于初步观察,但它们不能保证足够的精度。所需数量取决于变异性和最小实用效应。请检查原始差异和不确定性;仍然无法判定的结果需要的是一个规模更合适的协议,而不是一个神奇的数字。
包含零的区间能证明等效性吗?
包含零的区间并不能证明等效性。它也可能与显著的增益或损失相容。要支持实际等效性,请事先确定一个可接受的边界,并使用适合该问题的分析,且精度足以对其进行检验。
我可以只发布最好的种子吗?
最好的种子描述的是一种有利的筛选结果,而不是该程序的典型性能。请发布所有计划内的重复以及所交付模型的筛选规则。如果需要评估这个最好的模型,请使用未用于选择它的最终评估。