> 复现契约——一个分数如果答不出这五个问题,它就不是结果

Research Tools 中级 2026-09-06 07:21 2026-09-06
#reproduction #unlearning #evaluation #protocol #baselines

一个复现出来的数字,必须连同五个问题的答案一起提交,否则它不构成结果:

// TABLE_OF_CONTENTS

结论先行

一个复现出来的数字,必须连同五个问题的答案一起提交,否则它不构成结果:

  1. 删/改的到底是什么? 具体到实际计数,从加载后的数据里读出来,不是从论文散文里抄。
  2. 起点模型是什么? 并给出它确实具备目标能力的证据—— 如果起点模型本来就不会,后面所有指标的移动都毫无意义。
  3. 算法实际改变了什么? 不是"它做 unlearning",而是一段诚实的目标函数描述: 哪些 loss 项激活、参考模型是什么、哪些超参照抄了官方配置。
  4. 什么算成功? 参照物必须是"从未学过"的模型,不是某个绝对阈值。
  5. 代价是什么? 全部轴一起报,不能只报好看的那个。

这份契约要在任何一次运行之前写好,这样它就不能被调整成"数字碰巧长成的样子"。

为什么

第 4 条最反直觉,也最容易搞错:指标低不等于删得干净

在 TOFU 这类设定里,参照系是exact-retraining 模型—— 只在保留集上训练、从未见过遗忘集的那个模型。整个 benchmark 的设计就是 "unlearned 模型 vs 从未学过的模型"的比较:

  • forget 分数更低 不是自动更好。
  • 分数低于参照模型的,不是"忘得更彻底",而是被损坏了, 或者它的行为可以被检测出与"从未学过"不同——这本身就是一种泄漏
  • 要报与参照的差距的方向和大小,不是原始数值。

第 5 条同样重要:代价必须多轴同时报。

指标
forget Verbatim Probability / ROUGE、Knowledge QA-ROUGE、Forget Quality
retain 保留集对应指标、Model Utility
general lm-evaluation-harness 任务
memorization Exact Memorization、Extraction Strength
privacy MIA 套件

一个在 forget QA 上好看、但 Extraction Strength 或 MIA 仍能识别出遗忘集的方法, 什么都没删掉——它只是对一种提问格式藏了起来。发生了就要说出来。

这个判据可以直接推广:任何声称"移除/抑制了某种能力"的工作, 都必须至少用两种不同的探测方式去查,只有一种就是在对一种格式做优化。

怎么用

把契约做成一份表格,每个方法填一份,和 metrics JSON 一起提交。 没有这五栏的最终分数不进结果表。

通用化到非 unlearning 的场景,五个问题的形式是:

原问题 通用形式
删的是什么 干预(intervention)的操作定义,以实际计数表述
起点是什么 起点确实具备待测性质的证据(前测)
算法改了什么 目标函数/机制的诚实描述,不是宣传语
什么算成功 参照物是什么,以及为什么它是对的参照物
代价是什么 所有会被牺牲的轴,一起报

第 2 条(前测)是最常被跳过的一条,也是跳过就会让整个实验作废的一条。 和 你设计的 workload 必须能让你的机制起作用——否则 ablation 一定是平的 是同一个病的两种表现: 一个是"环境没触发机制",一个是"起点没有待移除的东西"。

契约的写作时间点是它的全部价值。 事后补写的契约会不自觉地被调成刚好能容纳已有数字的形状—— 和 事先声明的偏差是限制,事后发现的偏差是借口预先写下停止条件——不然你会一直重写一篇投错会的论文 同一条纪律。

出处

  • ~/RA-works/unlearning-reproduction/docs/00_REPRODUCTION_CONTRACT.md
  • 该项目明写这是"前一个项目从未有过的文档",那次失败部分归因于没有它