Notes · 2026.01.17

划分不能漏

检测实验。

1 min · paper · textguard

训练任务先把数据划分钉死。同分布准确率很难看,也很容易漏。漏的意思是:测试里出现了训练见过的文本、见过的生成器条件、见过的题目组。漏了之后数字很好。好的数字会进 PPT。PPT 进了答辩,评委一问划分,我若只能说「随机拆的」,整张表就成表演。表演的数字很好看。好看会进 PPT。PPT 进了答辩,划分一问就空。空了再补随机,等于承认漏。漏要从 split 文件上防,不从口头上防。

同分布好看,漏也藏在这里

检测任务里,同分布准确率可以很高。高不一定假,但不说明跨生成器、跨领域、人类化改写之后还能用。TextGuard 要看的就是那些之后。划分如果在同分布上已经漏,后面的 MCC Decay、MRS 都会建立在脏的底上。脏底上的鲁棒,是表演。

漏的方式很土。同一篇文章的不同截断分别进了训练和测试。同一个题目的人类稿和机器稿没按组隔离。文件名打乱了,内容没打乱。我协助整理对照时,最怕的是「脚本看起来随机,键却用了会泄漏的字段」。看起来随机很能骗过自己。

ChProv-Bench 强调论文级隔离、划分无泄漏、门禁记录。强调这些,是因为评测集自己造,坑也是自己的。自己造的集,泄漏不是别人陷害。是我没把门禁写进有效 run 的契约。

有效 run 先有划分文件

一次有效 run:脚本、split、seed、checkpoint、日志目录。split 要是文件,不要是「当时在 notebook 里切了一刀」。notebook 里的一刀,两周后找不到。找不到就不能出门。出门的数字必须能指回那份划分。

划分文件的版本也要记。改了划分还用旧表上的数,是把两次实验拼成一次。拼出来的提升,谁都复现不了。复现不了就写复现不了,别改表。

没跑完的 run,不要把中间 loss 写进任何对外的句子。loss 下降很安慰人。安慰人的曲线和检测是否还在,中间隔着划分、阈值、OOD。对外只摘曲线,是另一种漏:漏掉了真正要检验的条件。

跨生成器、跨领域、改写

同分布是作业。作业要做,做完不当最终句子。最终句子要在生成器换了、领域换了、人类化改写之后还能否检出。GA-AT、改写条件,是评测协议的一部分。协议先于模型。协议没定,模型再调,表会跟着漂。

我参与这些评测整理,写参与。不写我们已经把泄漏问题解决。解决这种词需要门禁记录和独立检查。门禁记录没有,就写「按协议切、检查过一组已知漏法」。已知漏法之外还有未知的。未知的写进 limitation。

TextGuard-Bench、MGAB、OOD 评测是为这些日子准备的。准备不等于当天的划分已经无漏。准备是有一套要跑的条件。条件跑之前,split 仍可能脏。脏了先修 split,不先改模型。改模型去拟合泄漏,数字会更漂亮,论文会更假。

门禁要会因写错而失败

划分检查如果永远绿,就和空断言一样。我希望有一条检查:故意把同一组放到两侧,它会红。没有这条,谈无泄漏是口号。口号不能进站点。

检查脚本写错了要明说。工具错误当成数据缺陷,会修错对象。修错对象的一周,日志目录里全是冤枉的实验。

限制

这篇没有新的分数。不编泄漏率。泄漏率若要写,必须指回某次带 seed 的检查日志。现在只写纪律:划分不能漏;漏了后面的 MCC、MRS 都是表演;没跑完的 loss 不对外。纪律比一张好看的同分布表硬。

我把划分文件当成和代码一样的真源。代码可以 diff。划分不能只存在一次随机。随机要落到文件,文件要进日志目录。目录没有划分,这次 run 对我作废。作废了还把数写进草稿,草稿会在赶 PPT 的晚上复活。复活的数没有 split,评委一问就空。空的时候再补「我们随机拆的」,等于承认表演。表演可以留给热更新。论文和站点不收。

泄漏长什么样

题组、来源、切分键有亲戚,文件夹名却写成 train 和 test,这就是漏。漏了的同分布准确率会很好看。好看的数不能出门。出门前要能指到协议里的隔离规则。ChProv-Bench 强调论文级隔离,就是为了少干这种事。没查亲戚关系的跨数据集,只是换了目录名。