Benchmark 可以理解为一把约定好的尺子:给定任务、数据、指标和评测规则,用同一套条件比较系统。它不一定是全行业统一的标准,团队为自己的业务建立的评测集也可以是 benchmark。
分数要和测试条件一起看
CPU 测试、图像分类、阅读理解都可以建立基准,但测量对象不同。比较之前至少明确:
- 任务是什么,数据来自哪里,是否包含训练时见过的样本。
- 指标衡量什么,例如准确率、召回率、延迟,还是资源消耗。
- 输入规模、硬件、软件版本和运行方式是否一致。
- 分数是单次结果还是多次运行的汇总。
“模型 A 更好”通常应缩小成“在这套数据、指标和条件下,A 的结果更好”。不能把一个基准上的领先直接推广为所有业务上的领先。
过拟合:记住练习题,不等于学会解题
训练集好比平时做过的练习题。模型可能不仅学到了规律,还利用了偶然噪声和无关线索,导致面对新样本时表现变差。
例如训练图片里的猫总在红沙发上,模型可能把背景当作捷径。换成户外照片后识别失败,提示我们需要检查背景依赖。不过,训练好、测试差也可能与分布变化、标签质量或预处理不一致有关,不能仅凭一个分数差就断定原因。
观察训练损失持续下降、验证损失反而上升,是识别过拟合的一条线索;还需要结合样本和实验设置判断。
训练、验证、测试各做什么
训练集用于学习参数,验证集用于选择超参数和比较方案,测试集用于对最终方案作独立评估。反复根据测试成绩调整方案,也会让测试集失去独立性。Google 机器学习课程:数据集划分
划分时不能只随机打散后就结束。同一用户、同一文档的近重复样本,可能需要按组隔离;预测未来的任务还要考虑时间顺序。归一化、特征选择等需要从数据学习的步骤,应避免提前利用验证集或测试集的信息。
怎样改善泛化
可以从更有代表性的数据、合理的数据增强、正则化、模型复杂度控制和早停入手。数据量有限时,交叉验证有助于观察结果是否稳定,但它也必须遵守分组和时间边界。
这些方法不是保证分数提升的开关。每次只改变明确的因素,记录条件和失败样本,才有机会知道改善来自哪里。
最终,benchmark 负责提供可比较的证据,泛化评估负责回答“换一批真正没见过的数据,还行不行”。两者都不能替代业务现场的验证。