Skip to main content
QUICK REVIEW

[论文解读] Learning to Infer Program Sketches

Maxwell Nye, Luke Hewitt|arXiv (Cornell University)|Feb 17, 2019
Software Engineering Research被引用 32
一句话总结

本文提出 SketchAdapt,一种神经符号程序合成系统,能够从输入-输出示例和自然语言规范中学习生成中间程序草图。通过在自监督训练目标下动态平衡神经模式识别与符号搜索,该模型在英语到代码任务中达到最先进性能,在记忆能力上与神经模型相当,在泛化能力上与符号方法相当。

ABSTRACT

Our goal is to build systems which write code automatically from the kinds of specifications humans can most easily provide, such as examples and natural language instruction. The key idea of this work is that a flexible combination of pattern recognition and explicit reasoning can be used to solve these complex programming problems. We propose a method for dynamically integrating these types of information. Our novel intermediate representation and training algorithm allow a program synthesis system to learn, without direct supervision, when to rely on pattern recognition and when to perform symbolic search. Our model matches the memorization and generalization performance of neural synthesis and symbolic search, respectively, and achieves state-of-the-art performance on a dataset of simple English description-to-code programming problems.

研究动机与目标

  • 开发一种领域通用的程序合成系统,结合神经模式识别与符号推理,用于编程示例和自然语言规范编程。
  • 使系统能够无需显式监督,学习在何时依赖模式识别与何时依赖符号搜索。
  • 提升数据效率并增强对样本外任务的泛化能力,特别是针对罕见或未见的子表达式。
  • 在复杂的真实世界编程任务(如 AlgoLisp)上验证该方法,这些任务中纯神经或符号方法均表现不佳。

提出的方法

  • 引入一种灵活的、领域通用的草图语法,使模型能够生成不同程度具体性的中间程序表示。
  • 采用学习得到的神经草图生成器,基于输入示例和自然语言描述生成草图。
  • 使用符号枚举式程序合成器,通过搜索填充孔位的可能实现方式来完成草图。
  • 应用一种新颖的自监督训练目标,鼓励模型根据任务难度学习适当的草图粒度。
  • 使用程序输出的对比学习与重建信号,端到端训练系统。
  • 支持动态适应:简单任务生成更完整的草图(神经主导),复杂任务生成更抽象的草图(符号主导)。

实验结果

研究问题

  • RQ1神经符号系统是否能在无显式监督的情况下学习平衡模式识别与符号推理?
  • RQ2该系统生成中间草图的能力如何影响其在样本外任务上的数据效率与泛化能力?
  • RQ3该系统是否能在需要同时具备记忆与泛化能力的英语到代码编程任务中实现最先进性能?
  • RQ4当训练中未出现时,系统对未见过的子表达式(如列表中的 'odd' 值)的泛化能力如何?
  • RQ5系统在输入-输出示例之外,能在多大程度上利用非结构化的自然语言规范?

主要发现

  • SketchAdapt 在 AlgoLisp 英语到代码数据集上达到最先进性能,优于基于 RNN 的基线模型与纯符号方法。
  • 在束搜索大小为 10 且使用全部训练数据时,SketchAdapt 实现接近完美的准确率,显著超过先前报告的 SOTA 结果。
  • 在较小的训练子集上,SketchAdapt 的泛化能力优于仅使用 'Generator' 的 RNN 基线,展现出更强的数据效率。
  • SketchAdapt 对 'odd' 子表达式表现出强大的零样本泛化能力,在 635 个包含 'odd' 的测试程序中成功解决,而 RNN 基线在此任务上完全失败。
  • 该模型对 'even' 程序也表现出有效泛化,显示出对已见与未见子表达式的稳健性。
  • 符号合成组件实现了强大的泛化能力,而神经组件确保了高记忆准确率,实现了先前模型无法匹敌的平衡。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。