共计 1898 个字符,预计需要花费 5 分钟才能阅读完成。
人工智能(AI)的迅猛进展显而易见,目前,AI 在围棋、星际争霸等游戏中展现出的能力,甚至在艺术创作和微芯片架构优化等领域,已达到或超越了人类的水平。那么,未来 AI 是否会在编程领域超越人类呢?
实际上,自动化编程早已不是一个崭新的概念。现今,已有若干高效的大规模语言模型,在网页设计等简单编程任务中展示了出色的代码生成能力。然而,要让 AI 成功应对那些更为复杂和隐晦的编程难题,仍需一段较长的时间来发展。
最近,DeepMind 推出了一款名为 AlphaCode 的系统,它利用基于转换器的语言模型,不仅能生成代码,还能为需要深度推理的编程问题提供创新的解决方案。在一场涉及 5000 多名人类参与者的编程竞赛中,AlphaCode 的排名达到了前 54.3%。这表明,它的表现已经与普通人类相当。
不久前,相关研究成果以《可实现完成竞赛级别的代码生成任务的 AlphaCode》(Competition-level code generation with AlphaCode)的标题发布在《Science》期刊上,并成为该期的封面论文。

图 | AlphaCode 相关论文(
要让 AI 能够胜任编程任务,面临着诸多挑战。特别是对于相同的问题,AI 可能会提供截然不同的解决方案,而如何判断某段程序的正确性或部分正确性,成为一项艰巨的任务。
此前,已有一些 AI 系统能够完成简单的编程任务,比如 Codex 能够处理简短的叙述总结。然而,当真正面对复杂的编程问题时,这些系统的能力便显得不足。尤其在使用 C ++ 或 Python 等通用编程语言生成完整程序来解决较长的自然语言描述任务时,进展依然有限。
为了解决这一难题,DeepMind 为 AlphaCode 设计了三个关键组件,使其在代码生成任务中能够与人类竞争:首先,选用广泛且简洁的竞争性编程数据集进行训练和评估;其次,采用大型、高效的架构;最后,通过大规模模型抽样来缩小探索空间,并根据程序行为对少量提交内容进行筛选。
AlphaCode 所使用的数据集是竞争性编程数据集,这些数据集代表了复杂编程问题的集合。AI 不仅需要理解复杂的自然语言描述,还需对未见过的问题进行推理,并掌握多种算法和数据结构,能够准确实施跨越数百行的解决方案。此外,全球数十万编程者广泛参与的竞争性编程问题集,有助于确保找到最佳的解决路径,从而提供更为优越的判别基准。

图 | AlphaCode 系统的概述(
如图所示,AlphaCode 系统的工作流程主要分为四个步骤:
首先,系统在具备标准语言建模目标的 GitHub 代码集上,对基于转换器的语言模型进行预训练,以合理地将问题定位于人类编码空间,从而显著减少问题的搜索范围。
其次,系统以 GOLD 作为训练目标,在竞争性编程数据集上对模型进行微调,这样可以进一步缩小搜索空间,同时通过预训练补偿少量数据的不足。
接下来,系统为每个问题生成大量样本。
最后,系统对这些样本进行筛选,选出不超过 10 个的候选样本提交。通过示例测试和聚类等方法,对所选样本进行隐性测试评估,并根据程序的反馈进行选择。
显然,AlphaCode 在大规模采样后进行过滤的独特设置,极大地提高了问题解决的成功率,促进了更加快捷和高效的采样过程。
为了评估 AlphaCode 的性能,研究人员将在著名的编程竞赛平台 Codeforces 和 CodeContests 上进行评测。

图 | AlphaCode 系统在 10 次 Codeforces 中的排名(越低越好)(
AlphaCode 系统在编程竞赛中的突出表现与未来发展
经过详细分析,AlphaCode 系统在十场 Codeforces 竞赛中,平均名次达到了前 54.3% 的水平,显示出其已经接近普通人类程序员的能力。
综上所述,这一人工智能编程辅助平台的推出,将显著提升程序员的效率。同一时期,《科学》 期刊中指出:“这标志着机器学习模型在合成计算机程序以应对复杂问题方面迈出了重要的一步。”此外,论文的作者对媒体表示,尽管 AlphaCode 已取得从 0% 到 30% 的进展,但仍需继续努力,以进一步提升其性能。
参考文献
1. Yujia Li 等。《科学》 378, 6624,1092-1097(2022). DOI: 10.1126/science.abq1158


听说AI生成的代码可能会有不同的解决方案,如何评估这些方案的优劣成了重点。