中文

CodeT:利用生成测试进行代码生成

计算与语言 2022-11-24 v2 人工智能 编程语言 软件工程

摘要

为给定编程问题生成代码解决方案的任务可受益于 Codex 等预训练语言模型的使用,这些模型能够生成多个多样化的样本。然而,该任务的一个主要挑战是从预训练语言模型生成的多个样本中选出最合适的解决方案。评估代码解决方案质量和正确性的一种自然方法是针对一组测试用例运行它,但人工创建此类测试用例通常成本高且耗时。在本文中,我们提出一种新颖方法 CodeT,其利用相同的预训练语言模型为代码样本自动生成测试用例,从而减少人力投入并增加测试场景的覆盖率。CodeT 随后使用生成的测试用例执行代码样本,并执行双重执行一致性检验,该检验同时考虑针对生成测试用例的输出一致性以及与其他代码样本输出的相符性。我们在 HumanEval、MBPP、APPS 和 CodeContests 四个基准上使用五种具有不同规模和能力的预训练语言模型进行了全面实验。我们的结果表明,CodeT 相较先前方法能显著提升代码解决方案选择性能,在不同模型和基准上均取得显著且一致的增益。例如,CodeT 将 HumanEval 上的 pass@1 指标提升至 65.8%,相对于 code-davinci-002 模型实现了 18.8% 的绝对提升,并相对先前最先进(state-of-the-art, SOTA)结果实现了超过 20% 的绝对提升。

关键词

引用

@article{arxiv.2207.10397,
  title  = {CodeT: Code Generation with Generated Tests},
  author = {Bei Chen and Fengji Zhang and Anh Nguyen and Daoguang Zan and Zeqi Lin and Jian-Guang Lou and Weizhu Chen},
  journal= {arXiv preprint arXiv:2207.10397},
  year   = {2022}
}