Don't Claim Benchmark-Oriented Optimization Improves General Coding Capability -- Diverse Evaluation Is Required
本文认为,针对 SWE-bench 等狭窄编程基准测试对大语言模型进行优化,无法提升其通用编程能力或迁移至其他任务,因此有必要转向多样化、整体性的评估方法以及持续的基准测试维护,以确保评估的可靠性。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
背景设定:代码世界与“计分卡”陷阱
想象一个计算机正在学习编写自身软件的世界,这个领域被称为“代码深度学习”(Deep Learning for Code)。在这个世界里,研究人员构建了巨大的数字大脑,即“基础模型”,这些大脑能够理解编程语言。为了衡量这些大脑有多聪明,科学家们使用了“基准测试”(benchmarks)——本质上是标准化的考试,就像是 AI 的 SAT 考试或奥林匹克竞赛。目前最著名的测试叫做 SWE-bench。这是一个特定的挑战,AI 被要求解决一个真实的软件漏洞(bug)并将其修复。
长期以来,业界一直基于一个简单的假设在运行:如果一个 AI 在 SWE-bench 上获得了高分,它一定是一个通用的编程天才。这就像是假设因为一名学生在数学部分的标准化考试中取得了优异成绩,他们就自动成为了物理、历史和艺术方面的天才。这篇论文提出了一个非常重要的问题:这个假设真的成立吗?作者们担心我们可能在自欺欺人。他们怀疑 AI 模型正在变成“应试者”而非“思考者”——它们正在学习如何精准地通过特定的 SWE-bench 考试,而不是在真正提升处理广泛、杂乱、现实世界编程工作的能力。
论文内容:为什么计分卡可能会欺骗我们
这篇论文的作者们(来自 JetBrains 及多所大学的研究团队)决定对这一假设进行实证检验。他们认为,在这些基准测试实际衡量的内容与我们声称其证明的能力之间,存在着“意义差距”(meaning gap)。为了找出真相,他们并没有仅仅观察现有的分数,而是构建了自己的全新测试场。
实验:一个新的游乐场
研究人员基于 Django(一个流行的 Web 框架)创建了一个定制的基准测试套件。为什么要选择 Django?因为 Django 占据了 SWE-bench 测试题目的近一半。如果一个 AI 确实是编程天才,它应该能像解决 SWE-bench 问题一样,出色地解决 Django 中的漏洞。
他们设计了三种特定类型的挑战,以观察 AI 是否能处理不同类型的任务:
- 方法生成(Method Generation): 根据描述从零开始编写一个全新的函数。
- 方法补全(Method Completion): 完成一个已经开始编写的函数。
- 程序修复(Program Repair): 利用错误信息找到一段损坏的代码并将其修复。
随后,他们选取了一批经过大量“训练”以在 SWE-bench 中夺冠的 AI 模型,并在他们新的 Django 挑战赛上对其进行了测试。他们还测试了自己针对单一特定任务进行训练的模型,以观察这种技能是否会发生迁移。
重大发现:“专家化”问题
结果令人震惊。论文指出,针对 SWE-bench 进行优化并不会使 AI 成为更好的通用程序员。事实上,这往往会让它在其他方面表现得更差。
- 技能无法迁移: 当研究人员让那些在 SWE-bench 中表现卓越的模型去执行新的 Django 任务时,这些模型往往失败了。它们并没有变得更擅长修复漏洞或编写新代码,而只是变得更擅长解决 SWE-bench 所使用的特定类型谜题。这就像是训练一只狗去捡特定的球,然后惊讶地发现它竟然不会接飞盘。
- “格式”陷阱: 许多失败的模型并不是因为无法编写代码,而是因为它们被“输出格式”搞混淆了。SWE-bench 的训练教会了它们将代码包裹在特定的标签或风格中输出,而新的测试并不期望这种形式。模型变得如此擅长遵循“考试指令”,以至于它们忘记了如何单纯地完成工作。
- “单项任务”的错觉: 当研究人员仅针对一项任务(如仅修复漏洞)训练模型时,这些模型在修复漏洞方面表现极佳,但在编写新代码或补全部分代码方面并没有任何进步。这证明了这种“提升”是狭隘且特定的,而非通用的智能提升。
结论:不要迷信排行榜
论文得出结论:依赖像 SWE-bench 这样的单一基准测试来声称一个模型具有“通用编程能力”是具有误导性的。作者认为,该领域已经陷入了一个陷阱,即我们正在为测试分数进行优化,而非为实际技能进行优化。
他们提出了一种新的思考方式:
- 对于规模最大、最先进的模型: 我们需要“整体性”(holistic)的评估,例如观察它们在开放式、真实世界项目中的表现,而不是仅仅给它们做多项选择题。
- 对于研究领域: 我们需要多样化的测试套件,涵盖不同类型的编程任务,而不仅仅是单一的任务。
- 对于实际应用: 我们需要针对我们真正关心的特定任务来测试模型,或许需要引入“人工在环”(humans in the loop)来检查工作成果。
简而言之,论文警告我们,编程排行榜上的高分并不意味着 AI 是一个大师级的构建者;它可能仅仅意味着它是一个大师级的应试者。要了解一个 AI 是否真正聪明,我们需要停止只看一个数字,而开始观察全貌。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。