Capturing Sparks of Abstraction for the ARC Challenge
作者: Martin Andrews
分类: cs.CL, cs.AI, cs.LG
发布日期: 2024-11-17
备注: Submitted as a paper entry for the 2024 ARC Prize
💡 一句话要点
利用LLM从ARC挑战代码解决方案中提取抽象逻辑,提升问题理解能力
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 抽象推理 大型语言模型 代码理解 程序生成 元学习
📋 核心要点
- 现有方法在ARC挑战中准确率提升受限,大型语言模型难以有效理解问题。
- 论文核心在于利用LLM理解代码解决方案,提取不同抽象层次的问题解决逻辑。
- 通过开源的arc-dsl-llm框架和Gemini LLM生成数据,促进下游任务研究。
📝 摘要(中文)
在解决抽象推理挑战(ARC)问题方面,最近取得了显著进展。然而,要将准确率提升到60%以上,可能需要新的技术。即使是商业大型语言模型(LLM)在给定输入和输出网格时,也很难“理解”许多问题,这使得通过LLM引导的程序搜索来发现解决方案变得有些徒劳。本研究尝试从更强的起点进行LLM“理解”:首先向LLM提供任务的完整代码解决方案,然后要求它解释如何在不同抽象层次上解决任务。具体来说,向LLM提供以arc-dsl-llm(Hodel的arc-dsl的LLM可读版本)实现的代码解决方案,以获得:(a)带注释的代码;(b)重构为可重用功能块的代码;(c)问题解决步骤;(d)高层次的问题解决策略。我们证明了可以从LLM输出中提取“抽象火花”,这种形式可以用于有资格参加ARC奖的本地LLM的下游任务。arc-dsl-llm DSL框架(带有重新设计的解决方案)和Gemini LLM生成的数据(以及生成代码)均已开源。
🔬 方法详解
问题定义:论文旨在解决抽象推理挑战(ARC)中,现有方法难以突破60%准确率瓶颈的问题。现有方法,包括直接使用大型语言模型(LLM)理解输入输出网格并进行程序搜索,在理解问题的本质和抽象逻辑方面存在困难,导致搜索效率低下。
核心思路:论文的核心思路是让LLM从已知的代码解决方案中学习,通过分析代码的结构、注释、重构以及问题解决步骤,提取不同层次的抽象逻辑。这种方法将LLM的学习重点从直接理解问题本身,转移到理解解决问题的过程,从而提高LLM对问题的理解能力。
技术框架:整体框架包含以下几个主要阶段:1) 使用arc-dsl-llm DSL编写ARC问题的代码解决方案。2) 将代码解决方案输入LLM(Gemini)。3) 指示LLM生成带注释的代码、重构后的代码、问题解决步骤以及高层次的问题解决策略。4) 从LLM的输出中提取“抽象火花”,即问题的关键抽象逻辑。5) 将提取的“抽象火花”用于下游任务,例如使用本地LLM解决新的ARC问题。
关键创新:论文的关键创新在于利用LLM从代码解决方案中提取抽象逻辑。与以往直接让LLM理解问题本身的方法不同,该方法通过让LLM学习解决问题的过程,从而提高其对问题的理解能力。此外,论文还开源了arc-dsl-llm DSL框架和Gemini LLM生成的数据,为后续研究提供了便利。
关键设计:arc-dsl-llm DSL的设计目标是使代码更易于LLM理解。具体的技术细节包括:使用清晰的变量名和函数名,添加详细的注释,将代码分解为可重用的功能块。LLM的选择上,论文使用了Gemini,并针对ARC问题进行了微调。在提示工程方面,论文设计了特定的提示语,引导LLM生成不同层次的抽象解释。
🖼️ 关键图片
📊 实验亮点
论文展示了从LLM输出中提取“抽象火花”的可行性,并开源了arc-dsl-llm DSL框架和Gemini LLM生成的数据。虽然论文没有给出具体的性能数据,但为后续研究提供了一个新的方向,即利用LLM理解代码解决方案来提升问题理解能力。
🎯 应用场景
该研究成果可应用于提升AI在抽象推理、程序理解和代码生成等领域的性能。通过提取代码中的抽象逻辑,可以帮助AI更好地理解复杂问题,并生成更有效、更可靠的解决方案。此外,该方法还可以用于教育领域,帮助学生更好地理解编程概念和问题解决策略。
📄 摘要(原文)
Excellent progress has been made recently in solving ARC Challenge problems. However, it seems that new techniques may be required to push beyond 60% accuracy. Even commercial Large Language Models (LLMs) struggle to 'understand' many of the problems (when given the input and output grids), which makes discovering solutions by LLM-lead program search somewhat futile. In this work, LLM 'understanding' is attempted from a stronger starting position : An LLM is given complete solutions to tasks in code, and then asked to explain how the task is being solved at various levels of abstraction. Specifically, the LLM was given code solutions implemented in arc-dsl-llm (an LLM-legible version of Hodel's arc-dsl to obtain: (a) commented code; (b) code refactored into reusable functional chunks; (c) problem solution steps; and (d) high-level problem-solving tactics. We demonstrate that 'Sparks of Abstraction' can be extracted from the LLM output - in a form that could be used in downstream tasks with Local LLMs eligible to enter the ARC Prize. Both the arc-dsl-llm DSL framework (with the re-engineered solutions) and the Gemini LLM-generated data (along with the generation code) are made Open Source.