Competition-Level Code Generation with AlphaCode
Yujia Li, David Choi, Junyoung Chung, Nate Kushman, Julian Schrittwieser, Rémi Leblond, Tom Eccles, James Keeling, Felix Gimeno, Agustin Dal Lago, Thomas Hubert, Peter Choy, Cyprien de Masson d'Autume, Igor Babuschkin, Xinyun Chen, Po-Sen Huang, Johannes Welbl, Sven Gowal, Alexey Cherepanov, James Molloy, Daniel J. Mankowitz, Esme Sutherland Robson, Pushmeet Kohli, Nando de Freitas, Koray Kavukcuoglu, Oriol Vinyals
编程是一种强大且无处不在的问题解决工具。开发能够协助程序员甚至独立生成程序的系统,可以使编程更高效、更易用,但迄今为止,将人工智能创新融入其中仍具挑战性。近年来,大规模语言模型展现了令人印象深刻的代码生成能力,现已能够完成简单的编程任务。然而,这些模型在面对更复杂、未曾见过的问题时表现仍然不佳,这些问题需要的不仅仅是简单地将指令翻译成代码,而是需要更深层次的解题技能。例如,需要理解算法和复杂自然语言的竞赛级编程问题仍然极具挑战性。为了弥补这一差距,我们引入了 AlphaCode,一个能够为这些需要深度推理的问题创建新颖解决方案的代码生成系统。在 Codeforces 平台上近期编程竞赛的模拟评估中,AlphaCode 在参赛人数超过 5,000 人的竞赛中平均排名达到前 54.3%。我们发现,实现良好且可靠性能的关键在于三个组成部分:(1) 用于训练和评估的广泛且干净的竞赛编程数据集;(2) 大规模且采样高效的基于 Transformer 的架构;(3) 大规模模型采样以探索搜索空间,随后根据程序行为进行筛选,最终得到少量提交结果。