@TheAhmadOsman: https://x.com/TheAhmadOsman/status/2064724789952958663
摘要
详细解释了为什么在基准测试、评估集或测试集上进行训练是机器学习中的大忌,这会破坏衡量泛化能力的能力。文章强调了干净的评估协议的重要性,并警告不要进行“benchmaxxing”。
查看缓存全文
缓存时间: 2026/06/11 13:56
LLM/ML 基础:为什么在基准测试、评估或测试集上训练是条大忌
机器学习的目的不是为了证明模型能够重复已经见过的样本。它应该告诉我们模型能否适用于下一个未出现在训练过程中的新案例。这就是基准测试、评估和测试集存在的全部原因。
这篇文章的起因是下面这段交流。有人询问一个模型排名的网站,我的回答是我不愿意公开那些让我的排名有用的评估数据或数据集。
矛盾在于:私人的排名听起来像“信我没错”,但公开评估数据却可能毁掉它们本身之所以有效的基础。一旦测试条目、评分逻辑、示例或答案模式成为公开的优化目标,它们就不再是干净的测量工具,而开始可能变成一种刷榜优化工具。
基准测试集、评估套件或隐藏测试之所以有用,是因为它像一个独立的测量仪器。它让我们能够提问:“这个系统的泛化能力有多好?”在该测量仪器上训练会破坏仪器本身。它把分数变成了对暴露程度的记录,而不是对能力的记录。
基本规则很简单:
在训练数据上训练。在验证数据上调参。在测试数据上诚实测量一次。一旦你在测试集上训练、调参、优化提示词、优化脚手架、过滤或筛选,它就不再是一个测试集了。
经典的机器学习几十年前就明白了这一点。你不能在分割完整数据集之前对整个数据进行预处理。你不能用测试标签来选择特征。你不能通过查看最终测试表现来挑选检查点。同样的逻辑也适用于大语言模型,但涉及的层面要大得多。
在基准测试、评估或测试集上训练不是一个小失误。它是条大忌,因为它腐蚀了经验机器学习的核心目标:对泛化能力做出可信的估计。
一个关于失败、误解和该信什么的故事
接下来的几张截图讲述了一个故事。它从一个自信但错误的对基准训练的看法开始,过渡到一个公开的模型推荐,用基准测试表进行美化,然后遭遇了一个不在乎那些看法的全新任务。
这个论证在表面上是站不住脚的。如果你把基准分数当作公开排名的证据,然后又反过来把基准污染说成“模型变好的方式”,那就是纯粹的刷榜优化。在你打算作为证据引用的测试集上训练,这不是正常做法。
同样的错误在这里变得更加精致。一张基准测试表可以让模型看起来确实不错,也许它确实不错。但你也需要怀疑这些数字是否反映了刷榜优化。这些评估是独立的、有代表性的、并且没有被优化过吗?
这就是糟糕的测量开始看起来像有用建议的地方。人们确实想要具体的、考虑到硬件差异的建议。他们想知道这周该跑什么模型,什么能装进12GB或32GB显存里,什么真正值得花时间。一个好的排名可以帮助解决这个问题。但 Nex-N2 的例子正好说明了为什么下面那张“刷榜优化”截图很重要。同一个模型系列在每周推荐中可能看起来很有吸引力,但一旦面对新鲜、混乱的任务暴露出脆弱行为时,就会引发严重的质疑。
这是同一个故事的另一面。一个模型可能因为有趣的性能而被推荐给某个硬件层级,但如果它的一个相关或更高层级的变体看起来是针对基准任务形态进行了优化,却在简单任务上失败,那就值得怀疑。这张截图不是一次受控的评估,但它是一种现场报告,应该让你问出正确的问题:基准分数反映的是广泛的能力,还是奖励了模型学会模仿的某个狭窄模式?
该信什么、信谁:不是最漂亮的排名,不是已经被当作目标的基准数字,也不是最自信的叙述。相信干净的协议、新鲜的任务、私有的保留数据、披露的局限,以及模型没有机会学习和训练的真实条件下的真实行为。
本文涵盖的内容
这主要是一个方法论上的论证,关于基准测试的卫生、测试集的完整性,以及为什么干净的评估很重要,并提供了足够的经典机器学习和LLM具体细节来让论证落到实处。
关于更深入的硬件、软件、模型机制和动手实践项目路径,我有一个五部分系列教程教授自托管LLM/本地AI:
- 第1部分:LLM的GPU内存数学(2026版)。
- 第2部分:本地AI硬件的内存带宽(2026版)。
- 第3部分:LLM及本地AI硬件的推理引擎(2026版)。
- 第4部分:LLM入门(2026版):模型如何逐令牌思考。
- 第5部分:一步步LLM工程实践项目(2026版)。
前两部分涵盖硬件容量和带宽数学。第三部分涵盖软件层,即把硬件转化为可用于本地运行LLM的推理能力。第四部分涵盖模型端机制:令牌、Transformer、注意力机制、KV缓存、解码、上下文、RAG、智能体和本地部署机制。第五部分将这个基础转化为一个项目优先的路线图,你可以构建、测试并发布。
这篇文章增加了测量层。一旦你能运行、调优、比较和交付LLM系统,你需要知道什么时候基准还是一把尺子,什么时候你无意中把它弯成了训练数据。
简而言之: 本地AI系列帮助你理解和构建系统。这篇文章帮助你测量它们而不欺骗自己。
本文中提到的基准名称会过时/变得陈旧。核心观点不会。
机器学习真正想做什么
机器学习是一种有纪律性的方法,从过去的数据中学习,以便系统在未来案例上表现良好。在监督学习中,通常的故事是输入、标签、模型、参数和损失函数。训练调整参数,使得预测在训练样本上得到改善。
但低训练损失不是目标。低部署分布上的期望损失才是目标。
这个区别就是一切。
一个模型在训练数据上看起来不错,原因可能有很多:它可能学习了持久的结构、记住了样本、找到了捷径、利用了数据集中的伪影、从未来数据中获取了泄露信息,或者学到了在基准上有效但在真实世界中无效的东西。
保留测试集的目的是区分“这个模型学会了任务”和“这个模型学会了数据集”。
现代机器学习给数据分配了不同的工作:
- 训练集: 拟合参数、表示和学习到的特征。这是学习的发生地。
- 验证或开发集: 选择超参数、提示、架构、检查点、阈值、脚手架和其他设计决策。有用,但经过足够多次迭代后会过拟合。
- 测试集、评估或基准: 在决策冻结后估计最终泛化能力。不应被用于训练、调优、过滤、提示迭代、模型选择或重复优化。
- 私有或隐藏测试: 提供外部审计或排行榜分数。样本、标签、答案键、解决方案逻辑和重复反馈必须受到保护。
- 部署监控数据: 追踪发布后的实际漂移和失败。有价值,但不同于干净的部署前测试。
这种划分不是形式主义。训练误差通常过于乐观,特别是对于足够强大的系统,它们能够记忆、插值或利用微小的规则性。没有一个未触碰过的保留集,你无法可靠地判断系统是否泛化。
词汇:拟合、泛化、泄露、污染
在讨论基准之前,有必要精确定义这些词语。
拟合意味着数据中的信息改变了系统。 在经典机器学习中,拟合包括更新权重、估计归一化统计量、选择特征、选择阈值、调整超参数和选择模型。在LLM系统中,拟合还包括提示迭代、系统消息设计、工具路由更改、检索索引更改、智能体循环更改、拒绝采样、自洽性设置、特定基准的后处理以及模型选择。
一种常见的辩护是:“我们没有更新权重,所以没有在测试集上训练。”这种辩护站不住脚。如果测试集的结果改变了系统,那系统就是针对测试集进行了优化。
泛化意味着在目标分布中未见过的案例上的表现。 测试集只有在保持独立于训练和选择过程时,才能估计泛化能力。如果测试集中的信息泄露到模型或系统中,估计就会向上偏差。
泄露意味着在预测时本应不可用的信息却被用于训练、验证或评估。 在表格数据机器学习中,这可能是像编码了目标标签的特征那样明显。也可能是细微的:在分割前对整个数据集进行缩放、使用全局统计量进行填充、使用所有标签选择特征,或者允许同一患者、客户、仓库、作者或教室出现在分割的两侧。
常见的泄露模式:
- 预处理泄露: 在分割前对整个数据拟合缩放器、插补器、PCA变换、分词词表、重采样器或特征选择器。
- 特征泄露: 特征使用了预测时间之后的信息。
- 重复泄露: 几乎相同的用户、文档、代码文件、问题或记录同时出现在训练和测试中。
- 组泄露: 同一患者、客户、仓库、作者、学校或教室跨越分割边界。
- 时间泄露: 未来事件泄露到历史样本中。
- 目标泄露: 特征包含标签或结果之后创建的代理变量。
- 排行榜泄露: 重复提交揭示了隐藏测试的结构。
- 基准污染: 测试问题、答案、解释、解决方案或改写版本进入模型训练、调优、检索、提示设计或智能体上下文。
泄露不是技术细节。如果你在整个数据集上选择特征然后再分割,即使标签是随机的,你也能产生令人印象深刻的准确率。先分割,只在训练折叠上拟合变换,然后将学到的变换应用于验证和测试数据。这一个习惯就能防止大量糟糕的科学。
污染是基准规模的泄露。 当基准条目、答案键、解释、隐藏测试或高度相似的变体出现在训练数据、调优数据、合成数据、检索语料库、提示工程循环、评估日志或智能体工具中时,就会发生污染。对于LLM来说,污染通常不仅仅是数据集的问题。它是一个系统性问题。
为什么LLM让污染比经典机器学习更棘手
经典机器学习通常始于一个已知的表格、一个精心策划的数据集或一个受控的数据管道。LLM开发通常始于大规模、混合的语料库:网页、代码、书籍、论文、问题线程、文档、Stack Overflow答案、模型输出、合成语料库、基准讨论和用户偏好数据。
污染变得更容易产生,也更难排除。
LLM以巨大规模从令牌学习
LLM将文本转换为令牌ID,通常使用子词分词方案如BPE、WordPiece或Unigram。罕见词被拆分成片段;常见词保持紧凑。模型学习在巨大语料库上预测下一个令牌或填充缺失的令牌。
Transformer通过用注意力机制替代循环和卷积,使这种规模化变得可行,从而支持高效的并行训练和长距离依赖建模。规模定律研究表明,语言模型损失随模型大小、数据集大小和计算量呈可预测的趋势。Chinchilla风格的结果使这一点更加明确:计算最优训练不仅仅意味着让模型更大。它还意味着扩展训练令牌数量。
后果直接明了:如果一个基准已经被发布、镜像、解答、翻译、总结、讨论或嵌入到衍生数据集中,它就有很多方式进入训练。
LLM训练不仅仅是预训练
现代LLM系统通常分层构建:
- 在广泛语料上预训练。
- 在领域数据上继续预训练。
- 在指令-回复样本上进行监督微调。
- 偏好优化,包括RLHF和DPO。
- 安全调优和拒绝回答调优。
- 工具使用和检索增强生成。
- 系统提示、思维链策略、解码设置和智能体脚手架。
- 从更强模型蒸馏。
- 合成数据生成和过滤。
InstructGPT展示了人类反馈训练如何使一个较小的模型比一个更大的基础模型更能与用户意图对齐。DPO后来通过直接优化一个分类风格的目标,而不是训练一个单独奖励模型并运行强化学习,简化了偏好优化。
每个阶段都可能污染评估。一个基准条目可能不在预训练中,但可能在指令调优、偏好比较、合成推理轨迹、检索语料库、评估日志或提示优化电子表格中出现。干净的评估必须考虑整个系统。
LLM可以从语义污染中获益
旧的去污通常寻找精确字符串或n-gram重叠。必要,但不够。
改写后的样本、翻译、近似意译以及语义等价的问题仍然可以教会模型基准。最近关于改写基准条目的工作表明,模型可以通过改写或翻译的测试数据过拟合,同时规避简单的字符串匹配。2026年关于“软污染”的研究进一步推进了这一点:即使在精确重复被移除的情况下,语义重复也可能产生影响,而添加重复或近似重复可以提升基准表现,包括来自同一基准分布的保留条目。
污染不是一个二元开关。有精确污染、近似重复污染、语义污染、翻译污染、分布污染、程序污染和反馈污染。你离精确副本越远,测量问题就越困难。
基准和评估实际是用来做什么的
基准是测量仪器。它们不是任务本身。
一个好的基准给你一个清晰的任务定义、代表性的案例、可靠的标签或评分、稳定的评估代码、有意义的指标、不确定性估计、记录的局限性、污染控制措施,以及刷新或退役的生命周期计划。
它能回答的是狭窄的:这个系统在这些条件下,在这个测量上表现如何。
它本身不能证明的东西要大得多。一个基准分数不能证明一个系统是通用的智能、安全的、有用的、诚实的、公平的、鲁棒的、校准良好的或可部署的。
静态学术基准
静态基准如MMLU、BIG-bench、GPQA、ARC风格的任务和许多代码基准帮助了该领域,因为它们可重复且运行成本低。MMLU测量了57个学科的多任务语言理解。BIG-bench收集了一个大型社区编写的任务套件。HELM推动该领域超越准确性,包括校准、鲁棒性、公平性、偏见、毒性和效率。
但公共静态基准会老化。它们变得众所周知。它们被讨论。它们被复制到数据集中。模型针对它们优化。研究人员学会其中的技巧。最终,它们会饱和。
到了2026年AI指数,基准可靠性和游戏化问题已经足够突出,被明确指出,包括无效问题率和主要评估中的平台适应效应。2025年一项关于文本基
相似文章
@TheAhmadOsman:难以置信!理解基准测试与评估的最完整指南,以及为何刻意训练它们具有误导性……
一份全面的免费在线指南现已发布,涵盖机器学习与LLM的基准测试、评估、数据污染及正确实践,强调清洁测量的重要性,避免在测试集上进行误导性训练。
@dunik_7:那场价值9万美元的斯坦福讲座,解释了为什么AI能通过所有基准测试,却在你的代码库上崩溃,刚刚发布……
一场由Percy Liang主讲的免费斯坦福讲座,关于AI泛化,解释了为什么模型在基准测试中表现出色,但在实际代码库中却失败,内容涵盖基准记忆、偏差-方差权衡和幻觉。
@ArizePhoenix: 机器学习中最古老的教训之一,对于使用 LLM 应用仍然非常有用:不要用相同的数据进行评估……
本文讨论了使用 Arize Phoenix 开发 LLM 应用的最佳实践,特别强调了使用训练集/验证集/测试集拆分来进行诚实评估和追踪回归的重要性。
@cwolferesearch: 评估不应该是静态的。我们需要随着时间的推移不断演变评估集/基准,使其保持相关性……
讨论了通过难度、质量和多样性细化来演进AI评估基准的必要性,并引用MMLU-Pro、MMLU-Redux、BIG-Bench Extra Hard、RealMath、MathArena和DatBench等示例。
@_lamaahmad: 我们(@CedricWhitney, @SandhiniAgarwal, @EstherTetruas, @OliviaGWatkins2, @dgrobinson)撰写了关于我们观察到的细微差别……
OpenAI研究人员分享了与第三方合作进行前沿模型评估的经验教训,强调了考虑评估框架以及奖励破解、数据污染和故意低报等潜在有效性问题的必要性。