当前位置:首页 > 科技资讯 > 正文

AutoCode:大型语言模型在竞赛编程问题生成与评估中的革命性框架

著名人工智能学者Rich Sutton曾强调:「人工智能系统仅能在其自我验证的能力边界内创造并维系知识。」同样,爱因斯坦与英费尔德在其合著《物理学的进化》中阐述:「提出一个新颖问题往往比解决它更为重要,因为解决方案可能仅依赖于数学或实验技巧。然而,构思新问题、探索新可能性,或以全新视角重新审视旧问题,则需要创造性想象力,这正是科学实质性进步的标志。」

随着大型语言模型(LLM)向通用能力演进,并以实现通用人工智能(AGI)为终极目标,评估其生成问题的能力变得日益关键。特别是在将LLM应用于高级编程任务时,因为未来LLM编程能力的发展及其经济整合将需要大量验证工作。

首先,为编程竞赛设计题目需要比解决问题更深入的算法理解

例如,基础问题可能被简化为可识别的模板,用简单技巧即可解决;许多标准编程问题也常允许提交部分正确或模式化的解决方案,这可能掩盖错误的推理过程。而竞赛编程题目则设定严格标准,旨在评估对底层算法设计原则、数据结构及复杂性权衡的更深层把握。验证海量可能解法并全面覆盖各种捷径或边界情况极具挑战,但这对于竞赛编程题目而言必不可少。因此,出题不仅涵盖解决问题的所有挑战,甚至超越了它。

其次,更强的出题能力将催生更严谨的竞赛编程基准测试。由于像Codeforces和AtCoder等顶级平台的官方测试数据未公开,研究人员目前依赖合成数据集,如CodeContests+、TACO和HardTests。

然而,分析表明,现有测试数据集可能同时存在高误报率(FPR)和高漏报率(FNR)。例如,一个时间复杂度较差的贪心算法可能通过一系列小规模随机测试,但在专门设计以暴露其缺陷的对抗性案例中失败。这一关键弱点导致评估环境扭曲,奖励了那些发现捷径的模型。

第三,成功提出新颖挑战可能为模型自我完善和AGI铺平道路,同时验证模型在复杂软件栈中的部署情况

那么,我们能否像训练AI解决问题一样,训练它提出高质量、甚至人类未曾想到的新问题呢?最近,LiveCodeBench Pro团队给出了肯定回答:AutoCode。这是一个系统性框架,可在闭环、多角色系统中使用LLM,以自动化竞赛编程问题创建和评估的全生命周期。

AutoCode:大型语言模型在竞赛编程问题生成与评估中的革命性框架 大型语言模型 竞赛编程 问题生成 测试用例验证 第1张

  • 论文标题:AutoCode: LLMs as Problem Setters for Competitive Programming
  • 论文地址:https://arxiv.org/abs/2510.12803v1
  • 项目页面:https://livecodebenchpro.com/projects/autocode/overview

值得注意的是,该团队包含来自十个机构的研究者,共有5位共同一作。此外,作者名单中还包括谢赛宁等著名研究者。

整体而言,这项研究做出了两大贡献:

  • 一个增强的验证器-生成器-检查器(Validator-Generator-Checker)框架,它在测试用例生成方面实现了最先进的可靠性。
  • 一个用于生成高质量新问题的创新过程。该过程从一个“种子问题”开始,以在有前景的方向上启发LLM。

测试用例生成

该团队的测试用例生成过程是一个结构化框架,旨在实现最大程度的严谨性和覆盖率。

如图1所示,该框架始于验证器(Validator),它是整个系统的基石。其功能是确保任何给定输入都严格遵守问题描述中指定的所有约束。验证器对于最小化漏报率(FNR)至关重要,因为它能防止正确程序在格式错误的数据上失败。

AutoCode:大型语言模型在竞赛编程问题生成与评估中的革命性框架 大型语言模型 竞赛编程 问题生成 测试用例验证 第2张

接下来,生成器采用多样化策略创建广泛输入,旨在减少误报率(FPR),即错误或低效程序被误判为正确。生成器产生的任何无效案例都会被验证器过滤,从而确保获得一套高质量输入。

AutoCode:大型语言模型在竞赛编程问题生成与评估中的革命性框架 大型语言模型 竞赛编程 问题生成 测试用例验证 第3张

最后,为了评估参赛者输出,检查器会将其与参考解法的输出进行比较。

AutoCode:大型语言模型在竞赛编程问题生成与评估中的革命性框架 大型语言模型 竞赛编程 问题生成 测试用例验证 第4张

而对于交互式任务,交互器(Interactor)会与参赛者程序进行多轮对话以给出最终判决。

AutoCode:大型语言模型在竞赛编程问题生成与评估中的革命性框架 大型语言模型 竞赛编程 问题生成 测试用例验证 第5张

由于该团队的一个突出目标是为RLVR(来自验证结果的强化学习)提供高质量验证器,他们特别关注降低误报率(FPR)。该团队将测试用例(输入-答案对)与测试数据区分开来,后者还包括评估所需的检查器和交互器程序。

AutoCode:大型语言模型在竞赛编程问题生成与评估中的革命性框架 大型语言模型 竞赛编程 问题生成 测试用例验证 第6张

基准测试:测试用例的稳健性

为了严格评估该团队的测试用例生成框架,他们建立了两个不同基准。

主要基准包含7538个问题,来源于著名现有数据集的交集:CodeContests+、CodeContests、HardTests和TACO。

值得注意的是,这个大规模集合不包含交互式问题,并且由于这些数据集固有的筛选,其测试数据生成的平均难度略低于典型Codeforces比赛。

为应对此问题并在更具挑战性的真实条件下测试新系统,该团队创建了第二个基准,包含720个来自Codeforces的近期、有评分比赛问题。这个集合完全未经过滤,包括那些以难以处理著称的交互式问题和需要复杂、结构化测试数据的问题。该团队表示,无法在这个较新基准上评估先前方法,因为它们的数据生成代码库未公开。

该团队的评估基于三个关键指标:

  • 一致性(Consistency)衡量该团队测试得出的判决与官方判决之间一致的总体百分比。该团队进一步将不一致情况分解为两个关键错误率。
  • 误报率(FPR)定义为被该团队生成测试错误接受的官方不正确解法的比例。
  • 漏报率(FNR)是被该团队测试错误拒绝的官方正确解法的比例。

与其他基准的比较

该团队在包含7538个问题的基准上,将AutoCode与四个领先基准进行评估。

如表1所示,该团队的框架与官方判决的一致性达到91.1%。这标志着一个重大飞跃,因为先前方法的一致性未超过81.0%。至关重要的是,AutoCode将误报率(FPR)大幅降低至仅3.7%,漏报率(FNR)降低至14.1%,这代表这两项指标相较于当前最先进技术均减少约50%。

AutoCode:大型语言模型在竞赛编程问题生成与评估中的革命性框架 大型语言模型 竞赛编程 问题生成 测试用例验证 第7张

图2展示了错误判决的分布,显示大多数问题的判决与地面真实判决一致。

AutoCode:大型语言模型在竞赛编程问题生成与评估中的革命性框架 大型语言模型 竞赛编程 问题生成 测试用例验证 第8张

为进一步测试该系统稳健性,该团队还整理了一个更具挑战性的基准,包含720个近期、未过滤的Codeforces问题,包括复杂交互式任务。

如表2所示,AutoCode保持了其卓越性能,实现了98.7%的一致性。这一结果验证了该团队方法在现代、困难问题上的有效性,而先前方法无法在这些问题上进行评估。

AutoCode:大型语言模型在竞赛编程问题生成与评估中的革命性框架 大型语言模型 竞赛编程 问题生成 测试用例验证 第9张

该团队也通过消融实验验证了方法的有效性。

在建立起如此强大的测试用例生成能力之后,研究人员便将目光投向更具创造性任务:直接生成全新高质量问题

问题生成

该团队新提出的问题生成框架建立在前述稳健测试生成框架(如图1所示)之上,但引入一个关键双重验证协议,以确保在没有人工干预的情况下实现正确性。

每个生成的问题都由顶尖人类竞赛程序员根据一个6级量表进行评分。该团队咨询8位人类专家出题人,他们都表示在创作新问题时,常会基于某个特定现有问题。通过对这样一个“种子问题”的某些条件进行添加、删除或修改,他们可以创造新的、通常更困难的、需要新颖洞察力的问题。

受他们见解启发,该团队的方法是首先随机选择一个Codeforces问题(难度评分低于2200)作为“种子问题”。LLM的任务是通过增、删、改这个种子问题的某些条件来生成一个新问题,并同时提供一个高效的参考解法(std.cpp)和一个暴力解法(brute.cpp)

brute.cpp通常时间复杂度更高,但基本不可能出错,因此该团队利用它来压力测试问题的有效性。使用该团队增强的测试用例生成技术,该团队构建了一套全面的测试数据,完全覆盖小规模案例。然后brute.cpp和std.cpp都在这个数据集上运行。只有当对于每一个测试用例,两个程序的输出(其中暴力解法可能因超时而合法地无法完成)都被检查器成对地验证为一致的答案和输出时,一个问题才被认为是正确的。

这种设计的巧妙之处在于,它利用了“虽然慢但几乎绝不会错”的暴力解法,为“虽然快但可能存在逻辑漏洞”的高效解法提供了一个无需人工干预的、绝对可靠的“事实标准”,从而实现了自动化的正确性校验。

这个双重验证协议(其中brute.cpp作为初始地面真实,并且经过验证的参考解法还要再经过一个完整的测试生成周期)成功地过滤掉了27%的易错问题,将LLM提供的参考解法的正确率从86%提高到了94%。

经过筛选后,超过80%的问题被标注为具有足够质量,可以作为模型的训练数据,并且23%的问题涉及新颖或创造性的设计。该团队在图3中展示了详细的评分标准和分数分布。

AutoCode:大型语言模型在竞赛编程问题生成与评估中的革命性框架 大型语言模型 竞赛编程 问题生成 测试用例验证 第10张

接下来,该团队总结了关于LLM在问题生成方面表现的几个关键发现。

  • 发现1:LLM能够生成它们自己无法解决的可解问题。
  • 发现2:LLM倾向于通过组合现有问题框架和强调知识与实现来创造新问题。也就是说,LLM更擅长“知识重组”,而非原创创新。
  • 发现3:新问题的难度增幅往往大于种子问题,且当相应种子问题难度适中时,生成问题的质量最高。
  • 发现4:人类专家和LLM在对问题质量和新颖性的判断上几乎没有相关性。
  • 发现5:生成问题的难度和相较于种子问题的难度增益,是比LLM自我评估更好的问题质量指标。

AutoCode:大型语言模型在竞赛编程问题生成与评估中的革命性框架 大型语言模型 竞赛编程 问题生成 测试用例验证 第11张

总而言之,这些发现为我们描绘了当前LLM在创造性任务上的清晰画像:LLM是强大的“知识重组者”,而非一个真正的“原创思想家”

总结

在这项工作中,LiveCodeBench Pro团队提出了AutoCode,一个利用LLM作为竞赛编程出题人的闭环多角色框架。

通过将验证器-生成器-检查器(及交互器)框架与双重验证协议相结合,AutoCode在测试用例生成方面实现了最先进的可靠性,并超越了先前方法,能够生成全新的、达到竞赛质量的问题。

在超过7,500个问题和近期的Codeforces基准上的大量实验表明,AutoCode大大减少了误报和漏报,与官方判决的一致性超过98%,并成功地产生了经专家程序员验证的全新问题。除了测试生成,该团队的分析还揭示了LLM在创造性问题创作方面的优势和劣势。

虽然模型擅长算法知识的重组,但它们难以引入真正新颖的推理范式或无懈可击的样例设计。

尽管如此,该团队表明,难度和难度增益可以作为问题质量的可靠智能体信号,为实现自我博弈提供了一条可扩展的路径。