AlphaCode能替代人类程序员吗?网友:被替代也挺好,这样就可以少写代码多开会了
策划:冬梅
DeepMind 是最新的人工智能研究实验室。它推出了一个可以生成软件源代码的深度学习模型,成果令人印象深刻。该模型被称为 AlphaCode,基于 Transformer,与 OpenAI 在其代码生成模型中使用的架构是一样的。
编程是深度学习和大型语言模型颇有前途的应用之一。对编程人才日益增长的需求刺激业界发起了一场发展创作工具的竞赛,这些工具可以提升开发人员的生产力,并给非开发人员提供创造软件的工具。
而在这方面,AlphaCode 肯定给人留下了深刻印象。它已经成功解决了很多复杂的编程挑战,这些难题往往需要数小时的计划、编程和测试。有一天它可能会成为一个很好的工具,可以用来把问题描述变成实用的代码。
但它肯定没法和任何级别的人类程序员相提并论。这是一种完全不同的软件创建方法,其中没有人类的思维和直觉参与,所以是不完整的。
编程挑战描述的例子(来源:DeepMind)
AlphaCode 不是业内在这一领域唯一的成果,但它完成了一项非常复杂的任务。其他类似的系统专注于生成简短的代码片段,如一个函数或一个代码块,旨在执行一个小任务(例如建立一个 web 服务器或从 API 系统中提取信息)。虽然这些任务令人印象深刻,但当语言模型被暴露在足够大的源代码语料库中时,这些任务就变得微不足道了。
相比之下,AlphaCode 的目的是解决竞争性的编程问题。编程挑战的参与者必须阅读挑战描述,理解问题,将其转化为算法解决方案,用通用语言实现它,并针对一组有限的测试案例进行评估。最后,他们的结果是根据不在实现过程中的隐藏测试的性能来评估的。编程挑战还可以有其他条件,如时间和内存限制。
总体而言,参加编程挑战的机器学习模型必须生成整个程序,解决一个与它之前所见所有事物都不一样的问题。这比根据以前看到的例子合成一个源代码摘录要困难得多。
编程挑战解决方案的例子(来源:DeepMind)
AlphaCode 是大型语言模型在解决复杂问题方面取得进展的又一个例子。这种深度学习系统一般被称为序列到序列模型(seq2seq)。Seq2seq 算法将一串数值(字母、像素、数字等)作为输入,并生成另一串数值。这是许多自然语言任务(如机器翻译、文本生成和语音识别)中使用的方法。
根据 DeepMind 的论文,AlphaCode 使用了一个编码器 - 解码器 Transformer 架构。近年来,Transformer 变得特别流行,因为它们可以处理很大的数据序列,而对内存和计算的要求比它们的前辈,循环神经网络(RNN)和长短时记忆网络(LSTM)要少得多。
Transformer 网络结构
AlphaCode 的编码器部分为目标问题的自然语言描述创建一个数字表示。解码器部分接收由编码器生成的嵌入向量,并试图生成解决方案的源代码。
事实证明,Transformer 模型很擅长此类任务,特别是当它们被提供足够的训练数据和计算能力时更是如此。但比起把原始数据扔给超大型神经网络这样的暴力手段,在我看来,AlphaCode 的真正亮点更多归功于 DeepMind 的科学家在设计训练过程和生成及过滤其结果的算法方面展现出来的聪明才智。
为了创建 AlphaCode,DeepMind 的科学家使用了无监督预训练和有监督微调的组合。这通常被称为自监督学习,这种方法在没有足够的标记数据或数据注释昂贵且耗时的应用中变得很受欢迎。
在预训练阶段,AlphaCode 在从 GitHub 提取的 715 千兆字节的数据上进行无监督学习。该模型的训练过程是尝试预测语言或代码片段的缺失部分。这种方法的优点是,它不需要任何形式的注释;通过接触越来越多的样本,ML 模型逐渐变得更善于为文本和源代码的结构创建数字表示。
训练和应用 AlphaCode 的算法(来源:DeepMind)
之后预训练的模型在 CodeContests 上做微调,CodeContests 是由 DeepMind 团队创建的一个有注释的数据集。该数据集包含问题陈述、正确和错误的提交,以及从各种来源收集的测试案例——包括 Codeforces、Description2Code 和 IBM 的 CodeNet。该模型经过训练,可以将挑战的文本描述转化为源代码结果。它的结果用测试案例进行评估,并与正确提交的案例进行对比。
在创建数据集时,研究人员特别注意避免训练、验证和测试集之间的历史性重叠。这确保了 ML 模型在面临编程挑战时不会生成记忆性的结果。
一旦 AlphaCode 训练完成,它就会针对以前没有见过的问题进行测试。当 AlphaCode 处理一个新问题时,它会产生许多解决方案。然后,它使用一个过滤算法来选择最好的 10 个候选方案,并将它们提交到竞赛中。如果其中至少有一个是正确的,那么这个问题就被认为已经解决了。
根据 DeepMind 的 论文,AlphaCode 可以为每个问题生成数百万个样本,且它通常会生成成千上万的解决方案。然后 AlphaCode 对这些样本进行过滤,只留下那些通过了问题陈述中包含的测试的样本。根据论文,这一过程将删除大约 99% 的生成样本。但这样仍然会留下成千上万的有效样本。
为了优化样本选择过程,研究团队使用了一种聚类算法来将解决方案分为多个组。根据研究人员的说法,聚类过程倾向于将有效的解决方案组合在一起。这样就更容易找到一小部分有可能通过竞赛隐藏测试的候选者。
据 DeepMind 称,当在流行的 Codeforces 平台上的实际编程比赛中进行测试时,AlphaCode 在参赛者中平均排名是前 54%,考虑到编程挑战的难度,这样的结果非常令人印象深刻。
AlphaCode 的问题解析和代码生成过程的可视化(来源:DeepMind)
未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)大脑研究计划,构建互联网(城市)大脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。每日推荐范围未来科技发展趋势的学习型文章。目前线上平台已收藏上千篇精华前沿科技文章和报告。
如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 1 习近平拉美之行的三个“一” 7997608
- 2 微信或史诗级“瘦身” 内存有救了 7988520
- 3 男子求助如何打开亡父遗留14年手机 7871214
- 4 中国主张成为G20峰会的一抹亮色 7763967
- 5 中国对日本等国试行免签 7675964
- 6 7万余件儿童羽绒服里没有真羽绒 7506043
- 7 女生半裸遭男保洁刷卡闯入 酒店回应 7428407
- 8 70多辆小米SU7同一天撞墙撞柱 7346199
- 9 操纵股价 2人被证监会罚没近3.35亿 7296653
- 10 千年古镇“因网而变、因数而兴” 7188056