【中文翻译】 AlphaCode 2 技术报告

December 9, 2023 (1y ago)

👋

本文为 AlphaCode 2 技术报告中文翻译。

🔑

Keywords:

AlphaCode 2 Technical Report, AlphaCode 2, AlphaCode, paper, Google, Gemini, fulltext, web, html, pdf, markdown, translation, translate, Chinese, code, programming

谷歌,双子座,技术报告,论文,全文,网页版,翻译,代码,编程,中文,汉语

AlphaCode 团队,谷歌 DeepMind

AlphaCode (Li et al., 2022) 是首个在竞赛编程中达到中等参赛者水平的人工智能系统,这是一个涉及高级数学、逻辑和计算机科学的复杂推理任务。本文介绍了 AlphaCode 2,这是一个全新的、性能大幅提升的增强系统,由 Gemini (Gemini Team, Google, 2023) 提供技术支持。AlphaCode 2 结合了强大的语言模型和专门定制的搜索及重新排名机制。在与原始 AlphaCode 相同的平台上进行评估时,我们发现 AlphaCode 2 解决了比原版多出 1.7 倍的问题,并且其表现超越了 85% 的竞赛参与者。

引言

竞赛编程是评估编码技能的重要标准之一。参与者需要在限定时间内解决涉及关键思维、逻辑及对算法、编程和自然语言理解的复杂问题。因此,它是衡量高级推理和解决问题能力的重要基准。

AlphaCode (Li et al., 2022) 是首个在此任务上达到竞争水平的人工智能系统。它的升级版,AlphaCode 2,集成了多个基于 Gemini (Gemini Team, Google, 2023) 的模型,成为一个大幅提升性能的系统。在 Codeforces平台上的评估显示,AlphaCode 2 解决了43%的问题,几乎是原始 AlphaCode(25%)的两倍。尽管其前身的表现与中等水平的参赛者相当,我们估计 AlphaCode 2 平均达到了前 15% 的水平。

采用 Gemini 作为 AlphaCode 2 的核心模型是实现这一突破性能的关键。AlphaCode 2 的成功凸显了 Gemini 在灵活性和适应性方面的优势,我们能够对其进行针对性的微调,优化其在包括代码生成和代码重排序等多个不同任务上的性能。

总体系统

AlphaCode 2 依托于强大的大型语言模型,并结合了专为竞赛编程定制的高级搜索和重新排名机制。如图 1 所展示,它的主要组成部分包括:

  • 一系列策略模型,用于为每个问题生成代码样本;
  • 一个采样机制,旨在生成多样化的代码样本,从而覆盖可能的程序解决方案空间;
  • 一个过滤机制,用于剔除不符合问题描述的代码样本;
  • 一个聚类算法,用于将语义上相似的代码样本分组,以此避免冗余;
  • 一个评分模型,用于从每个最大的10个代码样本集群中筛选出最佳候选项。
图 1 | AlphaCode 2 系统的高层次概述。

图 1 | AlphaCode 2 系统的高层次概述。

策略和微调

我们的起始点是 Gemini Pro 模型 (Gemini Team, Google, 2023),在此基础上,我们进行了两轮连续的微调,采用 GOLD (Pang and He, 2020) 作为训练目标。

首先,我们在 CodeContests 数据集 的更新版本上进行了微调。这个版本包含了更多问题、更多解决方案以及在验证集上手工策划的高质量测试,数据集大约包含 1.5 万个问题和 3000 万个人类编写的代码样本。我们通过调整超参数,生成了几个不同的微调模型,最终形成了一系列微调模型。接着,我们在另一个更高质量的数据集上进行了几步额外的微调。

使用一系列策略模型而非单一模型,使我们能够最大化解决方案的多样性,这对于解决复杂问题至关重要。

采样

我们的采样方法与 AlphaCode 相似。对于每个问题,我们生成多达一百万个代码样本,使用随机的温度参数来鼓励样本的多样性。我们还对提示中包含的目标元数据进行了随机化处理,例如问题的难度等级和分类标签。

我们将采样预算均匀分配给我们的一系列微调模型。虽然在 AlphaCode 中我们采样了 Python 和 C++,但在 AlphaCode 2 中我们仅使用 C++ 样本进行采样,因为我们发现它们的质量更高。

通过大规模采样,我们能够彻底探索模型分布,并生成大量多样化的代码样本,从而最大化至少生成一些正确样本的可能性。

考虑到样本数量众多,过滤和重新排序对整体系统性能至关重要。因为我们每个问题最多只提交 10 个代码样本。

过滤

每个竞赛编程问题都至少包含一个公开的输入/输出测试,用于指明代码样本应该表现出的行为。我们在相应的测试输入上运行每个代码样本,并剔除所有未产生预期输出的样本,因为这些样本显然不可能是正确的,同时也剔除了不到 5% 无法编译的样本。平均来说,这一过滤步骤移除了大约 95% 的样本。

聚类

经过过滤后,我们对每个问题平均留下了大约 5 万个候选代码样本,但我们将提交的解决方案限制在 10 个以内。为了进一步筛选候选样本,我们基于它们的运行时行为进行聚类:与 AlphaCode 相同,我们训练了一个独立的模型为每个问题生成新的测试输入,并在这些新输入上运行剩余的样本。这些样本产生的输出形成了一个我们用来将相似代码样本聚集在一起的“签名”。接着,我们根据集群的大小对其进行排序,并仅保留最大的 10 个集群。

聚类的目的是为了避免重复:由于同一集群中的代码样本表现相似,我们可以只提交每个集群中的一个样本给在线评判系统,以获得最佳结果。

评分模型

我们对另一个 Gemini Pro 模型进行了微调,使其能够为代码样本分配一个介于 0 到 1 之间的预估正确性分数。利用这个评分模型,我们为每个剩余集群中的代码样本计算一个分数;接着,我们基于这个预测分数从每个集群中挑选出最佳的候选样本,组成我们最终的 10 个提交方案。

评估

图 2 | AlphaCode 2 的估算排名。

图 2 | AlphaCode 2 的估算排名。我们绘制了 Codeforces 上人类竞争者的得分(将其除以每场比赛最佳人类得分进行 [0, 1] 的标准化)与他们的平均排名,基于我们评估的 12 场比赛。然后我们计算了 AlphaCode 2 的平均标准化得分,并将其映射到排名轴上,结果显示它舒适地位于 85 百分位以上。这个排名考虑到了一个假设:AlphaCode 2 按难度递增的顺序处理问题,并在 2 小时时限内完成最后一个问题的采样。

我们在 Codeforces 对 AlphaCode 2 进行了评估,这是与原始 AlphaCode 相同的平台。我们选取了 12 场最近的比赛,参赛者超过 8000 人,包括第 2 组或更高难度的 “1+2” 组。总共有 77 个问题。对于每个问题,我们采样了一百万个候选方案,并根据上述过程选择并排序的最多 10 个解决方案提交,直到找到正确的解决方案或用尽所有候选。

我们发现 AlphaCode 2 解决了这些竞赛问题的 43%,比之前创纪录的 AlphaCode 系统(解决了 25% 的问题)提高了近两倍。将这一成绩映射到竞赛排名上,我们估计 AlphaCode 2 平均位于前 15%,即其表现优于 85% 的参赛者,在 Codeforces 上介于“专家”和“候选大师”级别之间。这比 AlphaCode 的表现(仅优于估计的 46% 的竞争者)有显著提升。在表现最佳的两场比赛中,AlphaCode 2 的表现超过了超过 99.5% 的参赛者!

我们还评估了增加每个问题的样本数量对结果的影响。与 AlphaCode 相同,我们发现随着样本数量的增加,性能大致呈对数线性增长。AlphaCode 2 仅需大约 100 个样本便能达到 AlphaCode 使用一百万样本的性能水平,使其在样本效率上提高了超过 10000 倍。

讨论和结论

竞赛编程与其他编码任务有着显著不同,后者通常遵循命令式编程范式:用户提出明确的指令,模型输出相应的代码。然而,竞赛编程问题更加开放式。解决这些问题需要先对其进行理解、分析和推理,这涉及到高级数学和计算机科学的概念。

这就解释了为什么通用的人工智能系统在这一基准测试中表现不佳。AlphaCode 2 在竞赛编程比赛中取得的成功,代表了在这一极其困难的推理任务上性能的显著提升。

采用 Gemini Pro 作为我们的基础模型,对系统的两个关键部分——生成代码样本的策略模型和用于挑选最优样本的评分模型——带来了显著的性能提升。我们能够将 Gemini 微调到这两个截然不同任务的高性能,展现了它的卓越灵活性。我们推测,使用更先进的 Gemini Ultra 作为基础模型,凭借其在编程和推理能力上的提升,可能会进一步提高整个 AlphaCode 2 方法的性能。

尽管 AlphaCode 2 取得了令人印象深刻的成绩,但在实现系统稳定地达到顶尖人类编码者的性能之前,还有许多工作要做。我们的系统需要大量试错,并且运行成本较高。此外,它在很大程度上依赖于能够过滤掉明显错误的代码样本。

图 3 | 作为每个问题样本数量函数的 12 场近期比赛中的解决率。

图 3 | 作为每个问题样本数量函数的 12 场近期比赛中的解决率。

这为系统与人类编码者之间的积极互动打开了新的可能,后者可以定义额外的过滤条件;在这种 AlphaCode 2 加人类的配置中,我们的得分超过了 90 百分位!我们希望这种交互式编程将成为编程的未来,程序员可以利用功能强大的人工智能模型作为合作工具,帮助他们思考问题、构思代码设计并协助实施。我们正致力于将 AlphaCode 2 的独特功能整合到我们的基础 Gemini 模型中,作为推广这种新编程范式的首步。

参考文献

  1. Gemini Team, Google. Gemini: A Family of Highly Capable Multimodal Models.2023. URL https://storage.googleapis.com/deepmind-media/gemini/gemini_1_report.pdf.
  1. Leblond et al. AlphaCode 2 Technical Report. 2023. URL https://storage.googleapis.com/deepmind-media/AlphaCode2/AlphaCode2_Tech_Report.pdf.
  1. Y. Li, D. Choi, J. Chung, N. Kushman, J. Schrittwieser, R. Leblond, T. Eccles, J. Keeling, F. Gimeno, A. D. Lago, T. Hubert, P. Choy, C. de Masson d'Autume, I. Babuschkin, X. Chen, P.-S. Huang, J. Welbl, S. Gowal, A. Cherepanov, J. Molloy, D. J. Mankowitz, E. S. Robson, P. Kohli, N. de Freitas, K. Kavukcuoglu, and O. Vinyals. Competition-level code generation with alphacode. Science, 2022. URL https://www.science.org/doi/abs/10.1126/science.abq1158.
  1. R. Y. Pang and H. He. Text generation by learning from demonstrations. arXiv preprint arXiv:2009.07839, 2020. URL https://arxiv.org/pdf/2009.07839.pdf.

引用此工作

这是由谷歌 DeepMind 提供的一篇免费、开放获取的论文。这项工作的最终版本已在线发布。引用如下:

Leblond et al. AlphaCode 2 Technical Report. 2023. URL https://storage.googleapis.com/deepmind-media/AlphaCode2/AlphaCode2_Tech_Report.pdf.

贡献与致谢

团队负责人

Felix Gimeno, 技术负责人
Florent Altché, 技术负责人
Rémi Leblond, 负责人

核心贡献者

Alaa Saade
Anton Ruddock
Corentin Tallec
George Powell
Jean-Bastien Grill
Maciej Mikuła
Matthias Lochbrunner
Michael Mathieu
Paul Caron

贡献人员

Disha Shrivastava
Eric Mitchell
Grace Margand
Jacob Kelly
Jakub Sygnowski
James Keeling
Junyoung Chung
Nate Kushman
Nikolay Savinov
Petko Yotov
Tobenna Peter Igwe
Wojciech Stokowiec
Yujia Li

战略顾问

Koray Kavukcuoglu
Nando de Freitas
Oriol Vinyals
Pushmeet Kohli
Satinder Baveja

在每个角色中,作者按字母顺序排列;排名并不反映贡献程度。

我们特别感谢我们在谷歌 DeepMind 的同事们的支持,特别是 Gemini 团队、原始 AlphaCode 团队和硬件团队,没有他们,AlphaCode 2 的实现将不可能。

我们对 Eleanor Tomlison 和 Gaby Pearl 制作的精美 AlphaCode 2 系统概览图表示感谢。

我们还要感谢我们的领导、评审人员和同事们对报告提供的宝贵讨论和反馈 - Aakanksha Chowdhery、Aliya Ahmad、Antonia Paterson、Arielle Bier、Ben Bariach、Dawn Bloxwich、Demis Hassabis、Eli Collins、Emily Hossellman、Fred Alcober、Jeff Dean、Joel Moss、Jon Small、Koray Kavukcuoglu、Lily Lin、Megha Goel、Oriol Vinyals、Petar Veličković、Rebecca Bland、Sanah Choudhry 和 Tessa Lueth。

我们在主 Gemini 网站上展示的 AlphaCode 2 演示问题是经 Codeforces 允许使用的,这是一个定期举办全球编码竞赛的平台,吸引了来自世界各地的参赛者来测试他们的编码技能。该问题出自 CodeTON 第 4 轮比赛。


通讯作者:[email protected]
© 2023 谷歌 DeepMind。版权所有