作者: Bei Chen, Fengji Zhang, Anh Nguyen, Daoguang Zan, Zeqi Lin, Jian-Guang Lou, Weizhu Chen
提交日期: 2022年7月21日 (v1),2022年11月23日修订 (v2)
摘要:
为给定的编程问题生成代码解决方案可以受益于使用预训练语言模型(如Codex),这些模型能够生成多个不同的代码样本。然而,该任务面临的一个主要挑战是如何从预训练语言模型生成的多个样本中选择最合适的解决方案。评估代码解决方案质量和正确性的自然方法是使用一组测试用例来运行它,但手动创建这些测试用例通常成本高昂且耗时。本文提出了一种新颖的方法——CodeT,它利用相同的预训练语言模型自动为代码样本生成测试用例,从而减少人工工作量并增加测试场景的覆盖率。CodeT随后使用生成的测试用例执行代码样本,并进行双重执行一致性检查,该检查同时考虑了代码输出与生成测试用例的一致性以及与其他代码样本输出的一致性。我们在四个基准测试(HumanEval、MBPP、APPS和CodeContests)上使用五种不同规模和能力的预训练语言模型进行了全面的实验。结果表明,CodeT能够显著提升代码解决方案选择的性能,相较于先前方法,在不同模型和基准测试上均取得了显著且一致的提升。例如,CodeT将HumanEval上的pass@1指标提升至65.8%,这相对于code-davinci-002模型实现了18.8%的绝对提升,并且相对于先前的最先进结果实现了超过20%的绝对提升。
主题/分类:
- 计算与语言 (cs.CL)
- 人工智能 (cs.AI)
- 编程语言 (cs.PL)
- 软件工程 (cs.SE)
arXiv标识符: arXiv:2207.10397 [cs.CL]