Neural Program Synthesis with a Differentiable Fixer
arXiv:2006.10924
Abstract
We present a new program synthesis approach that combines an encoder-decoder based synthesis architecture with a differentiable program fixer. Our approach is inspired from the fact that human developers seldom get their program correct on the first attempt, and perform iterative testing-based program fixing to get to the desired program functionality. Similarly, our approach first learns a distribution over programs conditioned on an encoding of a set of input-output examples, and then iteratively performs fix operations using the differentiable fixer. The fixer takes as input the original examples and the current program's outputs on example inputs, and generates a new distribution over the programs with the goal of reducing the discrepancies between the current program outputs and the desired example outputs. We train our architecture end-to-end on the RobustFill domain, and show that the addition of the fixer module leads to a significant improvement on synthesis accuracy compared to using beam search.
References in corpus (7)
- DeepCoder: Learning to Write Programs
- Neuro-Symbolic Program Synthesis
- Learning Program Embeddings to Propagate Feedback on Student Code
- Dynamic Neural Program Embedding for Program Repair
- Learning Continuous Semantic Representations of Symbolic Expressions
- Automatic Program Synthesis of Long Programs with a Learned Garbage Collector
- Learning to Infer Program Sketches