HumanEval Pro and MBPP Pro: Evaluating Large Language Models on Self-invoking Code Generation
作者: Zhaojian Yu, Yilun Zhao, Arman Cohan, Xiao-Ping Zhang
分类: cs.SE, cs.CL
发布日期: 2024-12-30 (更新: 2024-12-31)
💡 一句话要点
提出自调用代码生成任务及HumanEval Pro等基准,评估LLM的递进推理能力。
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码生成 大型语言模型 递进推理 自调用 基准测试
📋 核心要点
- 现有代码生成基准难以充分评估LLM的递进推理和复杂问题解决能力。
- 提出自调用代码生成任务,要求模型利用基础问题的解来解决更复杂的问题。
- 构建HumanEval Pro等新基准,实验表明现有LLM在自调用任务上性能显著下降。
📝 摘要(中文)
本文提出了一种新的任务——自调用代码生成,旨在评估大型语言模型(LLM)的递进推理和问题解决能力。在该任务中,模型首先需要解决一个基础问题,然后利用该基础问题的解决方案来解决一个更复杂的、相关的问题。本文的主要贡献包括:提出了一个通用的方法,用于生成更具挑战性的现有基准测试版本,从而产生了三个新的基准测试:HumanEval Pro、MBPP Pro和BigCodeBench-Lite Pro,专门用于评估LLM的自调用代码生成能力。通过对超过20个LLM在这些基准测试上的实验结果分析,我们观察到:(i) 大多数LLM在传统的代码生成基准测试(如HumanEval和MBPP)中表现出色,但在自调用任务中的性能下降。例如,o1-mini在HumanEval上的pass@1达到96.2%,但在HumanEval Pro上仅为76.2%。(ii) 在自调用代码生成任务中,指令微调模型相比于基础模型仅表现出边际改进。此外,我们还揭示了评估结果中存在的失败模式。这些结果强调了进一步推进自调用代码生成任务的必要性,并为未来增强LLM代码推理能力的研究提供了新的方向。
🔬 方法详解
问题定义:论文旨在解决现有代码生成基准测试无法充分评估大型语言模型在解决复杂问题时所需要的递进推理能力的问题。现有的基准测试主要关注独立的代码生成任务,而忽略了现实世界中问题往往需要逐步分解和解决的特性。
核心思路:论文的核心思路是设计一种“自调用”的代码生成任务,在这种任务中,模型需要先解决一个相对简单的问题,然后利用这个简单问题的解决方案作为解决更复杂问题的基础。这种设计模拟了人类解决复杂问题时常用的“分而治之”的策略。
技术框架:整体流程如下:1) 选择一个现有的代码生成基准测试(如HumanEval,MBPP)。2) 对于每个问题,设计一个更复杂的相关问题,这个复杂问题的解决依赖于原始问题的解决方案。3) 构建新的基准测试,包含原始问题和对应的复杂问题。模型首先尝试解决原始问题,然后利用其解决方案来解决复杂问题。评估指标仍然是pass@k等常用的代码生成指标。
关键创新:关键创新在于提出了自调用代码生成任务的概念,并提供了一种通用的方法来从现有的代码生成基准测试中生成更具挑战性的版本。这种方法能够更有效地评估LLM的递进推理和问题分解能力。与现有方法的本质区别在于,它不再是孤立地评估代码生成能力,而是关注模型如何利用已有的知识和解决方案来解决更复杂的问题。
关键设计:生成Pro版本基准的关键在于如何设计与原问题相关联的更复杂的问题。具体的设计策略未知,但需要保证复杂问题的解决依赖于原问题的解。论文中提到使用了三种新的基准:HumanEval Pro, MBPP Pro, 和 BigCodeBench-Lite Pro,但没有详细说明如何生成这些Pro版本的问题。
🖼️ 关键图片
📊 实验亮点
实验结果表明,现有LLM在传统代码生成基准(如HumanEval)上表现出色,但在自调用任务(如HumanEval Pro)上的性能显著下降。例如,o1-mini在HumanEval上的pass@1达到96.2%,但在HumanEval Pro上仅为76.2%。这表明现有LLM在递进推理和利用已有知识解决复杂问题方面仍有很大的提升空间。
🎯 应用场景
该研究成果可应用于评估和提升大型语言模型在软件开发、自动化编程、复杂问题求解等领域的应用能力。通过自调用代码生成任务,可以更有效地训练和评估LLM的推理能力,使其能够更好地应对现实世界中需要逐步分解和解决的复杂问题,从而提高代码生成质量和效率。
📄 摘要(原文)
We introduce self-invoking code generation, a new task designed to evaluate the progressive reasoning and problem-solving capabilities of LLMs. In this task, models are presented with a base problem and a related, more complex problem. They must solve the base problem and then utilize its solution to address the more complex one. This work features three key contributions. First, we propose a general recipe for generating more challenging versions of existing benchmarks, resulting in three new benchmarks: HumanEval Pro, MBPP Pro, and BigCodeBench-Lite Pro, specifically designed to assess LLMs on self-invoking code generation. Second, from the analysis of experimental results over twenty LLMs on our benchmarks, we have two important observations: (i) Most LLMs excel in traditional code generation benchmarks like HumanEval and MBPP, but their performance declines on self-invoking tasks. For example, o1-mini achieves 96.2% pass@1 on HumanEval but only 76.2% on HumanEval Pro. (ii) On self-invoking code generation task, the instruction-tuned models demonstrate only marginal improvements compared to the base models. Third, we disclose the types of failure modes that exist in our evaluation results. All these results underscore the need for further advancements in self-invoking code generation tasks and provide a new direction for future research on enhancing LLMs' code reasoning capabilities.