竞赛编程(competitive programming)是一种比赛形式:参赛者拿到题面和时限,必须写出一段程序,让它在隐藏的测试输入上给出正确输出。程序由系统自动判分,排名既取决于解出多少题,也取决于解题速度。题目事先不可见,程序又必须完全正确,因此这类比赛是对写代码所需推理能力的一次严格检验。
发布的内容
2022 年 2 月 2 日,DeepMind 发布了 AlphaCode,一个能以竞赛水平编写计算机程序的系统[1]。DeepMind 表示,AlphaCode 是第一个在编程竞赛中达到竞赛级表现的人工智能代码生成系统[1]。
训练方式
AlphaCode 先在有选择的部分公开 GitHub 代码上进行预训练(pre-training),然后在一个规模相对较小的竞赛编程数据集上进行微调(fine-tuning)[1]。这两个阶段做的事不同:预训练让系统接触到大量已有代码,从而学到人们写程序时的模式和惯例;微调则把它调整到竞赛题这一较窄的场景上,所用的数据集比第一阶段的数据小得多。
产生答案的方式
AlphaCode 不会只认定一段程序,而是生成大量候选解,先经过过滤,再提交最多 10 个[1]。过滤这一步很关键,因为一场比赛允许的提交次数很少。生成一大批候选解可以提高其中至少有一个正确的机会,但判题系统最终只看到少数几个,所以系统必须先把这个候选池收窄。
结果
DeepMind 的评估方式,是在 Codeforces 的许可下模拟参加 10 场较新的 Codeforces 比赛,每一场都晚于它的训练数据[1]。在这 10 场比赛里,它的平均排名位于参赛者的前 54%[1]。由于评估所用比赛都在训练数据固定之后举行,比较所针对的是系统没见过的题目。
论文与公开数据集
经过同行评议的论文于 2022 年 12 月 8 日登上《科学》(Science)封面[1]。DeepMind 还在 GitHub 上公开了 CodeContests 数据集[1]。公开数据集意味着其他研究者可以使用同一批竞赛编程材料,对这类任务的结果可以在原团队之外复现和核查。
意义
写出一段能通过隐藏测试的程序,和写出一段读起来通顺的文字不是一回事:输出要么能编译并在每个测试上给出正确答案,要么就不行。AlphaCode 的成绩是以在真实比赛中相对人类参赛者的名次来报告的,而且是在训练数据之后举行的比赛上测得的,这也是 DeepMind 称其达到竞赛水平、而不只是生成了看起来合理的代码的原因[1]。CodeContests 数据集的公开,则让评估所用的材料随论文一起交到了公众手里[1]。
来源
- 1Competitive programming with AlphaCodeGoogle DeepMind
引用本页: DeepMind 发布编程竞赛系统 AlphaCode. TellWorld, https://www.tellworld.net/zh/news/alphacode-2022. 更新于 2026-11-08