[论文解读] Write, Execute, Assess: Program Synthesis with a REPL
本文提出了一种神经程序合成框架,通过 REPL(读取-求值-打印循环)集成代码编写、执行与评估,以探索程序的语义空间。通过结合策略网络进行动作选择、价值函数进行长期评估,以及基于执行反馈的顺序蒙特卡洛搜索,该方法在复杂文本编辑和 3D/2D 图形程序的合成上,相比以往方法实现了更快、更可靠的性能。
We present a neural program synthesis approach integrating components which write, execute, and assess code to navigate the search space of possible programs. We equip the search process with an interpreter or a read-eval-print-loop (REPL), which immediately executes partially written programs, exposing their semantics. The REPL addresses a basic challenge of program synthesis: tiny changes in syntax can lead to huge changes in semantics. We train a pair of models, a policy that proposes the new piece of code to write, and a value function that assesses the prospects of the code written so-far. At test time we can combine these models with a Sequential Monte Carlo algorithm. We apply our approach to two domains: synthesizing text editing programs and inferring 2D and 3D graphics programs.
研究动机与目标
- 为解决程序合成中的语义敏感性问题,即微小的语法变化可能引发巨大的语义偏移。
- 使神经智能体能够通过交错编写、执行与评估部分程序,模拟人类的编程工作流。
- 通过将搜索建立在执行状态而非仅语法之上,提升程序合成的鲁棒性与效率。
- 在多样化领域中验证该框架的性能:文本编辑与 2D/3D 图形程序合成。
- 展示模型对训练分布之外的长程序的泛化能力,包括超过 40 个动作的程序。
提出的方法
- 该框架使用策略网络,基于当前部分程序及其执行状态,提出下一个代码标记或构造。
- 价值函数评估当前部分程序状态的长期潜力,引导搜索朝更有成效的方向前进。
- REPL 实时执行部分编写的程序,揭示其语义,并提供对正确性的即时反馈。
- 推理阶段使用顺序蒙特卡洛(SMC)搜索,通过策略采样动作,根据价值函数得分重新加权候选,剪枝无希望的分支。
- 系统通过基于执行结果而非程序语法的条件,实现对语义空间的随机搜索。
- 策略与价值网络通过在合成任务分布上的强化学习进行训练,奖励由程序正确性塑造。
实验结果
研究问题
- RQ1在神经程序合成中集成 REPL 是否能提升语义理解能力,并降低对语法噪声的敏感性?
- RQ2学习一种评估部分程序的价值函数是否能提升程序合成中的搜索效率与收敛性?
- RQ3基于编写、执行与评估代码的统一框架,能否在文本编辑与 3D 图形等多样化领域中实现泛化?
- RQ4与束搜索或滚动搜索相比,基于 SMC 的搜索结合执行反馈在合成准确率与效率方面表现如何?
- RQ5该模型在泛化能力方面能达到何种程度,能否处理训练时未见的长程序?
主要发现
- 价值引导的 SMC 采样器在具有挑战性的 87 个问题的文本编辑数据集上,正确程序数量最多,优于束搜索与滚动方法。
- 该系统成功合成出包含最多 40 个动作、描述长度超过 350 比特的程序,展示了其在训练限制(30 个动作)之外的强大分布外泛化能力。
- 使用价值函数的束搜索优于不使用价值函数的束搜索,证实了价值函数在提升搜索质量方面的作用。
- 该方法在保留的测试实例中始终能找到正确程序,例如将 'Dr James Watson' 正确转换为 'Watson, James (Dr)',以及将 '12/8/2019' 转换为 'date: 8 mo: 12 year: 2019'。
- REPL 的集成降低了模型对语法模式的依赖,使语义关系的学习更加稳健。
- 与 RobustFill 等基线方法相比,该框架在复杂、长格式转换任务中表现出更优的性能与更低的节点扩展次数。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。