LOGIC-LM:使用符号求解器为大型语言模型提供忠实的逻辑推理11.22

LOGIC-LM:使用符号求解器为大型语言模型提供忠实的逻辑推理

  • 摘要
  • 1 引言
  • 2 相关工作
  • 3 LOGIC-LM
    • 3.1 Problem Formulator
    • 3.2 Symbolic Reasoner
    • 3.3 Self-Refiner
    • 3.4 结果解释器
  • 4 实验

LOGIC-LM:使用符号求解器为大型语言模型提供忠实的逻辑推理11.22_第1张图片

摘要

大型语言模型(LLM)已经显示出类似人类的推理能力,但仍然难以解决复杂的逻辑问题。本文介绍了一种新颖的框架 LOGIC-LM,它将LLM与符号求解器相集成,以提高逻辑问题的解决能力。我们的方法首先利用LLM将自然语言问题转化为符号表述。随后,确定性符号求解器对所表述的问题进行推理。我们还引入了一个自我求精模块,它利用符号求解器的错误消息来修改符号形式化。我们在五个逻辑推理数据集上展示了 LOGIC-LM 的有效性:ProofWriter、PrOntoQA、FOLIO、LogicalDeduction 和 AR-LSAT。平均而言,与单独使用带有标准提示的LLM相比,LOGIC-LM 的性能显着提高了 39.2%,与使用思维链提示的LLM相比,显着提高了 18.4%。我们的研究结果表明,LOGIC-LM 通过将LLM与符号逻辑相结合,为忠实的逻辑推理提供了一条有前途的途径。

1 引言

逻辑推理是一种认知过程,涉及使用证据、论证和逻辑来得出结论或做出判断。它在解决问题、决策和批判性思维的智能系统中发挥着核心作用。最近,大型语言模型(LLM)表现出了像人类一样“推理”的能力。当提示推理的逐步解释(“思想链”)或简单的提示“让我们一步一步思考”时,这些模型能够通过明确的推理步骤回答问题。

尽管LLM取得了进步,但他们仍然难以解决复杂的逻辑推理问题。最近的研究发现LLM偶尔会做出不忠实的推理,即得出的结论不遵循先前生成的推理链。虽然思想链可能会模仿人类的推理过程,但LLM的基本性质仍然是黑盒概率模型,缺乏保证推理准确性的机制。相比之下,符号推理引擎,例如专家系统,是忠实且透明的,因为推理基于符号表示的知识,并遵循符合逻辑原则的明确定义的推理规则。主要障碍是考虑到自然语言固有的歧义性和灵活性,如何准确地将问题转化为符号表示。这正是LLM的优势所在,使LLM成为符号求解器的有希望的补充。

这推动了我们对将LLM与符号推理相结合的神经符号方法的探索。如图 1 所示,我们提出LOGIC-LM,一个新颖的框架,将逻辑推理问题分解为三个阶段:问题表述、符号推理和结果解释。在问题表述过程中,LLM将问题的自然语言描述转换为适当的符号表述,识别问题陈述中存在的关键实体、事实和规则。随后,在符号推理阶段,确定性符号求解器对符号形式进行推理。最后,结果解释器解释输出并将其映射到正确答案。通过将LLM与符号求解器相结合,我们可以利用LLM强大的自然语言理解能力,使用符号表示精确地表示问题,同时还利用符号求解器提供的逻辑忠实性和透明度。为了提高符号解析的准确性,我们还结合了自我求精的思想,使用符号求解器的错误消息作为反馈来迭代修改生成的逻辑形式。

我们展示了 LOGIC-LM 在五个逻辑推理数据集上的适应性和有效性:ProofWriter 、PrOntoQA、FOLIO 、AR-LSAT ,以及来自 BigBench 的 LogicalDeduction 数据集。这些数据集涵盖了广泛的逻辑推理问题,包括:

  • 演绎推理问题
  • 一阶逻辑(FOL)推理问题
  • 约束满足问题(CSP)
  • 分析推理(AR)问题

我们集成了四种定制的符号推理工具针对这些问题:

  1. 逻辑编程引擎,通过前向/后向链接支持演绎推理;
  2. 基于 FOL 规则和事实得出新结论的 FOL 推理引擎,
  3. 为有限域上的 CSP 提供求解器的约束优化引擎,以及
  4. 解决分析推理问题的布尔可满足性问题 (SAT) 求解器。

我们的评估表明,将LLM与符号求解器相结合的策略比纯粹依靠LLM进行逻辑推理的效果明显更好,比标准提示平均提高了 39.2%,比思想链提示平均提高了 18.4%(第 4.1 节) 。我们还发现,随着所需推理深度的增加,LOGIC-LM 变得越来越有效(第4.3节)。最后,通过分析自我求精的影响,我们强调了在与符号求解器交互时逐步修改符号形式化的有效性(第4.4节)。

2 相关工作

逻辑推理的语言模型
最近使LLM适应逻辑推理任务的工作可大致分为两类:
1)通过微调或训练专门模块来优化LLM推理能力的微调方法,以及
2) 情境学习方法,设计特殊的提示来激发LLM的逐步推理能力。
典型的方法包括在最终答案之前生成解释的思维链提示和分解问题的最不至多的提示分解为可以单独解决的更简单的组件。上述两种方法都直接通过自然语言 (NL) 进行推理,比基于符号的推理提供了更大的灵活性。然而,NL 内在的复杂性和模糊性也带来了不受欢迎的问题,例如不忠实的推理和幻觉。

与之前的工作不同,我们使用符号语言作为推理的基本单位。这有效地将执行复杂、精确推理的负担从LLM转移到更可靠、可解释的外部符号求解器。同时,我们利用LLM强大的上下文学习能力,将基于NL的问题表述为合适的符号表示,从而保持灵活性的好处。

尽管之前的工作也提出了神经网络尽管符号方法将神经网络与符号推理相结合,但这些方法存在一些局限性,例如手工制作或专门的模块设计不易推广,或者由于优化困难而脆弱。相比之下,我们提出了一个更通用的框架,将现代LLM与符号逻辑相结合,无需训练或设计复杂的特定问题模块。

工具增强的语言模型
语言模型具有固有的局限性,例如无法访问最新信息、采取行动或执行精确的数学推理。为了解决这个问题,最近的工作已经开始通过访问外部工具和资源来增强语言模型,例如信息检索器、计算器、代码解释器、规划器和其他预训练模型。最近的工作通过生成将推理过程指定为执行顺序的链式命令的 Python 程序,提高了算术推理任务的性能。然而,这种想法尚未扩展到逻辑推理问题,主要是由于用函数式编程表示其高度“非线性”推理过程(例如假设、个案分析和消除过程)的挑战。我们的工作提供了一种在增强LLM框架内解决这个问题的新颖方法。我们没有将问题解决过程解析为程序,而是仅使用 LLM 用符号语言描述问题,然后将推理卸载给外部符号求解器。

自动形式化
将自然语言转换为符号表示的概念已广泛应用于数学推理的自动形式化中,已有工作证明了LLM能够熟练地将相当一部分数学问题转化为 SymPy、Isabelle/HOL和 Lean等工具中定义的正式规范。数学推理可以被认为是逻辑推理的一个专门子集,主要集中在数字演绎上。由于这种数字的特殊性,数学问题通常更容易转化为符号形式。相比之下,逻辑推理涵盖了更广泛的问题类型,通常需要对世界知识和常识有更深入的理解,才能有效地解析为符号形式。尽管有大量研究数学推理的工作,但我们的工作开创了将自动形式化的概念扩展到现代LLM更广泛的逻辑推理任务

3 LOGIC-LM

如图 2 所示,我们模型的输入是用自然语言描述的逻辑推理问题 P,以及多项选择或自由形式问题形式的目标 G。然后,LOGIC-LM 遵循问题表述和推理范式来解决问题。
LOGIC-LM:使用符号求解器为大型语言模型提供忠实的逻辑推理11.22_第2张图片

Problem Formulation 阶段,我们提示LLM将问题和目标翻译成特定于任务的符号语言。在Symbolic Reasoning阶段,我们调用确定性符号求解器(例如逻辑编程引擎)来获得符号表示的答案。最后,LLM 或基于规则的Result Interpreter负责将答案翻译回自然语言。使用这种方法,只要问题表述正确,推理就保证是忠实的,因为答案 A 是执行嵌入符号推理器中的确定性算法(例如,前向/后向链接)的结果。与之前基于CoT的方法相比,我们的框架通过将重点从“通过逐步推理解决问题”转移到“用符号语言表示问题”来减轻LLM的负担。

3.1 Problem Formulator

直觉上,LLM可能很难直接解决复杂的推理问题。然而,它们表现出了理解文本输入并将其转化为正式程序的显着能力,例如数学方程或Python代码。我们认为这种将问题表述为不同语言的能力也可以扩展到符号语言。我们利用LLM的小样本泛化能力来实现这一目标。通过向LLM提供有关符号语言语法的详细说明,以及一些作为上下文示例的演示,我们观察到LLM,如 InstructGPT 和 GPT-4 ,可以有效地按照说明识别问题陈述中存在的关键实体、事实和规则,然后按照我们定义的语法将这些元素翻译成符号语言。

具体来说,我们使用四种不同的符号公式来涵盖四种常见类型的逻辑推理问题:演绎推理、一阶逻辑推理、约束满足问题和分析推理。这些表述为翻译基于自然语言的问题陈述提供了基础。通过定义额外的特定问题的公式,我们的框架保留了适应更广泛的推理任务的灵活性。接下来,我们将深入研究每个符号表述的语法。每种问题类型的示例如图 2 所示。

逻辑编程(LP)语言
演绎推理通常从已知的事实和规则开始,迭代地做出新的推论,直到目标陈述被证明或反驳。 Prolog 逻辑编程语言可以说是描述演绎推理问题的最著名的符号语言。我们采用它的语法将问题表示为事实、规则和查询。

  • 事实 一个事实 F 是一个带有谓词和一组参数的简单语句,表述为 P(a1, · · · , an),其中 P 是谓词名称,每个参数 ai 可以是变量、实体、数字或布尔值。例如,Age(Peter, 31) 表示“Peter 的年龄是 31 岁”,MadeOfIron(Nails, True) 表示“钉子是铁做的”这一事实。
  • 规则 一个规则以子句的形式写成:F1∧···∧Fm→Fm+1∧···∧Fn,其中每个Fi是一个事实,规则的意思是“如果事实F1,····,Fm为真” ,那么事实 Fm+1 ··· Fn 也为真。”
  • 查询 一个查询 Q 只是需要根据已知事实和规则证明的另一个事实。

一阶逻辑 (FOL)。
虽然逻辑编程语言有效地表示常见的演绎推理问题,但它可能无法表示更复杂的一阶逻辑(FOL)问题。为了解决这个问题,我们还在附录 A 中包含了 FOL 语法(Enderton,2001)。然后将问题解析为 FOL 公式列表,这些公式分为前提(问题中的已知信息)和结论(未知公式)有待证明)。表1给出了例句及其FOL公式。

约束满足(CSP)。
约束满足问题(CSP)旨在找到满足多个约束的一组对象的值分配。 CSP 通常被定义为三元组 (X, D, C),其中 X = {x1, · · · , xn} 是变量的集合,D = {D1, · · · , Dn} 是它们的集合各自的值域,C={C1,····,Cm}是一组约束。每个变量 xi 都可以采用非空域 Di中的值。每个约束 Cj 都是一对 ⟨tj, Rj⟩,其中 tj ⊂ X 是 k 个变量的子集,Rj 是域 Dj 的相应子集上的 k 元关系。我们使用上述语法将 CSP 问题定义为变量、域和约束。图 2 和表 1 均给出了一个示例。

布尔可满足性 (SAT) 公式。
SAT 是决定是否对布尔公式的变量进行赋值以满足该公式的问题。许多分析推理问题都可以表述为 SAT 问题。我们采用 Ye 等人定义的语法。将 SAT 问题 P 表述为 (Φ,T,Q),其中 Φ 是理论 T 下定义的一组约束,Q 是感兴趣的查询。

表 1 总结了四种类型的逻辑推理问题、它们的典型数据集以及用于表示每种类型问题的符号公式。我们还给出了自然语言语句的示例以及每种类型相应的符号表述。附录 C 显示了我们用于问题制定者的完整提示。为了教LLM更好地将每个语句与其相应的符号形式对齐,我们在上下文示例中使用格式:
SYMBOLIC_FORMULA ::: NL_STATEMENT 
以实现更好的基础。

3.2 Symbolic Reasoner

在problem formulator将问题 P 和目标 G 解析为符号表示 P^ 和 G^ 后,我们根据任务调用确定性外部求解器,以获得答案 A。表 1 总结了我们用于每种类型逻辑推理的符号求解器问题。

LP系统。
对于演绎推理,我们结合了 Pyke 专家系统,它基于逻辑编程语言进行推理。为了响应查询,Pyke 首先创建一个知识库,并用已知的事实和规则填充它。随后,它应用前向和后向链接算法来推断新事实并证实目标。

FOL 证明者。
我们使用 Prover92 作为 FOL 推理引擎。 Prover9 是一个自动定理证明器,支持一阶逻辑和方程逻辑。它首先将 FOL 语句转换为合取范式 (CNF),然后对 CNF 执行解析 ,以推断结论是真、假还是未知。

CSP 求解器。
求解 CSP 就是找到满足所有给定约束的所有变量的赋值。此任务常用的算法包括回溯、约束传播和局部搜索变体。为此,我们合并了 python-constraint3 包,它为有限域上的 CSP 提供求解器。

SAT 求解器。
为了解决 SAT 问题,我们使用 Z3 定理证明器,这是 Microsoft4 开发的可满足性模理论(SMT)求解器。 SMT 求解器提供算法来确定一组数学公式是否可满足。它将 SAT 问题概括为更复杂的公式,涉及实数、整数和各种数据结构(例如列表、数组、位向量和字符串)。许多现实世界的分析推理问题可以表示为求解方程组的问题。

3.3 Self-Refiner

对于复杂的问题,生成正确的逻辑形式对于法学硕士来说可能会变得具有挑战性。为了解决这个问题,我们引入了一个自我优化模块,它可以学习修改不准确的逻辑使用来自符号推理器的错误消息作为反馈进行计算。最近的工作采用了类似的想法来改进代码生成,方法是教LLM通过少量演示来调试其预测的程序。在这里,我们扩展了这个想法来细化生成的逻辑表示。如果符号求解器返回执行错误,我们会通过错误的逻辑形式、求解器的错误消息以及一组显示常见错误情况的演示(例如,自由变量是不受 FOL 中任何量词的限制)及其补救措施。我们迭代地运行这个过程,直到没有返回错误消息,或者达到允许的最大修订数量。

3.4 结果解释器

最后,结果解释器将从符号求解器返回的结果翻译回自然语言答案。对于某些问题,可以通过预定义的规则来实现;例如,将 Entailment 映射为 true。然而,对于 CSP 来说,这个过程可能更复杂,例如,将 {convertible: 1,tractor: 2, minivan: 3} 翻译为“convertible is the old.”。为了处理这些不同级别的复杂性,我们设计了基于规则和基于 LLM 的结果解释器。结果解释器的详细信息在附录 D 中给出。

4 实验

你可能感兴趣的:(语言模型,人工智能,自然语言处理)