DreamCoder: bootstrapping inductive program synthesis with wake-sleep library learning

We present a system for inductive program synthesis called DreamCoder, which inputs a corpus of synthesis problems each specified by one or a few examples, and automatically derives a library of program components and a neural search policy that can be used to efficiently solve other similar synthesis problems. The library and search policy bootstrap each other iteratively through a variant of "wake-sleep" approximate Bayesian learning. A new refactoring algorithm based on E-graph matching identifies common sub-components across synthesized programs, building a progressively deepening library of abstractions capturing the structure of the input domain. We evaluate on eight domains including classic program synthesis areas and AI tasks such as planning, inverse graphics, and equation discovery. We show that jointly learning the library and neural search policy leads to solving more problems, and solving them more quickly.

[1]  Joshua B. Tenenbaum,et al.  Human-level concept learning through probabilistic program induction , 2015, Science.

[2]  Stephen Muggleton,et al.  Ultra-Strong Machine Learning: comprehensibility of programs learned with ILP , 2018, Machine Learning.

[3]  Rajeev Alur,et al.  SyGuS-Comp 2017: Results and Analysis , 2017, SYNT@CAV.

[4]  Geoffrey E. Hinton,et al.  The "wake-sleep" algorithm for unsupervised neural networks. , 1995, Science.

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

[6]  Benjamin C. Pierce,et al.  Types and programming languages: the next generation , 2003, 18th Annual IEEE Symposium of Logic in Computer Science, 2003. Proceedings..

[7]  David Detlefs,et al.  Simplify: a theorem prover for program checking , 2005, JACM.

[8]  Michael Stepp,et al.  Equality saturation: a new approach to optimization , 2009, POPL '09.

[9]  Richard S. Zemel,et al.  Prototypical Networks for Few-shot Learning , 2017, NIPS.

[10]  Sanjit A. Seshia Sciduction: Combining induction, deduction, and structure for verification and synthesis , 2012, DAC Design Automation Conference 2012.

[11]  Jonathan Evans Heuristic and analytic processes in reasoning , 1984 .

[12]  Armando Solar-Lezama,et al.  Library learning for neurally-guided Bayesian program induction , 2018, NIPS 2018.

[13]  Armando Solar-Lezama,et al.  Learning to Infer Program Sketches , 2019, ICML.

[14]  Armando Solar-Lezama,et al.  Program synthesis from polymorphic refinement types , 2015, PLDI.

[15]  Michael I. Jordan,et al.  Learning Programs: A Hierarchical Bayesian Approach , 2010, ICML.

[16]  Noah D. Goodman,et al.  Inducing Probabilistic Programs by Bayesian Program Merging , 2011, ArXiv.

[17]  Wojciech Zaremba,et al.  Domain randomization for transferring deep neural networks from simulation to the real world , 2017, 2017 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).

[18]  Sumit Gulwani,et al.  Automating string processing in spreadsheets using input-output examples , 2011, POPL '11.

[19]  Dileep George,et al.  Beyond imitation: Zero-shot task transfer on robots by learning concepts as cognitive programs , 2018, Science Robotics.

[20]  Kenichi Kurihara,et al.  Variational Bayesian Grammar Induction for Natural Language , 2006, ICGI.

[21]  Riccardo Poli,et al.  A Field Guide to Genetic Programming , 2008 .

[22]  Joshua B. Tenenbaum,et al.  Learning to learn generative programs with Memoised Wake-Sleep , 2020, UAI.

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

[24]  Isil Dillig,et al.  Synthesizing data structure transformations from input-output examples , 2015, PLDI.

[25]  Andrew Cropper,et al.  Playgol: learning programs through play , 2019, IJCAI.

[26]  Martin Stacey,et al.  Scientific Discovery: Computational Explorations of the Creative Processes , 1988 .

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

[28]  Stephen Muggleton,et al.  Meta-interpretive learning of higher-order dyadic datalog: predicate invention revisited , 2013, Machine Learning.

[29]  Joshua B. Tenenbaum,et al.  Bootstrap Learning via Modular Concept Discovery , 2013, IJCAI.

[30]  Shashank Srivastava,et al.  Learning Web-based Procedures by Reasoning over Explanations and Demonstrations in Context , 2020, ACL.

[31]  H. Simon,et al.  Scientific discovery as problem solving , 1981, Synthese.

[32]  Chris Quirk,et al.  Novel positional encodings to enable tree-based transformers , 2019, NeurIPS.

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

[34]  Robert John Henderson,et al.  Cumulative learning in the lambda calculus , 2013 .

[35]  S. Kay On the Nature of Expertise. , 1992 .

[36]  Philip Wadler,et al.  Comprehending monads , 1990, Mathematical Structures in Computer Science.

[37]  Stephen Muggleton,et al.  Bias reformulation for one-shot function induction , 2014, ECAI.

[38]  Oleksandr Polozov,et al.  Program Synthesis and Semantic Parsing with Learned Code Idioms , 2019, NeurIPS.

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

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

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

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

[43]  Doina Precup,et al.  Between MDPs and Semi-MDPs: A Framework for Temporal Abstraction in Reinforcement Learning , 1999, Artif. Intell..

[44]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1960, Commun. ACM.

[45]  Matthew J. Hausknecht,et al.  Neural Program Meta-Induction , 2017, NIPS.

[46]  Robin Milner,et al.  Principal type-schemes for functional programs , 1982, POPL '82.

[47]  Hod Lipson,et al.  Distilling Free-Form Natural Laws from Experimental Data , 2009, Science.

[48]  Oriol Vinyals,et al.  Synthesizing Programs for Images using Reinforced Adversarial Learning , 2018, ICML.

[49]  Paul J. Feltovich,et al.  Categorization and Representation of Physics Problems by Experts and Novices , 1981, Cogn. Sci..

[50]  Sumit Gulwani,et al.  FlashMeta: a framework for inductive program synthesis , 2015, OOPSLA.

[51]  Swarat Chaudhuri,et al.  HOUDINI: Lifelong Learning as Program Synthesis , 2018, NeurIPS.