AAAI-17论文提出深度学习C语言修改器DeepFix:用人工智能加「;」

栏目: C · 发布时间: 8年前

内容简介:AAAI-17论文提出深度学习C语言修改器DeepFix:用人工智能加「;」

如果你是一个程序员,你一定体验过编译时报错的痛苦,有时候一个小错误可能就需要你很多时间检查许多代码才能找到。近日,印度科学研究所的几位研究者的一篇 AAAI-17 论文提出了一种用深度学习检测 C 语言代码中常见编程错误的方法 DeepFix,而且其不仅可以检测,还可以帮助修复。

论文原文请访问:https://www.aaai.org/ocs/index.php/AAAI/AAAI17/paper/view/14603/13921

AAAI-17论文提出深度学习 <a href='https://www.codercto.com/topics/20720.html'>C语言</a> 修改器DeepFix:用人工智能加「;」

自动修复编程错误的问题是软件工程领域一个非常活跃的研究主题。这个问题难度很大,因为修复单个错误也许就需要分析整个程序。在实际操作中,许多错误都是因为 程序员 对编程语言不熟练或没有注意细节所导致的。我们将这些错误称为常见编程错误(common programming errors)。它们类似于自然语言中的语法错误。编译器可以检测这样的错误,但它们得到的错误信息往往是不准确的。在这项成果中,我们提出了一种端到端的解决方案 DeepFix,其可以无需依赖任何外部 工具 来定位或修复,就可以修复一个程序中多个这样的错误。DeepFix 的核心是一个多层的序列到序列神经网络,带有注意(attention),其被训练用于预测错误的程序位置以及所需的正确写法。在一个由学生为 93 个编程任务编写的 6971 个错误 C 语言程序的集合中,DeepFix 可以完整修复其中 1881(27%)个,并且可以部分修复其中 1338(19%)个。

AAAI-17论文提出深度学习C语言修改器DeepFix:用人工智能加「;」

图 1:DeepFix 方法的示意图

AAAI-17论文提出深度学习C语言修改器DeepFix:用人工智能加「;」

图 2:DeepFix 的迭代式修复策略

表 1:数据集和结果汇总

AAAI-17论文提出深度学习C语言修改器DeepFix:用人工智能加「;」

我们提出的修复策略有几个优点:

  • 程序被完全呈现给该网络。识别和修复编程错误通常需要能够推断长期依赖(long term dependencies)的全局分析。该网络架构能够有选择地关注程序的任何部分,从而可以推理结构和语法约束来预测错误的位置和所需的修复。
  • 在输入和输出中包含行号,从而减小了粒度,并因此减小了预测任务的复杂度。
  • DeepFix 可以迭代式修复一个程序中的多个错误。
  • oracle 被用于跟踪进展以及防止出现没有帮助或任意的改变。
  • DeepFix 的修复策略是相当通用的。比如说,如果我们试图修复逻辑错误,我们可以使用一个带有测试套件(比如 oracle)的测试引擎。如果一个修复导致该程序能通过更多测试,那么该修复就会被接受。

AAAI-17论文提出深度学习C语言修改器DeepFix:用人工智能加「;」

图 3:在原始数据集上,错误程序中任务的减少

AAAI-17论文提出深度学习C语言修改器DeepFix:用人工智能加「;」

表 2:错误类型和对应原因的总结

AAAI-17论文提出深度学习C语言修改器DeepFix:用人工智能加「;」

图 4:排名前 4 的错误信息,以及在原始数据集上修复前后的错误信息的数量

AAAI-17论文提出深度学习C语言修改器DeepFix:用人工智能加「;」

图 5:在原始数据集上每次迭代之后的错误信息的数量

AAAI-17论文提出深度学习C语言修改器DeepFix:用人工智能加「;」

图 6:正确(圆圈)和不正确(三角形)程序的向量表示的 PCA 投影

AAAI-17论文提出深度学习C语言修改器DeepFix:用人工智能加「;」

表 3:种子数据集的固定长度和固定准确度 。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Practical Vim, Second Edition

Practical Vim, Second Edition

Drew Neil / The Pragmatic Bookshelf / 2015-10-31 / USD 29.00

Vim is a fast and efficient text editor that will make you a faster and more efficient developer. It’s available on almost every OS, and if you master the techniques in this book, you’ll never need an......一起来看看 《Practical Vim, Second Edition》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具