跳转到内容

实证研究的常见错误

测试集泄漏(用测试集选模型)、只报告最好的运行、基线未调优、数据集选择偏差、评价指标与目标不符、过度声称(overclaiming)。本章逐一给出识别方法与避免方式。

实证研究最常见的六类错误,每类都有识别方法与避免方式:

错误表现避免方式
测试集泄漏用测试集选模型/调参/停训验证集选模型,测试集只用一次
Cherry-picking只报告最好的运行/数据集/指标报告所有种子、所有尝试的配置数
不公平比较基线未调优、预算不对等、用弱实现基线同等调优努力,报告搜索预算(见假设、基线与消融)
数据集选择偏差只在有利于自己的基准上测覆盖主张涉及的各数据集;解释为什么排除某些
指标与目标不符主张"更好"但指标测的不是那件事指标与主张一一对应;补充人类评估当指标可疑时
Overclaiming结论超出实验覆盖的条件结论限定在实验条件内(见过度声称)

读论文时(也用于自查),几个快速信号:

  • 结果表没有方差、没有运行次数 → 方差与选择状态不明;
  • 消融表只有成功的变体 → 可能存在 cherry-picking;
  • 基线数字与官方实现/引用数字不一致且无解释 → 复现质量存疑;
  • 声称"通用/首个/大幅"但实验只覆盖一个设置 → overclaiming;
  • 指标与主张错位:主张推理能力,测的是某个基准的准确率 → 需要更直接证据。

这些错误多数不是有意为之,而是流程缺陷。三个流程对策:

  1. 冻结测试集:划分数据时固定测试集,所有探索性决策只在训练/验证集上做;评测脚本与数据版本一起锁定(见可复现性)。
  2. 记录所有尝试:实验管理工具记录每次配置与结果(见算力与实验管理),论文报告时以记录为准——"报告所有尝试过的配置数"既是对读者诚实,也是对自己的保护(见造假、篡改与可疑研究实践)。
  3. 结论先写条件:写结论时第一句写"在什么条件下",再写观察到了什么——强制自己不越界。

这些错误的系统性讨论见 Lipton & Steinhardt, "Troubling Trends in Machine Learning Scholarship" (2018)。

  • 验证集选模型、测试集只用一次
  • 报告所有尝试过的配置数
  • 结论不能超出实验覆盖的条件