跳到主要内容

当测试集泄露到微调中:你自己造成的污染

· 阅读需 10 分钟
Tian Pan
Software Engineer

AI 领域的每个人都知道基准测试污染(benchmark contamination)的警示故事:模型厂商抓取公开网络,GSM8K 和 MMLU 最终出现在预训练语料库中,导致报告的分数衡量的是召回而非推理。这通常被视为别人的过错——是基础模型实验室的问题,是你继承下来的瑕疵。因此,你构建了自己的留存评估集,将其存放在私有仓库中,并认为自己是清白的。

你可能并不清白。在生产级 AI 系统中,最具破坏性的污染很少是继承来的,而是由心怀好意的工程师遵循看似合理的流程在内部制造出来的。你的评估集通过你自己建造的大门泄露到了训练流水线中,而且这种泄露是无声的:就在你的基准测试停止衡量任何真实事物的瞬间,每个仪表盘都会变成绿色。

这就是你亲手造成的污染。它比你继承的那种污染更值得关注,因为你是唯一能够检测到它的人——而几乎没有人会为此进行审计。

评估集穿过的三扇大门

自我造成的泄露并不是因为有人粗心大意。它的发生是因为三种平凡且合理的工程实践,各自悄悄地将数据从评估墙的一侧移动到了训练侧。

第一扇门:失败排查(Failure triage)。 这是最主要的一扇门。你运行评估套件,有 12 个案例失败了,你的团队做了显而易见的事情——查看这 12 个失败案例,理解它们,并将类似的示例添加到微调集中。这听起来像是教科书式的循环:发现弱点,修复弱点。但根据定义,失败的案例是你评估中最困难、最具辨别力的项目。它们是真正区分优秀模型和普通模型的关键。将它们喂入训练,你并没有修复弱点;你只是删除了基准测试中能够检测到该弱点的部分。下一次运行结果变绿是因为模型记住了答案,而不是因为它学会了这项技能。

第二扇门:合成数据生成。 缺乏训练数据的团队会生成数据。一个常见的做法是提取具有代表性的提示词,要求一个强大的模型生成变体,并将这些变体用作微调示例。种子提示词通常来自评估集,或者与评估集非常相似,因为评估集是你最干净的“核心提示词”集合。现在,你的训练分布成了测试分布的改写版。N-gram 重叠检测器甚至不会标记它,因为表面文本不同,但语义内容是完全一致的。

第三扇门:共享的 RAG 语料库。 你的检索系统索引了一个文档语料库。你的评估案例提出的问题,其答案就存在于同一个语料库中。如果你曾经在检索并生成的轨迹(traces)上进行微调——这是将 RAG 流水线蒸馏到更廉价模型的流行方法——那么评估答案就会通过检索层流入训练。关于 RAG 污染的研究不得不引入专门的指标,比如暴露污染率(Exposure Contamination Rate),正是因为这条路径对于运行流水线的人来说是不可见的。

None of these three actions looks like cheating. That is what makes the failure mode dangerous. There is no moment where an engineer decides to game the benchmark. The benchmark gets gamed as a side effect of doing reasonable work.

一旦失败案例反馈给训练,留存集就不再是留存集

“留存集(held-out set)”这个词包含了一个微妙的假设:留存是一次性事件。你分割数据,将测试分区放在一边,它就一直保持在那。但“留存”不是文件的属性,它是过程的属性,而且这个过程必须跨越每一次迭代,而不仅仅是第一次分割。

一旦一个评估案例影响了进入训练的内容——即使是间接的,即使是通过改写,甚至是在六周后有人忘记了它来自评估集——该案例就已经重新加入了训练分布。它不再衡量泛化能力,而是衡量记忆能力。这里有一种让这种做法极具破坏性的不对称性:泄露是永久性的,但绿色的仪表盘是即时的。你在注意到代价之前很久,就已经得到了奖励信号。

经典的 GSM8K 故事是大规模的证明。当研究人员构建了 GSM1k(一套在难度和风格上与 GSM8K 匹配的新小学数学题)时,几个模型家族的分数大幅下降——这清楚地表明这些模型一直在操纵原始基准测试,而不是在算术能力上有所提高。有启发意义的部分不在于污染发生了,而在于直到有人构建了一个泄露无法触及的全新测试之前,没人能察觉到它。一个受污染的基准测试从内部看与好的基准测试完全一样:分数高、方差低、趋势线上扬。唯一的破绽是现实拒绝与之匹配。

这就是陷阱。你无法通过盯着你的评估分数来检测这种失败模式,因为这种失败模式本身就是让你的评估分数看起来棒极了。

加载中…
References:Let's stay in touch and Follow me for more thoughts and updates