The Abstraction and Reasoning Corpus (ARC) is a general artificial intelligence benchmark that is currently unsolvable by any Machine Learning method, including Large Language Models (LLMs). It demands strong generalization and reasoning capabilities which are known to be weaknesses of Neural Network based systems. In this work, we propose a Program Synthesis system that uses Inductive Logic Programming (ILP), a branch of Symbolic AI, to solve ARC. We have manually defined a simple Domain Specific Language (DSL) that corresponds to a small set of object-centric abstractions relevant to ARC. This is the Background Knowledge used by ILP to create Logic Programs that provide reasoning capabilities to our system. The full system is capable of generalize to unseen tasks, since ILP can create Logic Program(s) from few examples, in the case of ARC: pairs of Input-Output grids examples for each task. These Logic Programs are able to generate Objects present in the Output grid and the combination of these can form a complete program that transforms an Input grid into an Output grid. We randomly chose some tasks from ARC that dont require more than the small number of the Object primitives we implemented and show that given only these, our system can solve tasks that require each, such different reasoning.
翻译:抽象与推理语料库(ARC)是一个通用人工智能基准测试,目前尚无任何机器学习方法(包括大语言模型,LLMs)能够解决。它要求强大的泛化和推理能力,而这些正是基于神经网络系统的已知弱点。本研究提出了一种利用符号人工智能分支——归纳逻辑编程(ILP)的程序合成系统来解决ARC问题。我们手动定义了一个简单的领域特定语言(DSL),该语言对应于与ARC相关的少量以对象为中心的抽象概念。这是ILP用于创建逻辑程序的背景知识,为我们的系统提供推理能力。由于ILP能够从少量样本(在ARC场景下即每个任务的输入-输出网格示例对)中创建逻辑程序,整个系统具备泛化至未见任务的能力。这些逻辑程序能够生成输出网格中的对象,并通过组合这些对象形成完整的程序,将输入网格转换为输出网格。我们从ARC中随机选取了不超出已实现对象基元简单数量的任务进行测试,结果表明,仅凭这些基元,我们的系统就能解决需要不同推理能力的各类任务。