3 个月前

基于图的、从诊断反馈中进行自监督的程序修复

基于图的、从诊断反馈中进行自监督的程序修复

摘要

我们研究从诊断反馈(例如编译器错误信息)中学习程序修复的问题。程序修复面临两大挑战:其一,需要在源代码与诊断反馈之间进行符号的推理与追踪;其二,可用于程序修复的标注数据集规模相对较小。针对这两个挑战,本文提出两项创新解决方案。首先,我们引入一种程序-反馈图(program-feedback graph),将源代码与诊断反馈中与程序修复相关的符号进行关联建模,并在此基础上应用图神经网络(Graph Neural Network)来模拟修复过程中的推理机制。其次,我们提出一种自监督学习范式,利用网络上大量未标注的程序,生成海量额外的程序修复样本,用于预训练我们的模型。我们在两个应用场景中评估了所提出的方法:一是修复初学者编程作业(基于DeepFix数据集),二是修复程序合成系统的输出结果(基于SPoC数据集)。实验结果表明,我们提出的最终系统DrRepair显著优于现有方法,在DeepFix数据集上实现了68.2%的完整修复率(较之前最佳结果提升22.9%),在SPoC数据集上达到48.4%的合成成功率(较之前最佳结果提升3.7%)。

基准测试

基准方法指标
program-repair-on-deepfixDrRepair
Average Success Rate: 68.2
program-synthesis-on-spoc-testpDrRepair
Success rate @budget 100: 38.5
program-synthesis-on-spoc-testwDrRepair
Success rate @budget 100: 57.0

用 AI 构建 AI

从想法到上线——通过免费 AI 协同编程、开箱即用的环境和市场最优价格的 GPU 加速您的 AI 开发

AI 协同编程
即用型 GPU
最优价格
立即开始

Hyper Newsletters

订阅我们的最新资讯
我们会在北京时间 每周一的上午九点 向您的邮箱投递本周内的最新更新
邮件发送服务由 MailChimp 提供
基于图的、从诊断反馈中进行自监督的程序修复 | 论文 | HyperAI超神经