数据去污染与评测隔离
前置知识点
一句话定义
去污染是检测并剔除「训练数据与评测数据重叠」的过程,否则评测分数虚高,你测的不是能力而是记忆力。
为什么重要
污染是微调评测里最隐蔽的坑:它让每个指标都变好看,让团队为「提升」庆祝,而上线后用户立刻发现模型并不会。业界多个知名模型被指评测污染的争议,根源都在这里。对内,污染毁掉实验归因;对外,它直接关系报告数据的诚信(kp-027、kp-032)。
前置知识
kp-010 的训练数据构成;理解评测集是「考试卷」而训练集是「习题册」。
核心概念
- 污染(Contamination):训练样本与评测样本在题目或答案上重叠。
- n-gram 重叠检测:把文本切成 n 个词的滑窗(常用 13-gram),比对训练集与评测集。
- 嵌入相似度检测:语义层面的近重复,能抓住改写型污染。
- 评测隔离:评测集从构造起就与训练管线物理分离、冻结版本、禁止回改。
原理与机制
检测流程:对每个评测样本提取特征(题干 n-gram 集合或嵌入向量)→ 在训练集索引中查最近邻 → 相似度超过阈值(n-gram 重叠经验阈值 0.5-0.8,嵌入余弦常用 0.85+)→ 剔除训练集中命中的样本(注意是删训练侧,不是删评测侧)。为什么 n-gram 用 13:GPT-3 论文采用的惯例,13 个词的连续重合几乎不可能是巧合,而更短的窗口会误杀常见搭配。改写型污染(同义改写、语序调换)n-gram 抓不住,需要嵌入检测补位。
污染的典型来源:用开源指令集微调后再在同类公开基准上评测;用模型蒸馏生成数据而该模型可能见过基准;评测集版本更新后训练集没有重新过检。
图示
训练集(习题册) ──重叠检测──▶ 评测集(考试卷)
│ 阈值: n-gram重叠>0.5 或 余弦>0.85
▼
剔除命中的训练样本 → 重新训练 → 分数才可信直观类比
考前把历年真题原题塞进复习资料,然后拿真题当期末卷——平均分 95 分毫无意义。去污染就是考前把资料里的原题抽走。
实例或案例
某团队自建 300 题评测集微调后准确率 91%,上线抽检合格率仅 68%。排查发现评测题中有 74 题的答案直接改写自训练数据来源的同一批文档。n-gram + 嵌入双通道去污染后重训,评测分数降到 77%——与线上表现基本一致。此后该团队把「评测集冻结 + 每次训练前去污染扫描」写进流程。
操作步骤
- 评测集单独建仓、冻结版本,与训练数据不同目录、不同权限。
- 写去污染脚本:评测题干与答案各生成 13-gram 集合,与训练集比对 Jaccard 重叠。
- 补一道嵌入检测:评测样本嵌入后对训练集做近邻检索,余弦 > 0.85 命中即标记。
- 人工复核命中样本(阈值边缘的可能是巧合重合),确认后从训练集剔除并记录。
- 把去污染步骤固化进训练前的自动流程,输出「污染扫描报告」随实验归档。
排错清单
- 剔除后训练集骤减:说明训练数据与该评测域高度同源,应扩充训练数据而不是降低阈值。
- 评测分数虚高但去污染后没变化:污染可能来自评测集泄漏进蒸馏用的教师模型,需换教师或换评测集。
- 阈值误杀正常样本:对命中样本人工复核,而不是盲目信任单一阈值。
常见误区
- 「我们评测集是自建的,不会有污染」:自建评测若取材于与训练同源的文档,污染照样发生。
- 只查题干不查答案:答案重叠同样让模型「背对」了评测。
- 把去污染当作一次性动作:评测集或训练集任何一侧更新都要重新扫描。
与其他知识点的关系
评测体系如何设计见 kp-025;基准陷阱与刷榜争议见 kp-027;数据与评测诚信的伦理面见 kp-032。
延伸阅读
Brown et al. 2020《Language Models are Few-Shot Learners》(13-gram 去污染实践的出处)。
自测题
- 为什么去污染时删的是训练样本而不是评测样本?
答:评测集是被保护的标准(考试卷),删训练侧命中样本既保证评测效力不受损,也直接消除记忆来源。
- n-gram 检测抓不住哪类污染?用什么补位?
答:抓不住改写型污染(同义替换、语序调整),用嵌入相似度近邻检测补位。
- 团队自建评测集就一定干净吗?
答:不一定——若评测题取材与训练数据同源(同一批文档/日志),污染照样存在,仍需扫描。
相关知识点
来源
- Brown et al. 2020《Language Models are Few-Shot Learners》(GPT-3 的 13-gram 去污染实践)
基于模型知识整理,建议按需核对原文。