编译 | 程茜
编辑 | 李水青
AI敲代码登Science封面,打败近一半程序员。
智东西12月9日报道,今天,DeepMind的计算机程序编写AI(人工智能)模型AlphaCode,登上国际学术顶刊Science封面!
当人工智能与人类并肩参加编程竞赛会发生什么?在竞争性编码比赛平台Codeforces的10场比赛中,AlphaCode在比赛的模拟评估中平均排名前54.3%,其编码技能水平超过剩余的人类参与者。
▲AlphaCode的比赛模拟评估结果
早在今年2月,DeepMind就已经推出AlphaCode,并默默参加了多场编程比赛。外媒GIZMODO报道称,在测试中,AlphaCode能够实现“近似人类水平的表现”,该模型通过预测代码段创建大量潜在解决方案,能解决竞赛中以前未见过的自然语言问题,该模型的整体性能相当于经过几个月到一年培训的“新手程序员”。
▲AlphaCode根据问题描述提供的解决方案
AlphaCode生成代码示例:https://alphacode.deepmind.com/#layer=18,problem=114,token=79,heads=11111111111
论文链接:https://www.science.org/doi/10.1126/science.add8258
01.从理解到解决问题AI写代码能力近似人类
为不可预见的问题创造解决方案是人工智能发展的第二路径。目前,机器学习的相关研发在生成和理解文本数据方面取得了巨大进步,但在解决问题方面的进展仍然局限于相对简单的数学和编程问题,或者检索和复制现有解决方案。
因此,DeepMind构建了AlphaCode系统,该系统可以解决需要批判性思维、逻辑、算法、编码和自然语言理解能力相结合的新问题。
AlphaCode并没有内置关于计算机代码结构的知识,而是依靠完全的“数据驱动”方法来编写代码。也就是说,该模型通过观察大量现有代码,来学习计算机程序的结构,基于机器学习模型LLM,AlphaCode就可以通过一次次预测给定问题描述中的单个字符,来进行学习。
为了评估这一模型的表现,AlphaCode模拟参与了Codeforces的10场比赛。这些比赛的难度在于,参与者不可能通过复制以前见过的解决方案或尝试每一种可能相关的算法等捷径来解决问题。因此,为了赢得比赛,AlphaCode必须创造新颖有趣的解决方案。
在生成大量解决方案之后,AlphaCode会将它们过滤到最多10个解决方案。
▲AlphaCode编程处理过程
研究人员称,在这些比赛中解决问题的能力,已经超过了现在AI系统的能力。
从AlphaCode在比赛中的排名来看,这一模型的表现可能并不突出。但研究人员谈道,在编码比赛中取得成功是非常困难的。
面对没有见过的编码问题,AlphaCode必须首先理解自然语言中的复杂编码问题,然后对不可预见的问题进行“推理”,而不是简单地记住代码片段。研究人员认为,没有任何证据表明他们的模型只是简单从训练数据中复制了核心框架。
02.10000多个文本预训练整合候选解决方案
AlphaCode在竞争性编程任务中优于其他系统的原因在于预训练和候选解决方案。
研发人员为该模型构建了CodeContest数据集,该数据集由约13500个竞争性编程问题的说明性文本、所需输入输出对的简单测试用例以及跨几种变成语言的问题潜在解决方案组成。
此外,还有GitHub中没有问题描述且包含多种语言的非结构化字符对这一模型进行训练。
▲研发人员通过数据集对AlphaCode进行预训练
在评估过程中,研发人员还发现,该模型为问题生成单个解决方案代码的性能很差,因此AlphaCode会生成大量候选解决方案,并通过简单测试进行再次过滤,整合相似的解决方案,避免重复,以增加潜在解决方案的多样性。
该模型也有明显的局限性,它可以高效记忆数据集中的解决方案,然后重新排列输出这些模式,这就导致模型对潜在问题可能并没有真正理解,只是在盲目模仿输出。
从综合表现来看,AlphaCode的表现确实在编码领域展现出了潜力。卡内基梅隆大学博世人工智能中心教授J. Zico Kolter在一篇博文中写道:“最终,AlphaCode在应对前所未见的编码挑战时表现出色,无论它‘真正’理解任务的程度如何。”
03.早期仍是AI辅助生成代码代码所有权引争议
AlphaCode并不是唯一一个考虑到编码开发的AI模型。
此前,OpenAI已经对其GPT-3自然语言模型进行了调整,以创建一个可以帮助代码行自动完成的功能。GitHub也有自己的AI编程工具Copilot。然而,这两个程序在解决复杂的竞争问题方面都没有表现出与人类竞争的实力。
现在,AI在编写代码方面的应用仍处于AI辅助代码生成的相对早期阶段,但AlphaCode在竞赛中的表现展示了深度学习模型在解决这类不能依靠单纯复制、学习此前的事例,而是需要批判性思维、逻辑判断等任务的巨大潜力。
研究人员称,除了提高总体生产力外,AlphaCode还可以“让新一代开发人员更容易进行编程。” 在不断的发展中,AlphaCode有朝一日可能会对编程的文化产生影响,到那时,人类存在的意义是为了制定问题,然后由AI来解决这些问题。
与此同时,AI领域的一些批评者也在质疑许多AI模型在训练模拟过程中的实际效果。
就在上个月,一位名叫Matthew Butterick的程序员对微软旗下的GitHub提起了首起此类诉讼,称其Copilot AI助手工具在学习和测试阶段公然忽略或删除软件工程师提供的许可证。
Butterick认为,自由使用其他程序员的代码相当于“规模空前的软件盗版”。该诉讼的结果可能会决定AI开发人员未来在研发、改进模型方面的难易程度,因为,此前开发人员可以使用人类代码来训练模型。
04.结语:AI解决问题能力释放巨大潜力
相比于复杂棋盘游戏中的AI模型,AlphaCode在比赛中的表现都不够惊艳,但其预示着AI模型在解决问题能力方面的巨大进步。DeepMind的研究团队坚信,这仅仅是一个开始。AI模型在代码编写领域为研发人员留下了巨大的改进空间。DeepMind将继续这一探索,并希望进一步研究能够增强编程能力的工具,并更接近于能真正解决问题的AI。
来源:GIZMODO、Science、DeepMind