Scaling Neural Program Synthesis with Distribution-based Search

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.

[1]  Rajeev Alur,et al.  Search-based program synthesis , 2018, Commun. ACM.

[2]  Armando Solar-Lezama,et al.  Write, Execute, Assess: Program Synthesis with a REPL , 2019, NeurIPS.

[3]  William E. Byrd,et al.  Leveraging Constraint Logic Programming for Neural Guided Program Synthesis , 2018, ICLR.

[4]  Dawn Song,et al.  Execution-Guided Neural Program Synthesis , 2018, ICLR.

[5]  Illia Polosukhin,et al.  Neural Program Search: Solving Programming Tasks from Description and Examples , 2018, ICLR.

[6]  Sebastian Nowozin,et al.  DeepCoder: Learning to Write Programs , 2016, ICLR.

[7]  Alastair J. Walker,et al.  An Efficient Method for Generating Discrete Random Variables with General Distributions , 1977, TOMS.

[8]  Rajeev Alur,et al.  Accelerating search-based program synthesis using learned probabilistic models , 2018, PLDI.

[9]  Armando Solar-Lezama,et al.  DreamCoder: bootstrapping inductive program synthesis with wake-sleep library learning , 2021, PLDI.

[10]  Charles Sutton,et al.  Incremental Sampling Without Replacement for Sequence Models , 2020, ICML.

[11]  Jimmy Ba,et al.  Adam: A Method for Stochastic Optimization , 2014, ICLR.

[12]  Butler W. Lampson,et al.  A Machine Learning Framework for Programming by Example , 2013, ICML.

[13]  Isil Dillig,et al.  Program synthesis using conflict-driven learning , 2017, PLDI.

[14]  Pushmeet Kohli,et al.  RobustFill: Neural Program Learning under Noisy I/O , 2017, ICML.

[15]  Sumit Gulwani,et al.  Neural-Guided Deductive Search for Real-Time Program Synthesis from Examples , 2018, ICLR.

[16]  Nathanael Fijalkow,et al.  Data Generation for Neural Programming by Example , 2020, AISTATS.

[17]  Matthew J. Hausknecht,et al.  Leveraging Grammar and Reinforcement Learning for Neural Program Synthesis , 2018, ICLR.

[18]  Zhiyi Chi,et al.  Statistical Properties of Probabilistic Context-Free Grammars , 1999, CL.

[19]  C. Cordell Green,et al.  What Is Program Synthesis? , 1985, J. Autom. Reason..

[20]  R. Solomonoff A SYSTEM FOR INCREMENTAL LEARNING BASED ON ALGORITHMIC PROBABILITY , 1989 .

[21]  Lior Wolf,et al.  Automatic Program Synthesis of Long Programs with a Learned Garbage Collector , 2018, NeurIPS.

[22]  TF-Coder: Program Synthesis for Tensor Manipulations , 2020, ACM Transactions on Programming Languages and Systems.

[23]  Yoshua Bengio,et al.  Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation , 2014, EMNLP.

[24]  Max Welling,et al.  Stochastic Beams and Where to Find Them: The Gumbel-Top-k Trick for Sampling Sequences Without Replacement , 2019, ICML.

[25]  Rajeev Alur,et al.  Syntax-guided synthesis , 2013, 2013 Formal Methods in Computer-Aided Design.