人工智能(AI)正以惊人的速度发展,令人瞩目的是,其在围棋、星际争霸等各类游戏中的表现、艺术创作的能力,甚至在微芯片设计优化方面,都已达到了与人类相当或更高的水平。那么,AI在编程领域是否也将超越人类呢?
实际上,编程自动化早已成为热门话题。现今,许多强大的语言模型在如网页设计等基础编程任务上展现了出色的代码生成能力。然而,当涉及到复杂且模糊的问题时,让AI成功编程仍然面临诸多挑战。
最近,DeepMind开发的AlphaCode系统引起了广泛关注。该系统利用基于转换器的语言模型,能够生成代码并针对需要深入推理的编程问题提供创新的解决方案。在参与超过5000名人类的编程竞赛中,AlphaCode的表现位居前54.3%,意味着它已达到与平均人类相媲美的水平。
不久前,相关研究论文以《可实现完成竞赛级别的代码生成任务的AlphaCode》(Competition-level code generation with AlphaCode)为题在《Science》上发表,并成为该期的封面论文[1]。
图 | AlphaCode相关论文(
要让AI能够进行高效编程,面临着不少困难,尤其是同一个问题的解决方案可能各异,如何让AI判断部分正确或错误的代码,成为一项重大挑战。
此前,已经有一些能够完成基本编程任务的AI系统,例如Codex,它可以处理简短的文本总结等简单任务。然而,面对复杂的编程问题时,这些系统往往捉襟见肘。特别是在使用C++或Python等通用编程语言生成完整程序,解决较长自然语言描述任务方面,进展依然有限。
为了解决上述问题,DeepMind为AlphaCode设计了三个重要组件,使其在代码生成任务中能够与人类竞争:首先,选用了丰富且简明的竞争性编程数据集用于训练和评估;其次,采用了大型且高效的采样架构;最后,通过大规模模型抽样来缩小探索空间,并对一小组提交内容进行根据程序行为的过滤。
AlphaCode训练所用的数据集为竞争性编程数据集,代表了复杂编程问题的多样性。AI不仅需要理解复杂的自然语言描述,还需对未见过的问题进行推理,掌握多种算法和数据结构,并能够实现跨越数百行的解决方案。此外,全球数十万程序员每年参与竞争性编程,确保了针对问题找到最佳解决方案,从而确立了更好的评判标准。
图 | AlphaCode系统的概述(
如图所示,AlphaCode系统的工作流程主要包括四个步骤:
首先,系统在标准语言建模目标的GitHub代码集上对基于转换器的语言模型进行预训练,从而使模型能够合理地定位问题在编码空间中的位置,显著缩小搜索范围。
接着,系统以GOLD作为训练目标,在竞争性编程数据集上进行微调,这进一步缩小了搜索空间,并通过预训练补偿了数据量的不足。
然后,系统会为每个问题生成大量样本。
最后,系统对这些生成的样本进行筛选,选出不超过10个的候选样本进行提交,并通过示例测试和聚类等方法对所选样本进行隐性评估,以根据程序反馈优化最终选择。
可以看出,AlphaCode的独特之处在于其大规模采样后的过滤过程,这显著提升了问题解决的效率,促进了更快速和高效的采样。
为了评估AlphaCode的性能,研究团队在知名的编程竞赛平台Codeforces和CodeContests上进行了测试。
图 | AlphaCode系统在10次Codeforces中的排名(越低越好)(
评估结果显示,AlphaCode系统在十场Codeforces竞赛中的平均排名达到了前54.3%,这意味着它的表现已经接近于普通人类程序员的水平。
总体来看,这一人工智能辅助编码平台的开发将显著提升程序员的工作效率。同时,《科学》 杂志中指出:“这标志着机器学习模型在合成计算机程序以应对复杂问题方面取得了实质性进展。”此外,论文的作者向媒体透露,尽管AlphaCode已经取得了从0%到30%的重要突破,但仍需大量工作来进一步完善该系统。
参考资料
1.Yujia Li等人. 《科学》 378, 6624,1092-1097(2022). DOI: 10.1126/science.abq1158
Please specify source if reproducedDeepMind推出AlphaCode:AI编程系统迈入竞赛级别新境界 | AI工具导航



