Discovering novel abstractions is important for human-level AI. We introduce an approach to discover higher-order abstractions, such as map, filter, and fold. We focus on inductive logic programming, which induces logic programs from examples and background knowledge. We introduce the higher-order refactoring problem, where the goal is to compress a logic program by introducing higher-order abstractions. We implement our approach in STEVIE, which formulates the higher-order refactoring problem as a constraint optimisation problem. Our experimental results on multiple domains, including program synthesis and visual reasoning, show that, compared to no refactoring, STEVIE can improve predictive accuracies by 27% and reduce learning times by 47%. We also show that STEVIE can discover abstractions that transfer to different domains
翻译:发现新的抽象对于实现人类级AI至关重要。我们提出了一种发现高阶抽象的方法,例如map、filter和fold。我们聚焦于归纳逻辑编程,该方法从示例和背景知识中推导出逻辑程序。我们引入了高阶重构问题,其目标是通过引入高阶抽象来压缩逻辑程序。我们将该方法在STEVIE中实现,该工具将高阶重构问题形式化为约束优化问题。我们在多个领域(包括程序合成和视觉推理)上的实验结果表明,与不进行重构相比,STEVIE可将预测准确率提高27%,并将学习时间减少47%。我们还展示了STEVIE能够发现可迁移至不同领域的抽象。