利用指令指针注意力图神经网络学习执行程序
机器学习
2020-10-27 v1
摘要
图神经网络(GNN)已成为学习软件工程任务(包括代码补全、缺陷发现和程序修复)的有力工具。它们受益于利用控制流图等程序结构,但不太适合程序执行等需要远多于 GNN 传播步数的顺序推理步骤的任务。另一方面,循环神经网络(RNN)非常适合长顺序推理链,但它们不能自然融入程序结构,且通常在上述任务上表现较差。我们的目标是兼取两者之长,为此引入了一种新颖的 GNN 架构——指令指针注意力图神经网络(IPA-GNN),其在利用控制流图学习执行程序的任务上实现了改进的系统化泛化。该模型源于将 RNN 视为在程序轨迹上运行、以分支决策为潜变量的考量。IPA-GNN 既可看作 RNN 模型的连续松弛,也可看作更贴合执行的 GNN 变体。为测试模型,我们提出了在利用控制流图学习执行上评估系统化泛化,该评估检验顺序推理与程序结构的使用。更实际地,我们在学习执行部分程序的任务上评估这些模型,这类似于在程序合成中将模型用作启发式函数的情况。结果表明,IPA-GNN 在两项任务上均优于多种 RNN 与 GNN 基线。
引用
@article{arxiv.2010.12621,
title = {Learning to Execute Programs with Instruction Pointer Attention Graph Neural Networks},
author = {David Bieber and Charles Sutton and Hugo Larochelle and Daniel Tarlow},
journal= {arXiv preprint arXiv:2010.12621},
year = {2020}
}
备注
Accepted at NeurIPS 2020