Learning from Self-Sampled Correct and Partially-Correct Programs

05/28/2022
by   Ansong Ni, et al.
0

Program synthesis aims to generate executable programs that are consistent with the user specification. While there are often multiple programs that satisfy the same user specification, existing neural program synthesis models are often only learned from one reference program by maximizing its log-likelihood. This causes the model to be overly confident in its predictions as it sees the single solution repeatedly during training. This leads to poor generalization on unseen examples, even when multiple attempts are allowed. To mitigate this issue, we propose to let the model perform sampling during training and learn from both self-sampled fully-correct programs, which yield the gold execution results, as well as partially-correct programs, whose intermediate execution state matches another correct program. We show that our use of self-sampled correct and partially-correct programs can benefit learning and help guide the sampling process, leading to more efficient exploration of the program space. Additionally, we explore various training objectives to support learning from multiple programs per example and find they greatly affect the performance. Experiments on the MathQA and GSM8K datasets show that our proposed method improves the pass@k performance by 3.1 to learning from a single reference program with MLE.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
05/11/2018

Leveraging Grammar and Reinforcement Learning for Neural Program Synthesis

Program synthesis is the task of automatically generating a program cons...
research
06/16/2017

A Coq-based synthesis of Scala programs which are correct-by-construction

The present paper introduces Scala-of-Coq, a new compiler that allows a ...
research
10/02/2021

ProTo: Program-Guided Transformer for Program-Guided Tasks

Programs, consisting of semantic and structural information, play an imp...
research
01/25/2020

CounterExample Guided Neural Synthesis

Program synthesis is the generation of a program from a specification. C...
research
07/30/2022

Fence Synthesis under the C11 Memory Model

The C/C++11 (C11) standard offers a spectrum of ordering guarantees on m...
research
07/28/2020

BUSTLE: Bottom-up program-Synthesis Through Learning-guided Exploration

Program synthesis is challenging largely because of the difficulty of se...
research
11/14/2017

Weakly-supervised Semantic Parsing with Abstract Examples

Semantic parsers translate language utterances to programs, but are ofte...

Please sign up or login with your details

Forgot password? Click here to reset