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.
翻译:DreamCoder 是一种归纳式程序综合系统,其在求解问题的同时,通过迭代的醒眠过程学习简化搜索。系统通过训练神经搜索策略来摊销搜索成本,从而减少搜索宽度,并有效地“编译”有用信息以跨任务组合程序解。此外,系统学习一个程序组件库,以更少的组件压缩和表达已发现的解,从而降低搜索深度。我们提出了一种新的库学习方法,该方法直接利用神经搜索策略,有效地“解编译”其摊销知识以提取相关程序组件。这提供了更强的摊销推理:为减少搜索宽度而学习的摊销知识现在也被用于减少搜索深度。我们将该方法与 DreamCoder 集成,在一系列领域上展示了更快的领域掌握能力与改进的泛化性能,特别是在可用示例解较少的情况下。