> 复现之前先列参数差异表——一个标签定义的差异就能盖过模型、超参和种子数
复现别人的结果时,跑通不是终点,列差异表才是起点。 逐条对照论文规定的实验参数和你实际用的,标成 🔴 关键 / 🟡 中等 / 🟢 可接受, 再决定哪些必须修。
结论先行¶
复现别人的结果时,跑通不是终点,列差异表才是起点。 逐条对照论文规定的实验参数和你实际用的,标成 🔴 关键 / 🟡 中等 / 🟢 可接受, 再决定哪些必须修。
实测这套流程的收益:有一篇的正确性标签是"至少 \(a_1\) 比例的轨迹匹配真值才算对", 我第一版自己发明了一个比率,AUROC 差出一大截;改回论文规定的 \(a_1\) 之后 数字才回到和论文同一档。 一个标签定义的差异,比模型、比超参、比种子数都重要—— 而它恰恰是最容易在复现时"顺手改掉"的那个。
为什么¶
复现失败有三种完全不同的原因,差异表是唯一能把它们分开的工具:
- 协议差异(可修)——标签定义、阈值、反思轮数、种子数、epoch 数。 这一类最常见也最容易被当成"论文有问题"。
- 资源差异(不可修但可声明)——需要六个闭源前沿模型的 API、需要 4TB 内存的 ZK 证明栈。 这类要明确写"无法复现",而不是用小模型代替后报一个数。
- 能力门槛(最容易误判)——见下。
怎么用¶
差异表的模板(每篇一张):
| # | 参数 | 论文 | 我的 | 影响 | 处理 |
|---|---|---|---|---|---|
| 1 | 正确性标签阈值 | 论文规定值 | 自定义比率 | 🔴 根本改变标签分布 | 修 |
| 2 | 每折种子数 | 论文规定值 | 更少 | 🟡 方差没压下来 | 修 |
| 3 | 轨迹来源 | 前沿模型 API | 模拟扰动 | 🔴 分布根本不同 | 无法修,声明 |
能力门槛这条要单独说。 用小模型跑不出论文的现象,不等于论文是错的。 两个实测例子:
- 在一个协议安全方向的复现里,用一个 8B 级模型得到所有条件下 100% 的不安全率。 这不是反驳原文——原文本身就把这个量级的模型排除在外,因为它们过不了良性基线。 这个负结果反而支持"该能力是门槛型的"这一结论。
- 在一个不确定性量化框架的复现里,同量级的小模型对所有任务都输出几乎相同的高置信度, 不管难易。于是框架里"低置信才触发"的那条分支一次都没走到, 整个框架静默退化成它的基线——不报错,不告警,就是变成了基线。
第二个例子给出了一个可以直接写进 review 的问题: 当置信度传感器本身坏掉时,这个框架有什么失效检测机制? 答案通常是没有。
所以复现的收尾动作是:
- 列差异表,修掉所有 🔴 里可修的。
- 跑不出现象时,先证明自己的模型跨过了能力门槛(跑论文的良性/健全性对照), 再谈"复现失败"。
- 把"框架静默退化成基线"当成一类独立的失败模式去找——它不报错。
出处¶
一批会议投稿的复现工作。这里只留流程——差异表的模板、三类复现失败的区分、 以及"框架静默退化成基线"这个失败模式; 不涉及任何一篇稿子的身份、结论或评分,数值一律略去。 相关笔记:复现契约——一个分数如果答不出这五个问题,它就不是结果、指标的默认回退是静默的——而且 p 值不是效应量、 最危险的工具故障是"静默少做"——技能在、后端不在。