首页 AI开发编程 DeepMind 发布AlphaCode 可达到竞赛级编程水平的AI 编程系统

DeepMind 发布AlphaCode 可达到竞赛级编程水平的AI 编程系统

标题:DeepMind发布AI编程系统AlphaCode,可达到竞赛级编程水平

人工智能(AI)的快速发展是有目共睹的。如今,人工智能在下围棋、玩星际争霸等游戏、生成艺术品、甚至优化微芯片架构等方面已经达到或超过了人类水平。接下来,人工智能在编程方面是否也会超越人类?

事实上,自动化编程并不是一个新话题。如今,已经有一些强大的大规模语言模型在简单编程任务(例如网页设计)的代码生成方面展示了潜力。然而,要让人工智能能够通过编程来解决更复杂和晦涩的问题,还有很长的路要走。

DeepMind 最近开发的一个名为AlphaCode 的系统可以通过基于转换器的语言模型生成代码,并为需要深度推理的编程问题创建新颖的解决方案。 AlphaCode 在10 场超过5,000 名人类参与者的竞赛级编程竞赛中排名前54.3%。也就是说,已经达到了人类的平均水平。

近日,相关论文以《可实现完成竞赛级别的代码生成任务的 AlphaCode》(Competition-level code Generation with AlphaCode)为题发表在Science上,并成为当期封面论文[1]。

图| AlphaCode相关论文(来源:Science)

让人工智能编程面临许多挑战。特别是,即使对于同一个问题,可用的解决方案也可能看起来非常不同,如何让人工智能判断部分正确或不正确的程序是一个艰巨的挑战。

之前已经有一些AI系统可以完成简单的编程任务,比如Codex,它可以完成简短的叙述总结等任务。然而,当涉及到复杂的编程问题时,这些人工智能系统似乎就显得捉襟见肘了。特别是,在如何对AI 进行编程以使用C++ 或Python 等通用编程语言生成整个程序来解决较长自然语言描述等任务方面,进展甚微。

为了解决这个问题,DeepMind 为AlphaCode 设置了以下三个关键组件,以达到在代码生成任务上可以与人类竞争的水平:首先,选择广泛且简洁的竞争性编程数据集进行训练和评估;二是采用具有高效采样能力的大规模架构;三是通过大规模模型采样来减少探索空间,并根据程序行为过滤一小部分提交。

AlphaCode训练选择的数据集是竞争性编程数据集。该数据集也代表了这些复杂的编程问题。人工智能不仅需要理解复杂的自然语言描述和对以前未见过的问题的推理,还需要掌握广泛的算法和数据结构并准确地实现它们。涵盖数百行的解决方案。此外,每年全球有数十万程序员参与,竞赛性编程题集更好地确保找到问题的最佳解决捷径,从而提供更好的基准。

图| AlphaCode 系统概述(来源:arXiv)

如上图所示,是AlphaCode系统的概览。简单来说,系统工作主要分为以下四个流程:

首先,系统使用标准语言建模目标在GitHub 代码集上预训练基于Transformer 的语言模型。这样,模型就可以在人类编码空间中合理定位问题,从而大大缩小问题搜索范围。

然后,系统使用GOLD 作为训练目标,在竞技编程数据集上微调模型。这可以进一步缩小搜索空间,并通过预训练补偿少量的竞争性编程数据。

接下来,系统为每个问题生成大量样本。

最后,系统对这些样本进行过滤,得到一小组不超过10个候选样本提交。然后通过使用示例测试、聚类等方式对选定的样本进行隐藏测试的评估,然后根据程序的反馈来选择样本。

可以看到AlphaCode中有一个独特的设置,就是大规模采样后进行过滤,这大大提高了问题的解决率,可以促进更快更高效的采样。

为了评估AlphaCode的性能,研究人员在著名的编程竞赛Codeforces和CodeContests平台上对其进行了评估。

图| AlphaCode 系统在10 个Codeforce 中的排名(越低越好)(来源:arXiv)

经过评估,AlphaCode系统在Codeforces的10场比赛中平均排名前54.3%,已经与人类程序员的平均水平处于同一水平。

综上所述,这种人工智能辅助编码平台的开发将显着提高程序员的生产力。 《科学》杂志同时发表的一篇评论写道:“它代表了机器学习模型向前迈出了实质性的一步,可以通过综合计算机程序来解决一些具有挑战性的问题。”另据悉,论文作者向媒体表示,虽然AlphaCode是从0%到30%的重要一步,但仍有大量工作要做,下一步将继续改进AlphaCode。

参考

1.李玉佳等.科学378, 6624, 1092-1097 (2022).DOI: 10.1126/science.abq1158

热门文章