Hierarchical Neural Program Synthesis

Program synthesis aims to automatically construct human-readable programs that satisfy given task specifications, such as input/output pairs or demonstrations. Recent works have demonstrated encouraging results in a variety of domains, such as string transformation, tensor manipulation, and describing behaviors of embodied agents. Most existing program synthesis methods are designed to synthesize programs from scratch, generating a program token by token, line by line. This fundamentally prevents these methods from scaling up to synthesize programs that are longer or more complex. In this work, we present a scalable program synthesis framework that instead synthesizes a program by hierarchically composing programs. Specifically, we first learn a task embedding space and a program decoder that can decode a task embedding into a program. Then, we train a high-level module to comprehend the task specification (e.g., input/output pairs or demonstrations) from long programs and produce a sequence of task embeddings, which are then decoded by the program decoder and composed to yield the synthesized program. We extensively evaluate our proposed framework in a string transformation domain with input/output pairs. The experimental results demonstrate that the proposed framework can synthesize programs that are significantly longer and more complex than the programs considered in prior program synthesis works. Website at https://thoughtp0lice.github.io/hnps_web/

[1]  Hung-yi Lee,et al.  Hierarchical Programmatic Reinforcement Learning via Learning to Compose Programs , 2023, arXiv.org.

[2]  M. Zaheer,et al.  Compositional Generalization and Decomposition in Neural Program Synthesis , 2022, ArXiv.

[3]  Cherepanov,et al.  Competition-level code generation with AlphaCode , 2022, Science.

[4]  S. Savarese,et al.  A Conversational Paradigm for Program Synthesis , 2022, ArXiv.

[5]  Joseph J. Lim,et al.  Learning to Synthesize Programs as Interpretable and Generalizable Policies , 2021, NeurIPS.

[6]  Rishabh Singh,et al.  Latent Programmer: Discrete Latent Codes for Program Synthesis , 2020, ICML.

[7]  Rishabh Singh,et al.  BUSTLE: Bottom-up program-Synthesis Through Learning-guided Exploration , 2020, ICLR.

[8]  N. E. Toklu,et al.  Program synthesis as latent continuous optimization: evolutionary search in neural embeddings , 2020, GECCO.

[9]  Armando Solar-Lezama,et al.  DreamCoder: growing generalizable, interpretable knowledge with wake–sleep Bayesian program learning , 2020, Philosophical Transactions of the Royal Society A.

[10]  Joseph J. Lim,et al.  Program Guided Agent , 2020, ICLR.

[11]  Kelsey R. Allen,et al.  Few-Shot Bayesian Imitation Learning with Logical Program Policies , 2019, AAAI.

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

[13]  Sanja Fidler,et al.  Synthesizing Environment-Aware Activities via Activity Sketches , 2019, 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR).

[14]  Nando de Freitas,et al.  Learning Compositional Neural Programs with Recursive Tree Search and Planning , 2019, NeurIPS.

[15]  Michael Burke,et al.  From explanation to synthesis: Compositional program induction for learning from demonstration , 2019, Robotics: Science and Systems.

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

[17]  Jiajun Wu,et al.  Learning to Describe Scenes with Programs , 2018, ICLR.

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

[19]  Hyeonwoo Noh,et al.  Neural Program Synthesis from Diverse Demonstration Videos , 2018, ICML.

[20]  Abhinav Verma,et al.  Programmatically Interpretable Reinforcement Learning , 2018, ICML.

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

[22]  Da Xiao,et al.  Improving the Universality and Learnability of Neural Programmer-Interpreters with Combinator Abstraction , 2018, ICLR.

[23]  Michael D. Ernst,et al.  NL2Bash: A Corpus and Semantic Parser for Natural Language Interface to the Linux Operating System , 2018, LREC.

[24]  Quoc V. Le,et al.  Neural Program Synthesis with Priority Queue Training , 2018, ArXiv.

[25]  Silvio Savarese,et al.  Neural Task Programming: Learning to Generalize Across Hierarchical Tasks , 2017, 2018 IEEE International Conference on Robotics and Automation (ICRA).

[26]  Dawn Xiaodong Song,et al.  Improving Neural Program Synthesis with Inferred Execution Traces , 2018, NeurIPS.

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

[28]  Jiajun Wu,et al.  Neural Scene De-rendering , 2017, 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR).

[29]  Lukasz Kaiser,et al.  Attention is All you Need , 2017, NIPS.

[30]  Dawn Xiaodong Song,et al.  Making Neural Programming Architectures Generalize via Recursion , 2017, ICLR.

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

[32]  Marc Brockschmidt,et al.  Differentiable Programs with Neural Libraries , 2016, ICML.

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

[34]  Lihong Li,et al.  Neuro-Symbolic Program Synthesis , 2016, ICLR.

[35]  Tim Rocktäschel,et al.  Programming with a Differentiable Forth Interpreter , 2016, ICML.

[36]  Lukasz Kaiser,et al.  Neural GPUs Learn Algorithms , 2015, ICLR.

[37]  Wojciech Zaremba,et al.  Learning Simple Algorithms from Examples , 2015, ICML.

[38]  Nando de Freitas,et al.  Neural Programmer-Interpreters , 2015, ICLR.

[39]  Quoc V. Le,et al.  Neural Programmer: Inducing Latent Programs with Gradient Descent , 2015, ICLR.

[40]  Alex Graves,et al.  Neural Turing Machines , 2014, ArXiv.