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:种子数据集的固定长度和固定准确度 。


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

查看所有标签

猜你喜欢:

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

移动应用的设计与开发

移动应用的设计与开发

[美] 弗林 (Brian Fling) / 马晶慧 / 电子工业出版社 / 2010-5 / 59.80元

本书全面介绍了如何在移动设备上设计和开发应用程序。书中从介绍移动产业的生态环境和移动媒体开始,阐述产品策划的方法、产品架构、视觉设计和产品类型的选择,并详细描述了产品实现过程中所用到的一些技术、工具和概念,最后还简单介绍了如何获得利润和降低成本,肯定了iPhone在移动设备发展史上起到的巨大推动作用。本书不仅能让读者了解到移动设计和开发的知识,更重要的是,它揭示了移动开发的代价高昂、标准混乱的根本......一起来看看 《移动应用的设计与开发》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具