摘要
当提示一些例子和中间步骤时,大型语言模型(LLM)在各种推理任务中表现出令人印象深刻的性能。然而,在LLM中依赖于隐式知识的提示方法,在隐式知识是错误的或与任务不一致时,经常产生不正确的答案。为了解决这个问题,我们提出了假设到理论(HtT),一个框架,学习规则库与LLM推理。
HtT包含两个阶段,归纳阶段和演绎阶段。
在归纳阶段,LLM首先被要求在一组训练示例上生成和验证规则。规则出现并导致正确答案足够频繁地被收集以形成规则库。
在推理阶段,提示LLM使用学习的规则库来执行推理以回答测试问题。
在数值推理和关系推理问题上的实验表明,HtT改进了现有的提示方法,准确率的绝对增益为11-27%。学习的规则也可以转移到不同的模型和同一问题的不同形式。
1 引言
与它们在规模上的巨大增长相一致,大型语言模型(LLM)已经证明了在广泛的推理任务中的涌现能力,包括程序综合,算术推理,符号推理和常识推理。重要的是,这些能力通常是由高级提示技术引起的,教导LLM将复杂的任务分解为简单的步骤,并基于一小组上下文示例逐步执行推理。
尽管他们有能力解决复杂的推理任务,但LLM面临的一个公开挑战是他们倾向于生成看似合理但与真实的世界知识相矛盾的输出,这种现象通常被称为幻觉。作为额外的挑战,每当任务偏离常规知识(例如,非十进制系统中的算术)时,LLM通常表现出准确性的显著下降,有时表现得仅略好于随机猜测。这两种现象都是由语言模型中预先训练的内隐知识与任务所需的知识之间的不匹配引起的。虽然总是可以通过监督微调来管理数据集并将所需的知识注入LLM,一个通用的方法来自动发现和应用知识的推理问题将是更可取的。
为了实现这样的解决方案,我们重新考虑科学发现的过程,这使得人类能够发展有效的世界理论。通常,科学发现通过产生和验证实验假设来推导理论。这些理论可以应用于解决新场景中的问题。这个过程的一个有趣的方面是,即使最初的假设集是嘈杂的,它也可以得出正确的知识(例如,地心说与日心说)。换句话说,科学发现的过程是从允许人类自由地“产生幻觉”开始的假设,但理论只有在被实验验证后才能被保留。出于这一观察,我们提出了假设理论(HtT)框架,使LLM自动推理任务中的规则库。
HtT由归纳阶段和演绎阶段组成。
在归纳阶段,LLM被要求在给定的训练集中生成和验证问答对的规则。我们收集规则,并根据它们的出现次数和与正确答案的关联频率对其进行过滤,形成推理阶段的规则库。
在演绎阶段,LLM被要求应用学习的规则来解决推理问题,从而减少幻觉的机会。为了减少提示工程所需的努力,我们提出了归纳演绎,融合规则生成和验证步骤成一个单一的演绎步骤。
这样,两个阶段的提示都可以很容易地从现有的少样本提示方法中得到,例如思想链或最少到最多提示。
根据经验,我们验证了具有GPT3.5和GPT 4的HtT对算术的有效性和CLUTRR数据集,分别对应数值推理和关系推理。实验表明,HtT在所考虑的模型和数据集上始终优于基线提示方法,在大多数情况下绝对增益为11-27%。此外,学习的规则可以直接转移到文本版本的CLUTRR,提供了一个实际的优势,比以前的推理方法。我们还进行了广泛的消融研究,以了解HtT的属性,发现性能增益主要来自于减少由于使用的学习规则的规则幻觉。我们还观察到精度和训练样本数量之间的对数线性比例关系。
2 准备
直觉上,推理是应用合理的逻辑步骤从现有信息中得出结论的过程。推理的核心是两个概念:事实和规则。事实是描述问题当前状态的信息片段,而规则是在特定条件下将事实转换为新事实的函数。以著名的三段论为例:
苏格拉底是人。人终有一死。因此,苏格拉底是必死的。
在这里,“苏格拉底是会死的”和“苏格拉底是一个人”这两个陈述都是事实。“人终有一死”可以被认为是一条规则,因为事实和规则在直觉上是相对的概念。也就是说,当一个规则与一个高阶规则相结合时,它也可以被视为一个事实,例如,当我们考虑“如果人是动物,那么所有人都是会死的”时,“所有人都是会死的”就是一个事实。
演绎推理
演绎推理的目的是根据已知的事实和规则推导出新的事实。上述的三段论构成了一个简单的演绎步骤。当存在多个事实和规则时,需要将规则与事实相匹配,这被称为逻辑上的统一。一般来说,有很多方法可以在每个步骤中应用统一,并且通常需要规划算法来找到步骤的最佳顺序,例如前向链接或后向链接。
对于LLM,大多数提示技术旨在引发演绎推理。例如,思维链和最小到最大提示LLM从给定的事实推断结论,呈现一个贪婪的计划。我们将这些方法归类为隐式推理方法,因为它们依赖于存储在LLM中的隐式规则。相比之下,显式推理方法,如选择推理对给定的事实和规则进行操作,重点是搜索最佳演绎顺序。
归纳推理
归纳推理的重点是从观察到的事实中得出一般规则。例如,如果我们知道 “苏格拉底是一个人”和“苏格拉底是会死的”,同样的事实适用于亚里士多德,我们可能会假设一个规则“所有的人都会死”。虽然有很多规则可以从给定的事实中归纳出来,但有些规则过于具体,例如“如果苏格拉底是一个人,苏格拉底是会死的” 只能适用于苏格拉底。为了使规则对未来的预测有用,它们应该具有大量的支持示例(即覆盖率),同时还正确地预测新的事实(即置信度)。
在机器学习中,归纳推理通常不是一个独立的任务,因为注释和评估规则具有挑战性。相反,归纳性被研究作为演绎推理模型推广到新事实的期望属性。例如,在归纳逻辑编程(ILP)中,学习搜索或排序等算法的模型应该泛化成新的元素组合。在知识图推理,学习回答知识图查询的模型应该推广到新的实体。
3 从假设到理论
许多现实世界的推理问题需要演绎推理才能得出正确的答案。通常,问题陈述包含上下文中的必要事实,但规则没有明确说明。以算术为例:当人类面临算术任务时,他们不会得到加法表或乘法表。在这种情况下,人类仅仅依靠存储在记忆中的数学形式来进行演绎。在大规模语料库上预训练的LLM可以从其参数中检索某些常识知识,但由于这一过程的隐含性质,它可能容易产生幻觉无意的知识。幻觉在预训练数据中不经常覆盖的问题中特别常见或与标准真实的生活问题公式化冲突。手动分析表明,规则幻觉分别占CoT在base-16 Arithmetic和CLUTRR上所犯错误的81%和65%(图3)。
有趣的是,我们发现LLM的幻觉类似于科学发现中的假设生成。
例如,人类历来对地心说和日心说进行过辩论。尽管我们知道地心说是不受欢迎的,因为它不能解释许多现象,但在没有足够证据的时候,它是一种有效的“幻觉”。换言之,科学是通过产生和验证假说,以及为一代又一代巩固理论而发展的。受科学发现过程的启发,我们提出了假设到理论(HtT)的建议,通过学习规则库来减少LLMS中的幻觉。HtT由归纳阶段和演绎阶段组成,两个阶段都是通过少量提示来实现的。在归纳阶段生成规则,并在一组问答示例上进行验证。然后收集和过滤这些规则,形成一个库。在演绎阶段,给定一个测试题,我们提示模型显式地从规则库中检索规则来解决问题。这两个阶段类似于监督学习中的训练和测试,不同的是我们显式地学习规则,而不是模型参数。
支撑HtT提示的是两个假设:
(1) 即使LLM偶尔产生幻觉规则,他们也能够以合理的概率在合理的示例子集上产生正确的规则。因此,有了足够的训练示例集,LLM可以发现问题类的大部分必要规则。
(2)检索规则比为LLM生成正确的规则更容易。因此,LLM在使用显式规则时会在演绎推理上表现得更好。我们在实验中验证了这两个假设。
3.1 诱导阶段:规则生成和验证
为了发现用于推理的显式知识,我们希望使用LLM来归纳问题类型的规则。对于每个训练示例(问答对),我们要求LLM生成回答问题的规则。虽然规则可以是对的或错的,但它们可以从基本事实答案中得到验证。该验证可以过滤掉与不正确答案相关联的规则,仅将与正确答案充分相关联的规则保留在规则库中以用于推导阶段。遵循规则挖掘的原则,我们根据覆盖率和置信度过滤规则,要求规则既足够频繁,又分别与正确答案表现出足够的关联。具体来说,我们收集LLM在整个训练集上生成的规则,只保留那些出现超过k次并以高于p的概率通过验证测试的规则。
从演绎中归纳
归纳阶段引入了两个子问题,规则生成和验证。先前关于归纳的工作对生成器和验证器使用单独的提示。虽然在这里也可以设计两个单独的提示,但这会使提示工程工作量加倍,并且与其他方法的比较不那么直观。此外,由于推理问题的多步骤性质,一些规则只能在某些中间结果可用之后才能得出。因此,我们提出了从演绎中归纳,它为规则生成和验证调整了演绎推理提示(例如CoT,LtM)(图1左)。关键思想是在执行演绎时显式地声明规则。然后,我们从模型预测中提取规则,并使用训练样本的准确性进行验证。
3.2 演绎阶段:使用规则库进行显式推理
一旦我们发现了一个好的规则库,下一步就是应用这些规则来解决测试问题。为此,我们在提示符中前置规则库,并要求LLM从库中检索规则以执行演绎推理。然而,我们发现即使是强大的LLM(例如GPT4)也很难在每一步检索正确的规则,这可能是由于提供了大量的规则。作为补救措施,我们开发了一种XML标记技巧来增强LLM的上下文检索能力。注意,将检索子问题卸载到预先训练的通道检索器是容易的,但在这里,我们更感兴趣的是如何一个LLM可以执行演绎推理完全靠自己。
使用XML标记的上下文检索
虽然LLM经常无法从一个大的集合中检索到正确的规则,但我们发现,当规则的数量有限时,例如最多10条规则,检索往往会成功。因此,一个自然的想法是将规则集组织成一个层次结构,这样层次结构中的每个步骤只涉及少量的选项。我们通过将类似的规则分组在一起来手动定义层次结构。受提示教程1中使用的XML标记的启发,我们用和这样的XML标记对层次结构的每一层进行标记(图2)。为了在层次结构中建立索引,我们要求LLM在输出检索到的规则之前为每个级别生成标记。我们发现XML标记技巧显著提高了HtT的性能(表4)。
4 实验评估
为了评估HTT,我们将其应用于现有的少镜头提示方法,包括思想链和最少到最多提示。我们在两个多步骤推理问题上进行了性能基准测试,这两个问题对于目前的少镜头提示方法来说是困难的。我们发现,HTT改进了基本的少镜头提示方法,尽管使用了几乎相同的提示模板。我们还进行了广泛的消融研究,以提供对HTT更全面的了解。
实验装置
我们使用两种不同的LLM(gpt-3.5-turbo和gpt-4)评估HtT和基线。当提示符超过gpt-3.5-turbo的4k上下文长度时,我们使用gpt-3.5-turbo-16 k。在这些实验中,提示符不会超过gpt-4的8 k上下文长度。在下文中,我们将两个LLM分别表示为GPT3.5和GPT 4。我们对两个模型都使用默认温度1。
基线提示方法包括三种提示策略:零激发思维链(0-shot CoT)、少量的思维链(5次CoT)和少数激发最少到最多(5激发LtM)。对于少样本提示方法,我们从每个数据集中选择前5个非平凡的例子作为少镜头提示的样本,避免了样本选择的繁重工程。我们在所有少数提示方法中保持相同的样本集。对于最小到最大的提示,每当我们需要一个规则进行演绎时,我们将规则的生成和检索卸载到一个单独的提示中。
对于所提出的HtT,除非另有说明,否则我们对2,000个训练示例执行归纳阶段。当训练集包含少于2,000个示例时,我们重新采样示例以生成规则。在演绎阶段,我们将学习到的规则库添加到系统消息中,以便LLM知道如何区别对待知识和范例。我们在以下网格中搜索HtT的超参数:最小出现次数k ∈ {2,3},最小精度p ∈ {0.3,0.5,0.7}。由于LtM的成本(3-5倍于CoT),我们基于CoT提示来归纳规则并选择最佳超参数,并且仅使用LtM提示用于推导阶段。这可能稍微低估了HtT对于LtM提示的性能。
4.2 数字推理
我们使用算术数据集,以评估在非十进制系统的数值推理的LLM。该数据集包含几个基本系统中2到4位数的求和问题。由于非十进制系统中的规则与十进制系统中的规则大部分不同,因此算术被认为是一种反事实设置,需要LLM执行推理而不是背诵。为了准备HtT的数据集,我们将其分为训练,验证和测试。训练集包含900个2位数加法的例子。验证集和测试集都包含100个2、3和4位数加法的示例。为了在归纳阶段收集规则,我们提取所有由数字或大写字母(例如16进制中的A到F)求和组成的方程。
表1显示了来自Arithmetic的base-16、base-11和base-9数据集的结果。0-在所有的基本系统中,对于两个LLM而言,发射CoT导致最差的性能。0-shot CoT的主要问题是LLM倾向于将非十进制输入转换为十进制,以十进制执行计算,然后转换回非十进制,由于额外的乘法和除法,这很容易出错。对于少镜头提示方法,虽然以前的工作观察到分离提示可以导致更少的幻觉,我们没有观察到LtM相对于CoT的任何增益。这是因为非十进制算术是如此的反事实,即使是像GPT 4这样的模型也不能总是在单独的提示中产生正确的规则。
对于CoT和LtM提示,HtT始终提高了两个模型的准确性。值得注意的是,HtT在平均准确度上将GPT 4上的CoT提高了21.0%的大幅度。GPT3.5的性能提升不太显著,因为它在推导阶段归纳正确规则和执行检索方面较差。一个潜在的解决方案是使用强模型来归纳规则,并使用弱模型来执行演绎。为了测试这个设置,我们还在GPT3.5上进行了实验,其中规则由GPT 4诱导。我们观察到LtM + HtT有了很大的改进,GPT 4的规则更好,特别是在base-11和base-9上,GPT3.5由于基础性能差而难以引入正确的规则。使用更好的规则对CoT + HtT没有改善,因为GPT3.5有很强的倾向于依赖于自己的信念(即主要是十进制规则),而不是使用CoT从知识块中检索,类似于Longpre等人的观察。
5 相关工作
规则学习 该方法还涉及到规则学习技术。经典规则挖掘算法提取具有大支持集和高置信度的规则。HtT遵循同样的精神,根据它们的频率和准确性过滤规则。近年来,规则学习方法大多被研究在知识图或定理证明中。这些方法从预定义的规则模板开始,学习最符合观察结果的规则,分别强调知识图和定理证明中的可伸缩性和组合性。然而,这些方法都不能直接用自然语言进行推理。虽然有些作品可以应用于自然语言,但它们需要专门的求解器来学习和推理规则。相反,HTT通过提示LLM来归纳和应用规则,并且适用于任何生成性LLM。