模型在一道公开考题上答得很好,既可能学会了相关能力,也可能接触过这道题。只看答案分不清。我核对了一篇研究黑盒模型测试集污染的论文和作者公开的检测代码。它有意思的地方在于,尝试把怀疑变成可以检查的统计信号。
测试集污染指用于评测的资料进入了训练过程。在大规模网络语料里,公开题库可能随其他内容一起被收集。污染会让分数的解释变得困难,但污染的存在、分数受到多大影响,以及发布者是否故意这样做,是需要分别举证的问题。单凭高分不能把这些判断全部写定。
看不到训练资料还能查什么
Oren 等人的研究选择了样本顺序这个线索。如果一批测试样本具有可交换性,改变样本排列不应改变其联合分布。在这一假设下,模型明显偏好公开文件原有的排列,就可能提供它接触过这批数据的证据。
研究比较原始顺序与打乱顺序对应的文本概率,并通过分块计算提高检测效率。这里需要查询文本的对数概率。普通聊天界面给出一段流畅回答,通常不足以直接完成这项实验;让模型自己承认“见过这道题”,也没有执行论文里的检测方法。
作者提供了可运行代码和用于复现实验的测试文件,包含 BoolQ、GSM8K 等数据集。仓库还链接了使用特意掺入评测资料的数据训练的模型,让研究者知道实验里确实存在什么,再测试检测方法能不能找出来。这种受控实验比单看一个异常分数多了一层可核对的条件。
检测结果也有适用范围
论文的方法主要针对直接接触测试集文本的情形。若训练资料包含了构造题目时用过的原始来源,或者只覆盖部分内容,检测未必能排除这种更复杂的污染。研究还强调,可交换性本身需要了解数据生成过程,拿到现成题库不一定就能证明假设成立。
这些限制会影响报告怎么写。检测没发现信号,可以报告本次方法没有检出;不能由此宣布训练资料绝对干净。相反,检出特定信号以后,也应继续说明样本范围和统计条件。论文对公开模型的观察没有支持普遍而强烈污染的结论,这同样值得保留,不能只摘最容易引起怀疑的部分。
采购和上线的人未必具备运行此类审计的条件,但可以把自己的验收过程安排得更清楚。我建议先留一批不参与提示词调试、不进入微调资料的真实任务。调试使用另一批样本,最后再测保留题,记录所用模型与日期。这样至少能知道自己有没有一边看答案改方案,一边把同一批题当作独立验收。
保留题也会逐渐失去独立性,团队反复根据失败项改提示词以后,这些题已经参与了开发,下次验收就需要增加新的任务。新题应由真实业务问题产生,人工核准预期结果,避免只把旧题换几个同义词。
公开榜单仍能帮助缩小选择范围。到了交付前,最好拿出一份能解释来路的验收记录,写清哪些题参与过开发、哪些题最后才打开,以及每道失败题后来怎样处理。分数有了这些条件,下一位接手的人才能继续判断。