Scaling Neural Program Synthesis with Distribution-based Search
This work addresses program synthesis for developers or AI systems, but it is incremental as it builds on existing probabilistic and neural methods.
The authors tackled the problem of automatically constructing computer programs from input-output examples by proposing distribution-based search, introducing Heap Search and SQRT Sampling algorithms, and demonstrating scalability with parallel compute environments.
We consider the problem of automatically constructing computer programs from input-output examples. We investigate how to augment probabilistic and neural program synthesis methods with new search algorithms, proposing a framework called distribution-based search. Within this framework, we introduce two new search algorithms: Heap Search, an enumerative method, and SQRT Sampling, a probabilistic method. We prove certain optimality guarantees for both methods, show how they integrate with probabilistic and neural techniques, and demonstrate how they can operate at scale across parallel compute environments. Collectively these findings offer theoretical and applied studies of search algorithms for program synthesis that integrate with recent developments in machine-learned program synthesizers.