Bayesian Program Learning by Decompiling Amortized Knowledge
Alessandro B. Palmarini, Christopher G. Lucas, N. Siddharth
TL;DR
This work addresses the challenge of combinatorial search in inductive program synthesis by introducing dream decompiling, a method that uses the neural recognition model's amortized knowledge to guide library chunking and reduce search depth. By formalizing a probabilistic criterion $p(c|f; \bm{\beta}_\text{D})$ and a caching measure $ ext{C}(q, \rho, f)$, the authors derive two variants (DreamDecompiler-Avg and DreamDecompiler-PC) that restructure the search space to complement the learned search policy. Empirical evaluation across six domains shows that dream decompiling improves held-out generalization and, in many cases, decreases search time, with notable gains when training data are limited. The approach offers a principled path to stronger bootstrapping in domain-general program synthesis by extracting high-value library components from amortized inference.
Abstract
DreamCoder is an inductive program synthesis system that, whilst solving problems, learns to simplify search in an iterative wake-sleep procedure. The cost of search is amortized by training a neural search policy, reducing search breadth and effectively "compiling" useful information to compose program solutions across tasks. Additionally, a library of program components is learnt to compress and express discovered solutions in fewer components, reducing search depth. We present a novel approach for library learning that directly leverages the neural search policy, effectively "decompiling" its amortized knowledge to extract relevant program components. This provides stronger amortized inference: the amortized knowledge learnt to reduce search breadth is now also used to reduce search depth. We integrate our approach with DreamCoder and demonstrate faster domain proficiency with improved generalization on a range of domains, particularly when fewer example solutions are available.
