写一个可以被推翻的假设
「改进模型」并没有说明实验是什么。不如写成:「类别加权提升稀有类别上的质量,同时不超过在频繁类别上允许的回归。」指明一个主要指标、重要的子组以及有效效应的阈值。还要设定始终优先的约束:显存、时延、输入覆盖范围或模型简洁性。
区分添加与移除。向简单基准添加一个组件,衡量的是它在该情境下的贡献。从完整系统中移除一个组件,衡量的是该系统失去的东西。当组件之间存在交互时,这两个问题可能得出不同的答案。因此,你的结论必须明确基准,以及其他因素的状态。
预期的交付物是一个决策,并附上一张变体表,而不仅仅是一个更好的分数。在预订试验之前,写下什么情况会让你保留、放弃或深入探索每条路径。
技术来源: NIST — 界定实验设计的目标
构建一个基准和可解释的变体
基准沿用参考流程,包括其版本、数据和检查点选择规则。它必须能在当前项目周期内运行。一个没有预测结果和完整协议的旧指标可以作为参照,但它不能自动替代这个基准。
对于每个因素,准确声明所比较的两种状态。“启用增强”太模糊:要保留变换、概率和涉及的数据。描述保持共同的部分:所研究因素之外的前处理、划分、优化器、学习预算和评估方法。如果学习步数固定但处理的 token 数变化,要记录这一后果。
请将最终测试集排除在变体选择之外。学习到的变换和调参决策都应使用专门为此准备的数据。如果在根据测试集错误调整模型后获得的改进,就不再构成独立评估。
技术来源: scikit-learn — 避免数据泄漏
两个因素需要四种情形
假设你在研究 A(一种类别加权)和 B(一种训练时的增强规则)。要观察它们的交互作用,需考察基准、仅 A、仅 B 以及 A 加 B。这个两因素两水平的设计包含四种配置。有 k 个二值因素时,完整设计在重复之前包含 2ᵏ 种配置:试验数量增长很快。
下表是一个为解释推理而虚构的数值示例。其分数并非来自任何训练。它们表示虚构的 macro-F1 平均值,范围为 0 到 100;在真实工作中,单个数值及其变异性仍然不可或缺。
| 配置 | A:加权 | B : augmentation | 虚构的 macro-F1,满分 100 |
|---|---|---|---|
| 基准 | 否 | 否 | 70,0 |
| 仅 A | 是 | 否 | 71,2 |
| 仅 B | 否 | 是 | 70,8 |
| A + B | 是 | 是 | 71,5 |
技术来源: NIST — 两水平全因子设计
解读效应及其交互作用
在这个例子中,A 在没有 B 时带来 1.2 分,但在 B 已经启用时只带来 0.7 分。B 在没有 A 时带来 0.8 分,在有 A 时带来 0.3 分。合并增益为 1.5 分,而两个单独增益之和为 2.0 分。此处 −0.5 分的差距描述的是非可加性交互作用。
这一计算既不能确立其稳健性,也不能解释其机制。它让你明白该确认哪个问题:在此例中,将 B 添加到包含 A 的系统中,仅为 0.3 分,是否值得其复杂性?还要检查预先设定的子组。同一个平均值可能掩盖不同的增益和损失。
当你的协议允许时,在配对重复上比较这些差异。不要为每个变体挑选最佳随机种子。如果符号或幅度在不同试验间变化很大,决策就仍不确定。
技术来源: NIST — 因子设计中的组合与交互作用
将预算分配给重要的决策
试验配额是规划工具,而不是对 GPU 速度的预测。例如:你有一个 24 次完整运行的组织预算。你将 12 次运行分配给四种配置,每种配置三个随机种子;10 次用于对基准和一个候选方案用五个新随机种子进行确认;2 次用于有理由的重跑。总计为 24;这还没有说明它们需要多少小时。
前三组种子在此用于探索,而不是为了认证某个获胜者。在观察这一系列之前,先确定候选方案的选定规则。确认阶段使用既定的协议;新的种子减少了对初始选择的依赖,但无法纠正一个已经被用于调参的测试集。
如果预算不允许进行必要的重复,就减少因子或推迟某个问题。优先考虑那些会影响真实决策的变更:删除一个昂贵的组件、解决一次失败,或在两个接近的选项之间做出取舍。在比较套餐之前,留出时间用于评估和产物收集。
| 阶段 | 计算 | 运行次数 |
|---|---|---|
| 探索 | 4 种配置 × 3 个种子 | 12 |
| 确认 | 2 种配置 × 5 个新种子 | 10 |
| 有记录的补跑 | 预留 | 2 |
| 总预算 | 12 + 10 + 2 | 24 |
准备运行顺序与停止规则
在启动之前就写好试验清单,包含标识符、配置、种子和优先级。将各个变体分散到执行顺序中,而不是先跑完所有对照再跑所有候选。如果某个时间段、数据集或机器构成一个比较区块,请记录该区块。系列中途发生的环境变更必须保持可见。
准备好技术性停止的理由,例如反复出现的错误或内存超限。保留每一次尝试及其状态。不要悄悄地把一次失败替换成一次更短的运行,也不要因为一次试验结果不理想就换一个新种子,直到得到预期的分数。
基于分数决定的提前停止会改变分析协议。如果你计划进行中间决策,请事先说明其规则和探索性质。若要得出确认性结论,请保留一套适合这些决策的分析方案。
以可验证的结论收尾消融
最终记录表应说明假设、对照、因子、重复次数、偏差和失败案例。将每个数值与其预测以及产生它的运行关联起来。最后给出明确的决策:保留组件、移除组件,还是数据不足以做出选择。
避免三种走捷径的做法:把变化归因于 A,而预处理其实也变了;把各自孤立的收益相加,却没有测试它们的组合;仅凭一个语料就宣布一条通用规则。消融实验建立的是在既定协议下的一项观察,其适用范围取决于实际研究的数据、模型和变量。
实际问题
是否总需要测试所有组合?
完整设计对交互作用有用,但其成本随因子数量增加。先界定可能改变你决策的因子。只要明确说明它无法区分哪些效应,缩减后的设计仍然可行;不要把未测试的组合当作已测试来呈现。
我可以复用上一轮实验的对照吗?
如果数据、代码、预算、模型选择和评估确实可比且有记录,就可以复用。否则,应在当前协议下重新跑一次对照。版本或划分的差异可能正是你想归因于该组件的那部分差距。
阴性结果是否意味着该组件无用?
阴性结果表明,在所研究的条件下它未带来预期的效果,或者证据不足。在推广之前,请检查不确定性和交互作用。记录这一结果可以避免在一个已经考察过的方向上再次浪费预算。