论文标题

忙碌:通过学习指导探索的自下而上的计划综合

BUSTLE: Bottom-Up Program Synthesis Through Learning-Guided Exploration

论文作者

Odena, Augustus, Shi, Kensen, Bieber, David, Singh, Rishabh, Sutton, Charles, Dai, Hanjun

论文摘要

程序合成的挑战很大,主要是因为在大量程序中搜索的困难。人类程序员通常通过编写子程序来编写复杂程序的任务,然后分析其中级结果以适当的方式组成它们。在这种直觉的激励下,我们提出了一种新的综合方法,该方法利用学习指导对程序的自下而上的搜索。特别是,我们训练模型以优先在给定的输入输出示例的搜索过程中确定中间值的组成。这是一个强大的组合,因为有几种新兴属性。首先,在自下而上的搜索中,可以执行中间程序,向神经网络提供语义信息。其次,鉴于这些执行的具体值,我们可以根据属性签名的最新工作来利用丰富的功能。最后,自下而上的搜索允许系统具有实质性的灵活性,以生成解决方案的顺序,从而使合成器可以从多个较小的子程序中构建程序。总体而言,我们的经验评估发现,即使采用简单的监督学习方法,学习和自下而上的搜索结合也非常有效。我们在两个数据集上演示了我们的技术的有效性,一个来自Sygus竞争和我们自己的创作之一。

Program synthesis is challenging largely because of the difficulty of search in a large space of programs. Human programmers routinely tackle the task of writing complex programs by writing sub-programs and then analyzing their intermediate results to compose them in appropriate ways. Motivated by this intuition, we present a new synthesis approach that leverages learning to guide a bottom-up search over programs. In particular, we train a model to prioritize compositions of intermediate values during search conditioned on a given set of input-output examples. This is a powerful combination because of several emergent properties. First, in bottom-up search, intermediate programs can be executed, providing semantic information to the neural network. Second, given the concrete values from those executions, we can exploit rich features based on recent work on property signatures. Finally, bottom-up search allows the system substantial flexibility in what order to generate the solution, allowing the synthesizer to build up a program from multiple smaller sub-programs. Overall, our empirical evaluation finds that the combination of learning and bottom-up search is remarkably effective, even with simple supervised learning approaches. We demonstrate the effectiveness of our technique on two datasets, one from the SyGuS competition and one of our own creation.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源