Skip to main content
QUICK REVIEW

[论文解读] Program Synthesis Through Reinforcement Learning Guided Tree Search

Riley Simmons-Edler, Anders Miltner|arXiv (Cornell University)|Jun 8, 2018
Software Engineering Research参考文献 20被引用 3
一句话总结

该论文提出了一种新型程序合成方法——强化学习引导的树搜索(RLGTS),将程序生成建模为通过强化学习求解的马尔可夫决策过程,并引入优先搜索树以避免局部最优。RLGTS在性能上优于当前最先进基线方法,在所有测试程序长度下,其解决问题的数量至少是次优方法的两倍,且在使用树搜索组件时,相较于纯强化学习基线,性能提升达70–100%。

ABSTRACT

Program Synthesis is the task of generating a program from a provided specification. Traditionally, this has been treated as a search problem by the programming languages (PL) community and more recently as a supervised learning problem by the machine learning community. Here, we propose a third approach, representing the task of synthesizing a given program as a Markov decision process solvable via reinforcement learning(RL). From observations about the states of partial programs, we attempt to find a program that is optimal over a provided reward metric on pairs of programs and states. We instantiate this approach on a subset of the RISC-V assembly language operating on floating point numbers, and as an optimization inspired by search-based techniques from the PL community, we combine RL with a priority search tree. We evaluate this instantiation and demonstrate the effectiveness of our combined method compared to a variety of baselines, including a pure RL ablation and a state of the art Markov chain Monte Carlo search method on this task.

研究动机与目标

  • 解决现有程序合成方法依赖大规模标注数据集或假设特定语言结构的局限性。
  • 结合强化学习与基于搜索的合成方法的优势,以提升在领域特定语言上的可扩展性与泛化能力。
  • 在保持从输入/输出示例中高效生成正确程序的成功率的同时,减少对监督预训练的依赖。
  • 提升程序合成中的样本效率与鲁棒性,特别是在真实程序长度未知或估计不佳的情况下。
  • 通过避免对语言可微性或训练数据可用性的假设,实现与现有编程语言技术的集成。

提出的方法

  • 该论文将程序合成建模为马尔可夫决策过程(MDP),其中状态表示部分程序,动作表示代码行,奖励基于部分正确性。
  • 通过强化学习训练深度Q网络(DQN),学习一个策略,以选择动作(代码行)来最大化累积奖励,最终生成正确程序。
  • 集成优先搜索树以引导探索,优先选择更可能导向正确解的路径,从而减少在局部最优中的停留时间。
  • 该方法无需可微语言构造或大规模训练数据集,仅依赖可执行的部分程序和奖励函数。
  • 在RISC-V汇编语言中针对浮点运算的子集进行评估,性能通过成功率和样本效率衡量。
  • 该框架设计为可与编程语言社区现有的合成技术组合使用,支持混合解决方案。

实验结果

研究问题

  • RQ1强化学习能否在不依赖大规模标注数据集或可微语言特征的前提下,有效应用于程序合成?
  • RQ2将强化学习与优先搜索树结合,相较于纯强化学习或标准搜索方法,如何提升程序合成中的样本效率与成功率?
  • RQ3当真实程序长度存在不确定性时,该方法对搜索深度上限超过真实长度的情况有多强的鲁棒性?
  • RQ4该方法在不同程序长度和动作空间复杂度下的泛化能力如何?
  • RQ5在不同搜索深度和指令集约束下,RLGTS与最先进的基于搜索的方法(如MCMC)相比表现如何?

主要发现

  • 在所有测试程序长度下,RLGTS解决问题的数量至少是最佳基线(多臂赌博机)的两倍。
  • 优先搜索树的集成使性能相比仅使用Q函数的纯强化学习消融实验提升70–100%。
  • 当搜索深度严格限定在真实程序长度时,MCMC表现具有竞争力,但当上限超出真实长度3行时,其性能下降50–80%。
  • 当动作空间被限制在2–3条指令时,RLGTS仍能保持40–50%的成功率,而MCMC在20,000次尝试内无法解决任何含4条及以上指令的程序。
  • 在100万次尝试的限制下,MCMC仅在2条指令的程序上与RLGTS持平,且无法解决任何含17条指令的程序,而RLGTS能高效解决约9%的此类程序。
  • 约30%的生成程序具有凸奖励结构,这类问题可被最优优先搜索轻松解决,但由于在人工编写的程序中较为罕见,因此被过滤掉。

更好的研究,从现在开始

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

无需绑定信用卡

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