大模型微调数据拿到手,扫一眼格式整齐、语句通顺,很多人就直接开训。「数据看起来干净就不用清洗」错在哪?在于人眼可见的干净,只覆盖了表层;标注错漏、口径不一、隐性重复这些问题,扫读根本发现不了。正确说法是:干净是流程的结果,不是眼缘的判断,清洗要做的是机器检查加抽检,不是看一眼。
错在哪:眼缘不等于质量
通顺的句子可能答非所问,整齐的表格可能字段错位,两条意思相同的样本表述不同就构成隐性重复。这些都不影响看起来干净,却实打实地影响训练效果。人眼扫读能发现的,只是问题里最小的一类。
机器能查出什么
去重能挖出近似重复,规则校验能抓字段错位和格式漂移,长度分布和词频统计能暴露混入的异常样本。再把抽样送人工复核,重点看答非所问和口径不一致。这套组合走完,才算真清洗过。数据来源的差异可以对照自建数据集和公开数据集差在哪?理解。
四种检查各自盯着什么,拆开看就清楚了。
| 检查手段 | 能查出什么 | 怎么跑 |
|---|---|---|
| 去重 | 近似重复,同一答案换十种问法 | 脚本全量跑 |
| 规则校验 | 字段错位、格式漂移 | 脚本全量跑 |
| 长度分布与词频统计 | 混入的异常样本 | 脚本全量跑 |
| 抽样人工复核 | 答非所问、口径不一致 | 按比例抽 |
隐性重复最阴险
同一答案换十种问法,机器不查就看不出,模型却会在这类样本上过拟合,换个真实问法反而不会答。近似重复要按语义去查,不能只按字面。豆包、WPS AI 的团队在公开分享里都提过数据清洗流水线化的经验,值得参考。
清洗的正确姿势
清洗是每批数据的固定工序:先去重,再校验,后抽检,三步记录留档。跳过清洗省下的时间,会在训练后以更难查的问题还回来。相关习惯可以结合「数据越多微调效果越好」错在哪?一起看,标注侧的取舍见主动学习和被动标注有什么区别?,自建数据的问题见「自己标的数据一定更好」错在哪?。
清洗规则怎么定
清洗规则不在多,在可执行。每条规则都要能回答三个问题:查什么、怎么算不合格、不合格怎么处理。写不出这三样的规则,执行时一定会走样,不如不写,宁可少而硬,不要多而软。
规则分两类。硬规则是客观标准:字段缺失、长度超限、格式错误,脚本一跑就能判。软规则靠人判断:答非所问、口径不一致,只能抽检发现。硬规则全量跑,软规则按比例抽,两层叠起来才是完整的清洗,别指望一套脚本包打天下。
规则要留记录。每批数据跑了哪些规则、命中多少、处理多少,数字记下来。某批训练效果异常,先翻清洗记录,比盲目排查数据快得多,好记性不如烂笔头,这里同样成立。
规则本身也要维护。新的问题类型出现,就补新规则;老规则长期零命中,就清理掉。规则清单越积越厚没人看,等于没有规则,清单的厚度和质量是两回事。
还有一条经验:清洗规则让写数据的人也参与定。标注员最清楚哪些错最常犯,把他们请进规则讨论,规则才能对准真正的痛点,而不是对着想象中的问题开火。
还有一类隐性污染要防:训练数据和评测数据交叉。同一批样本既进了训练又进了评测,分数会虚高,问题会被掩盖,等于自己给自己放水。入库时按用途分池管理,训练池和评测池保持隔离,这一条比任何单条清洗规则都重要,泄漏一次,整轮结论都作废,之前所有调优的对比全部失去参照,只能推倒重测。
自查清单:每批数据固定走三步:语义去重、规则校验、按比例抽检;记录留档可追溯;跳过清洗等于把问题留给训练后。
「数据看起来干净就不用清洗」快问快答三则
- 清洗要花很多时间吗?:流程固化后每批几小时就能过完,比训练后返工便宜得多。
- 自己标的也要清洗吗?:要,自标数据的错漏和口径漂移反而更隐蔽,可以看「自己标的数据一定更好」错在哪。
- 清洗到什么程度算够?:抽检通过率连续几批稳定在高位,且训练没出现异常尖刺,就算稳了。


