Google Brain的AI预测了之前编辑的代码

区块链2020-03-23 16:00:00
导读 可以预测未来源代码更改的AI可能对程序员来说是一个非常宝贵的工具,但这是一个尚未被研究人员完全征服的挑战。不过,Google Brain的一个

可以预测未来源代码更改的AI可能对程序员来说是一个非常宝贵的工具,但这是一个尚未被研究人员完全征服的挑战。不过,Google Brain的一个团队在Arxiv.org(“ 神经网络建模源代码编辑 ”)的预印纸中描述了一种很有前景的新方法,他们认为这种方法可以提供最好的整体性能和可扩展性。

“在任何时候,开发人员都会接近代码库,并考虑到一个或多个意图进行更改,”该论文的作者写道。“这是一个有趣的研究挑战,因为编辑模式不能仅仅根据编辑内容(插入或删除的内容)或编辑结果(应用编辑后的代码状态)来理解。需要根据变化与其所处状态的关系来理解编辑,并且准确地建模编辑序列需要学习过去编辑的表示,其允许模型概括模式并预测将来的编辑。 ”

为此,他们首先开发了两种表示来捕获意图信息,这些意图信息可以随着代码序列的长度“优雅地”扩展:显式表示,在序列中“实例化”编辑(在2D网格中表示为标记),以及隐式表示,实例化后续编辑。然后,他们构建了一个机器学习模型,可以捕获编辑与创建它们的上下文的关系,特别是通过编码初始代码和编辑,汇集所述上下文,以及预测下一个编辑及其位置。

为了衡量系统的普遍性,研究人员开发了一套合成数据集,其灵感来自可能在实际数据中出现的编辑,但经过简化后可以更清晰地解释结果。此外,他们从Google代码库的快照中编辑了大量编辑序列数据集,其中包含来自5,700名开发人员的800万次编辑,并将其划分为培训,开发和测试集。

在实验中,研究人员发现该模型可靠而准确地预测了需要进行编辑的位置,以及这些编辑的内容。他们认为该模型可以用于改进忽略编辑历史的自动完成系统,或预测开发人员在最近编辑后将执行的代码搜索查询。

“我们特别感兴趣的是模型只有在他们有信心时才会做出预测,这对于最终编辑建议系统的可用性非常重要,”该团队写道。“总的来说,我们可能想要预测开发人员下一步会做些什么。我们认为编辑历史包含重要的有用信息,本工作中提出的表述和模型是学习使用这些信息的良好起点。“

免责声明:本文由用户上传,如有侵权请联系删除!