论文标题
合成,执行和调试:学习修复神经程序合成
Synthesize, Execute and Debug: Learning to Repair for Neural Program Synthesis
论文作者
论文摘要
深度学习技术的使用已从投入输出示例中取得了重大进展。但是,当程序语义变得更加复杂时,综合与规范一致的程序仍然是一个挑战。在这项工作中,我们提出了SED,这是一种神经程序生成框架,结合了综合,执行和调试阶段。 SED并没有纯粹依靠神经程序合成器来生成最终程序,而是首先使用神经程序合成器组件制作初始程序,然后利用神经程序调试器进行迭代修复生成的程序。调试器组件的集成使SED可以根据执行结果和规范修改程序,这类似于人类程序员的编码过程。在卡雷尔(Karel)上,一个具有挑战性的输入程序综合基准,SED将神经程序合成器本身的错误率降低了相当大的余量,并表现优于标准梁搜索解码。
The use of deep learning techniques has achieved significant progress for program synthesis from input-output examples. However, when the program semantics become more complex, it still remains a challenge to synthesize programs that are consistent with the specification. In this work, we propose SED, a neural program generation framework that incorporates synthesis, execution, and debugging stages. Instead of purely relying on the neural program synthesizer to generate the final program, SED first produces initial programs using the neural program synthesizer component, then utilizes a neural program debugger to iteratively repair the generated programs. The integration of the debugger component enables SED to modify the programs based on the execution results and specification, which resembles the coding process of human programmers. On Karel, a challenging input-output program synthesis benchmark, SED reduces the error rate of the neural program synthesizer itself by a considerable margin, and outperforms the standard beam search for decoding.