Skip to main content
QUICK REVIEW

[论文解读] CrossBeam: Learning to Search in Bottom-Up Program Synthesis

Kensen Shi, Hanjun Dai|arXiv (Cornell University)|Mar 20, 2022
Software Engineering Research被引用 6
一句话总结

CrossBeam 提出了一种用于自底向上程序合成的神经搜索策略,通过利用完整的搜索上下文和执行结果,学习选择并组合先前探索过的程序来引导搜索。采用基于束的训练进行在线策略训练,其在字符串操作任务中的任务成功率比最先进方法高出62%,在先前方法失败的困难逻辑编程任务中实现了接近100%的成功率。

ABSTRACT

Many approaches to program synthesis perform a search within an enormous space of programs to find one that satisfies a given specification. Prior works have used neural models to guide combinatorial search algorithms, but such approaches still explore a huge portion of the search space and quickly become intractable as the size of the desired program increases. To tame the search space blowup, we propose training a neural model to learn a hands-on search policy for bottom-up synthesis, instead of relying on a combinatorial search algorithm. Our approach, called CrossBeam, uses the neural model to choose how to combine previously-explored programs into new programs, taking into account the search history and partial program executions. Motivated by work in structured prediction on learning to search, CrossBeam is trained on-policy using data extracted from its own bottom-up searches on training tasks. We evaluate CrossBeam in two very different domains, string manipulation and logic programming. We observe that CrossBeam learns to search efficiently, exploring much smaller portions of the program space compared to the state-of-the-art.

研究动机与目标

  • 为了解决程序合成过程中搜索空间的指数级膨胀问题,学习一种有效的搜索策略。
  • 改进现有基于学习的搜索方法,这些方法通常查询模型频率较低或忽略搜索上下文。
  • 通过利用执行结果和完整的搜索历史,实现实时、高效的神经引导搜索。
  • 使用其自身搜索过程的数据进行在线策略训练,避免分布偏移问题。
  • 在多样化领域中展示方法的有效性:字符串操作和归纳逻辑编程。

提出的方法

  • CrossBeam 使用自底向上的枚举式搜索策略,从输入和常量逐步构建程序。
  • 在每一步中,指针网络选择先前探索过的程序,使用领域特定语言(DSL)操作进行组合,由神经模型引导。
  • 神经模型将完整的搜索上下文——过去探索的程序及其执行结果——作为输入以做出决策。
  • 神经模型采用基于束的训练进行训练,损失函数基于在线策略搜索过程中向正确程序的进展。
  • 搜索维护一个已探索值的集合,并通过在选定参数列表上应用操作来生成新值。
  • 部分程序的执行结果被用于动态地指导和剪枝搜索空间。

实验结果

研究问题

  • RQ1在在线策略下训练的神经模型是否能比离线策略或低频查询方法更有效地引导自底向上程序合成?
  • RQ2结合完整的搜索上下文和执行结果是否能提升程序合成中的搜索效率和成功率?
  • RQ3持续查询的实时模型是否能降低有效分支因子并缓解指数级搜索膨胀?
  • RQ4CrossBeam 在硬性合成问题上的任务覆盖范围和成功率与最先进方法相比如何?
  • RQ5该方法是否能在字符串操作和逻辑编程等多样化领域中实现泛化?

主要发现

  • 在字符串操作领域,CrossBeam 在相同测试集上,于50,000个候选表达式内比Bustle多解决了62%的任务。
  • 在解空间较大的逻辑编程任务中,CrossBeam 实现了接近100%的成功率,而先前最先进方法的成功率为0%。
  • CrossBeam 显著减少了探索的程序空间比例,表明其搜索效率更高。
  • 模型的在线策略训练实现了训练与推理之间更好的对齐,避免了离线学习中常见的分布偏移问题。
  • 结合完整上下文和执行反馈的自底向上搜索,使CrossBeam能够从次优选择中恢复,并更有效地组合子程序。
  • 即使基础的自底向上枚举方法在归纳逻辑编程设置中也优于Metagol和Popper,表明搜索策略的重要性不亚于模型设计。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

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