Learning to Reason via Program Generation, Emulation, and Search

📄 arXiv: 2405.16337v3 📥 PDF

作者: Nathaniel Weir, Muhammad Khalifa, Linlu Qiu, Orion Weller, Peter Clark

分类: cs.CL, cs.AI

发布日期: 2024-05-25 (更新: 2024-11-03)

备注: NeurIPS 2024 camera ready

🔗 代码/项目: GITHUB


💡 一句话要点

提出CoGEX,通过程序生成、模拟执行和搜索,扩展语言模型的推理能力。

🎯 匹配领域: 支柱一:机器人控制 (Robot Control)

关键词: 程序生成 语言模型 推理 伪程序 模拟执行 程序搜索 常识推理

📋 核心要点

  1. 现有语言模型在算法符号操作任务中表现出色,但在常识推理等任务中难以应用代码合成。
  2. CoGEX通过生成伪程序、模拟程序执行并利用语言模型的知识填补执行空白,从而扩展推理能力。
  3. 实验表明,CoGEX在算法和软推理任务上均优于上下文学习方法,证明了代码合成的广泛适用性。

📝 摘要(中文)

本文提出了一种名为Code Generation and Emulated EXecution (CoGEX) 的方法,旨在扩展语言模型(LM)的程序合成技能到常识推理、道德决策和讽刺理解等任务。CoGEX通过以下步骤实现:(1) 训练LM生成伪程序,即包含未定义叶函数调用的Python程序;(2) 教导LM模拟其生成的程序的执行,包括那些叶函数,从而利用LM的知识填补执行中的空白;(3) 使用LM搜索多个程序以找到最优程序。为了使CoGEX模型适应新任务,本文提出了一种程序搜索方法,用于寻找单个程序,该程序在应用于给定数据集的所有实例时,其伪执行能够产生最佳性能。实验结果表明,与标准的上下文学习方法相比,CoGEX在算法和软推理任务上都取得了显著的改进。该结果表明,代码合成可以应用于比以前认为的更广泛的问题。本文发布了数据集、微调模型和实现代码。

🔬 方法详解

问题定义:现有语言模型在程序合成方面取得了显著进展,但其应用主要集中在算法和符号操作等领域。对于涉及常识、道德判断等“软推理”任务,由于难以直接用代码表达,现有方法面临挑战。因此,如何扩展语言模型的程序合成能力,使其能够处理更广泛的推理任务,是本文要解决的核心问题。

核心思路:本文的核心思路是利用“伪程序”作为桥梁,将语言模型的知识与程序执行过程相结合。具体而言,通过生成包含未定义叶函数调用的程序,并让语言模型模拟这些函数的执行,从而将模型的知识融入到程序执行中。这种方法允许模型在程序执行过程中进行推理,而不仅仅是生成最终结果。

技术框架:CoGEX框架包含三个主要阶段:(1) 伪程序生成:训练语言模型生成包含未定义叶函数调用的Python程序;(2) 模拟执行:训练语言模型模拟生成的程序的执行过程,包括未定义的叶函数,利用语言模型的知识填补执行中的空白;(3) 程序搜索:使用语言模型搜索多个程序,并根据其在数据集上的性能选择最优程序。为了适应新任务,本文提出了一种程序搜索方法,寻找在所有实例上产生最佳性能的单个程序。

关键创新:CoGEX的关键创新在于引入了“伪程序”和“模拟执行”的概念。通过伪程序,可以将复杂的推理任务分解为一系列可执行的步骤,并允许语言模型在执行过程中进行推理。模拟执行则利用语言模型的知识填补程序执行中的空白,从而使模型能够处理那些难以直接用代码表达的推理任务。

关键设计:在伪程序生成阶段,需要设计合适的程序结构和叶函数调用方式,以便语言模型能够有效地进行模拟执行。在模拟执行阶段,需要设计合适的损失函数,以鼓励模型生成与实际执行结果一致的输出。在程序搜索阶段,需要设计高效的搜索算法,以在大量程序中找到最优程序。此外,如何选择合适的语言模型和训练数据也是关键的设计因素。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,CoGEX在算法和软推理任务上都取得了显著的改进。与标准的上下文学习方法相比,CoGEX在多个任务上实现了大幅提升,证明了其有效性。具体性能数据和对比基线在论文中详细给出,表明CoGEX能够有效扩展语言模型的推理能力。

🎯 应用场景

CoGEX具有广泛的应用前景,可应用于常识推理、道德决策、讽刺理解等领域。该方法可以提升机器在复杂情境下的理解和推理能力,从而在智能客服、自动驾驶、智能助手等领域发挥重要作用。未来,CoGEX有望成为构建更智能、更人性化人工智能系统的关键技术。

📄 摘要(原文)

Program synthesis with language models (LMs) has unlocked a large set of reasoning abilities; code-tuned LMs have proven adept at generating programs that solve a wide variety of algorithmic symbolic manipulation tasks (e.g. word concatenation). However, not all reasoning tasks are easily expressible as code, e.g. tasks involving commonsense reasoning, moral decision-making, and sarcasm understanding. Our goal is to extend an LM's program synthesis skills to such tasks and evaluate the results via pseudo-programs, namely Python programs where some leaf function calls are left undefined. To that end, we propose, Code Generation and Emulated EXecution (CoGEX). CoGEX works by (1) training LMs to generate pseudo-programs, (2) teaching them to emulate their generated program's execution, including those leaf functions, allowing the LM's knowledge to fill in the execution gaps; and (3) using them to search over many programs to find an optimal one. To adapt the CoGEX model to a new task, we introduce a method for performing program search to find a single program whose pseudo-execution yields optimal performance when applied to all the instances of a given dataset. We show that our approach yields large improvements compared to standard in-context learning approaches on a battery of tasks, both algorithmic and soft reasoning. This result thus demonstrates that code synthesis can be applied to a much broader class of problems than previously considered. Our released dataset, fine-tuned models, and implementation can be found at \url{https://github.com/nweir127/CoGEX}.