MBPP(Mostly Basic Python Problems的缩写)是一个基准数据集,旨在评估大型语言模型的代码生成能力。它包含974个众包的Python编程问题,针对基础编程技能,如基本语法、字符串操作、循环和算术。该基准在Artificial intelligence领域被广泛使用,用于衡量模型将自然语言问题描述转化为可执行Python代码的能力。
该数据集于2021年由Google Research的研究团队引入,包括Jacob Austin、Augustus Odena、Maxwell Nye等人。它在论文“Program Synthesis with Large Language Models”中提出,该论文还介绍了相关的APPS基准。MBPP旨在提供比现有基准更易访问且更聚焦的评估集,因为现有基准通常需要解决复杂的算法挑战或涉及冗长的问题陈述。
MBPP中的每个问题由自然语言描述、函数签名以及若干验证生成代码正确性的测试用例组成,这些问题设计为可由具有几个月Python经验的程序员解决,使该基准适合评估基本编程能力,数据集分为374个问题的训练集、90个问题的验证集和500个问题的测试集,测试集进一步分为两个子集:一个用于评估单次尝试的模型(pass@1),另一个用于评估多次尝试的模型(pass@k)。
评估方法
MBPP使用的主要指标是pass@k,它衡量k个生成的代码样本中至少有一个通过所有提供的测试用例的概率,该指标考虑了语言模型采样的随机性,例如,pass@1表示单个生成解决方案正确的可能性,而pass@80衡量80个样本中至少有一个成功的几率,评估过程涉及从模型生成代码补全,给定问题描述,然后对每个补全运行测试用例,
为确保公平性,基准提供了一组规范解决方案和测试用例,,模型通常在少样本设置中评估,其中提示中包含少量示例问题以指导模型的输出格式,,原始论文报告了多个模型的结果,包括GPT-Neo、GPT-3以及GPT-2的微调版本,pass@1得分根据模型大小和训练数据从3%到37%不等,
在AI研究中的意义
MBPP已成为代码生成任务的标准基准,与其他数据集如HumanEval和APPS并列,,其对基础问题的关注使其特别适用于评估未专门针对代码训练的模型,因为它测试一般推理和编程知识,,该基准已被众多研究团队采用,并经常在Machine learning和Deep learning的论文中被引用,
MBPP的一个关键优势是其简单性,允许快速且可复现的评估,,这使其成为比较不同模型性能的热门选择,包括OpenAI、Anthropic及其他组织开发的模型,,该基准也被用于研究训练数据大小、模型架构和微调策略对代码生成能力的影响,,
局限性与批评
尽管被广泛使用,MBPP存在若干局限性,,问题相对简单,可能无法反映现实世界编程任务的复杂性,,此外,测试用例并不详尽,因此通过所有测试的解决方案仍可能包含错误或在基准未覆盖的边界情况下失败,,一些研究人员指出,由于问题公开可用,模型可能通过记忆训练数据中的解决方案来作弊,,
另一个批评是,该基准主要关注功能正确性,不评估代码质量的其他方面,如可读性、效率或风格,,这导致有人呼吁开发更全面的基准以纳入这些因素,,尽管如此,MBPP仍是代码生成模型初步评估的宝贵工具,,
应用与扩展
MBPP已用于学术研究之外的多种应用,,例如,它被用于评估商业AI助手的代码生成能力,如GitHub Copilot及其他基于Transformer (architecture)架构构建的工具,,该基准也被扩展或改编用于特定目的,如测试多语言代码生成或评估模型在更具挑战性的问题集上的表现,,
此外,MBPP启发了其他编程语言和领域类似基准的创建,,例如,MBXP数据集将MBPP扩展到多种语言,而其他基准则专注于数据科学或Web开发等特定领域,,这些扩展有助于拓宽代码生成评估的范围,并为AI系统提供更多样化的挑战,,
未来方向
随着Generative AI的持续进步,像MBPP这样的基准可能会演变以跟上新能力,,未来版本可能包含更复杂的问题,纳入现实世界的编程场景,或引入评估超越正确性的代码质量的指标,,研究人员也在探索使基准对数据污染更具鲁棒性的方法,并确保其准确反映模型在实际环境中的能力,,
MBPP及类似基准的持续开发对Artificial intelligence在软件工程领域的进步至关重要,,通过提供标准化评估方法,这些基准能够实现模型间的公平比较,并推动代码生成技术的改进,,截至2025年,MBPP仍是该领域被引用最多的基准之一,其影响力可能在未来多年持续存在,,