本文最后更新于 2026年3月30日 上午
论文标题:ProBench: Benchmarking Large Language Models in Competitive Programming
期刊名:arXiv:2502.20868v1 [cs.CL] 28 Feb 2025
研究背景与动机
随着像OpenAI-o3和DeepSeek-R1这样的推理语言模型的出现,大型语言模型(LLMs)在高级推理方面取得了前所未有的进展。这些模型不仅在传统的STEM相关基准测试(如数学和物理)中表现出色,还在编程领域展现出显著的推理和编码能力。然而,现有的代码评估基准测试通常不足以评估先进LLMs在具有挑战性的编程任务中的能力,尤其是竞赛编程。
竞赛编程要求参与者分析问题,选择合适的数据结构和算法,并在严格的时空效率约束和边界条件下实现代码。这些代码必须通过针对特定测试用例的广泛验证。然而,这些测试用例通常只有竞赛组织者可以访问,参与者只能提交代码进行正确性验证。相比之下,现有的代码基准测试通常缺乏强大的测试套件来全面验证代码的鲁棒性,从而影响评估的公平性。此外,大多数当前的评估工作仅停留在表面,仅测量代码提交的通过率,而没有对模型能力进行深入和系统分析。
为了解决这些挑战,受国际大学生编程竞赛(ICPC)的启发,本文提出了ProBench,旨在全面、公平和深入地分析LLMs在竞赛编程中的推理能力。ProBench收集了2024年7月至12月期间来自Codeforces、Luogu和Nowcoder平台的竞赛编程问题,并通过在线提交获取真实测试结果,以确保评估的公平性和准确性。此外,ProBench建立了一个统一的问题属性系统,包括难度分级和算法标签。
论文核心方法和步骤
数据收集
ProBench从Codeforces、Luogu和Nowcoder三个知名的编程竞赛平台收集了2024年7月至12月期间的所有竞赛问题。这些平台的问题描述语言不同,Codeforces使用英语,而Luogu和Nowcoder主要使用中文。此外,还收集了问题的元数据,如难度级别和算法标签,以便后续深入分析模型性能。
属性整合
不同编程平台的问题属性差异显著。为了便于系统分析,ProBench对问题难度级别和算法标签进行了统一整合,建立了统一的表示方法。
- 问题难度:将多个平台的难度描述系统地整合和标准化为三个统一级别:Easy、Medium和Hard。例如,Codeforces使用[800, 3500]范围内的整数值表示问题难度。ProBench将其划分为:[800, 1500]为Easy,(1500, 2400]为Medium,(2400, 3500]为Hard。
- 算法标签:将不同平台的算法标签规范化为七个知识类别:Basic、Search、String、Dynamic Programming (DP)、Data Structures (DS)、Graph和Mathematics (Math)。这种分类方案不仅考虑了不同算法的认知要求,还能够精确分析模型的逻辑推理能力。
在线提交
为了严格验证代码的鲁棒性,ProBench采用在线提交策略,将模型生成的代码直接提交到原始竞赛平台的在线评估系统。这种方法利用平台的专有测试用例全面评估代码的鲁棒性,从而消除了潜在的假阳性结果。评估完成后,系统地收集和存档详细结果,包括失败原因(例如编译错误、错误答案)、得分和运行时资源消耗(时间和内存使用)。
实验设置
- 模型选择:评估了9个流行的开源LLMs,包括指令调整、代码专业和推理优化模型。排除了参数少于14B的非推理模型,以保持评估效率。
- 评估指标:主要使用pass@k指标,通过生成每个问题的8个候选解决方案来评估模型性能。默认情况下,所有评估均使用pass@1。
- 编程语言:主要使用C++进行评估,同时分析了Java和Python两种广泛使用的语言。
实验结果
实验结果表明,推理模型在代码推理方面显著优于非推理模型。例如,QwQ-32B-Preview模型在pass@1指标上取得了20.93的最高分,尽管其参数规模仅为32B,但仍然超过了参数规模更大的DeepSeek-V3模型(16.38分)。此外,8B大小的Skywork-o1模型表现优于22B/176B大小的Mixtral-8x22B-Instruct-v0.1模型,同时与代码专业模型Codestral-22B-v0.1相当。
深入分析
- 推理长度(CoT):分析了模型生成的推理长度,发现推理模型的CoT序列显著长于非推理模型。然而,随着问题难度的增加,推理长度的增长幅度相对较小,表明可能存在推理不足的现象。
- 深度推理:通过分析代码提交的错误点,发现推理能力强的模型倾向于在更晚的测试位置出现错误,表明其能够进行更深入的多步推理。
- 基础能力:通过分析模型生成代码的错误类型,发现模型在代码生成的基础能力上存在差异。较小参数规模的模型表现出较高的代码错误率,而较大模型的代码错误率逐渐降低,但推理错误率相对增加。
- 算法标签:分析了模型在不同数据结构和算法问题上的表现,发现模型在推理强度较低的问题上表现更好,而在需要高级逻辑推理的问题上表现较差。
- 编程语言:在C++、Java和Python三种编程语言上的评估结果基本一致,表明模型的推理能力与使用的编程语言关系不大。
实验结果与结论
ProBench通过在线提交机制和多维度分析,全面评估了LLMs在竞赛编程中的推理能力。实验结果表明,推理模型在代码推理方面显著优于非推理模型,且模型规模并非决定性能的唯一因素。推理模型在处理低难度任务时表现出过度推理的倾向,而在面对高难度任务时则表现出推理不足的现象。此外,模型在不同数据结构和算法问题上的表现差异显著,表明模型在处理需要高级逻辑推理的问题时存在局限性。
这些发现为未来推理语言模型的发展提供了重要见解。为了提高模型在竞赛编程中的表现,需要进一步优化模型的推理能力,特别是在算法适应性和推理深度方面。ProBench不仅为评估现有模型提供了精确的工具,还为未来推理模型的发展提供了广阔的空间。