简介
本文提出知识链(CoK),一种用结构化知识库增强大型语言模型的框架,以提高事实正确性和减少幻觉。与以往仅检索非结构化文本的工作相比,CoK利用结构化知识库,支持复杂查询并提供更直接的事实陈述。为了辅助大型语言模型有效地查询知识库,本文提出了一种基于对比指令微调的查询生成器模型。由于查询生成器从固定的大型语言模型中分离出来,该框架是模块化的,因此很容易适应各种知识源和模型。实验表明,该框架显著提高了大型语言模型在知识密集型任务上的事实正确性。我们的代码可以在https://github.com/DAMO-NLPSG/chain-of-knowledge上找到。
1 Introduction
近年来,自然语言处理(NLP)取得了重大进展,彻底改变了机器理解和生成人类语言的方式。在这些突破中,大型语言模型(llm)已经成为推动NLP能力边界的关键动力。OpenAI的GPT-4等模型展示了令人印象深刻的语言生成能力,为从自动内容创建到虚拟助理等应用程序带来了希望。
然而,尽管取得了显著的成就,llm也面临着重大挑战。一个主要问题在于幻觉,他们倾向于自信地生成看似合理但事实不正确的文本。虽然语言模型具有从其训练数据中回忆事实的非凡能力,但仍然很难更新或控制语言模型中的知识。为了避免损害公众对llm的信任,迫切需要提高其事实正确性。最近,一种解决幻觉的有希望的方法是通过从外部知识源检索来增强语言模型或知识库(Xie等人,2022)。然而,即使提供了外部知识源,llm也可能产生不忠实于所提供来源的输出。此外,知识密集型任务,如多跳问答,可能需要对多个知识事实进行推理。为此,最近在思维链方面的工作表明,可以通过中间推理步骤促使llm执行复杂任务。
为减少幻觉并提高知识密集型任务的性能,本文提出知识链(CoK)框架,将分步推理与从知识库中检索到的事实集成在一起。相对于web文档中可能包含不相关或冲突的信息,知识库提供了直接的事实陈述。我们提出的框架的概述如图1所示。与人类如何通过将复杂问题分解为更简单的部分来回答类似,我们指示LLM生成可以更容易回答的子问题链。为了解决子问题,通过从外部知识库检索相关事实来增强语言模型。最后,在检索到的知识事实的指导下,LLM回答原始问题。
然而,用知识库增强llm也存在一系列挑战。虽然llm主要在自然语言数据上进行训练,但知识库需要结构化查询格式,而llm没有针对这些格式进行优化。因此,为了支持所提出的框架,设计了一个查询生成器模型,以帮助LLM产生准确的知识库查询。由于查询生成器是一个较小的模型,它可以在特定于任务的数据上以低得多的成本进行训练。为了确保查询生成器能够产生有效的查询,提出了一种对比性指令调优方法来区分有效和无效的查询。因此,我们的主要贡献是:
- 提出了CoK,第一个用结构化知识库增强大型语言模型事实正确性的框架。
- 为了提高知识库查询的准确率,提出了一种基于对比指令微调的查询生成器模型。
- 在知识密集型任务上的实验表明,CoK大大提高了llm的事实正确性,并减少了幻觉。
2 Related Work
大语言模型(Large Language Model)
大型语言模型(llm)的出现,如GPT-3、PaLM)、ChatGPT和LLaMa ,近年来彻底改变了自然语言处理(NLP)领域。这些模型以其广泛的规模和密集的训练为特点,在各种任务中表现出了卓越的能力,包括零样本和少样本学习,以及数学解决问题和常识推理等复杂的努力。因此,专注于llm的活跃研究领域激增,包括思维链提示(CoT) 和指令调优(instruction tuning)。思维链提示涉及通过上下文学习促使大型语言模型生成问题解决过程。该方法显著增强了模型的推理能力。对该方法的后续扩展探索了零样本思维链场景,表明大型模型仍然可以通过使用简单的提示(如“让我们一步步思考”)来表现良好。另一种研究将程序语言与自然语言分离,使大型语言模型能够生成解决推理问题的代码逻辑。指令调优是提高大型语言模型泛化能力的一种替代方法。研究人员收集并将传统的NLP任务数据集转换为指令集,使用它们对大型模型进行微调,提高其在未知任务上的泛化能力。值得注意的是,得益于指令调优,Flan-T5和Flan-UL2在利用多达20B参数的同时,已经超越了540B PaLM模型的性能。此外,InstructGPT 和ChatGPT等模型利用了来自人类反馈的强化学习技术,将语言模型与意图相结合,从而实现了出色的语言理解和生成能力。
知识密集型NLP(Knowledge-Intensive NLP)
虽然语言模型可以生成高度连贯的文本并展示推理的迹象,但许多现实世界的任务需要超越局部上下文的知识。例如,事实核查模型(fact-checking models)可能需要在互联网上定位适当的证据。在自然语言处理(NLP)领域,当一个任务超出了人类在没有外部知识的情况下解决该任务的合理预期时,就被认为是知识密集型任务(knowledge-intensive)。解决这种知识密集型的NLP任务通常涉及使用检索-阅读器系统(retriever-reader systems)。最初,检索器从知识源中提取有限的相关文档集合,然后读者利用提取的上下文生成适当的响应。本文拓宽了知识密集型的定义,以包括任何不仅需要基本语言能力,而且需要纳入知识的NLP任务,无论是事实的还是基于常识的,以有效解决给定问题。因此,迫切需要为知识密集型语言任务开发有效的模型。
增强语言模型(Augmented Language Models)
尽管llm具有理解复杂人类语言的强大能力,但它们偶尔可以生成看似合理但实际上不正确的预测,并且在处理需要专业领域专业知识的问题时遇到困难。因此,增强语言模型(alm)的新兴学科专注于通过为传统llm配备改进的推理能力和利用外部资源的能力来解决它们的局限性。推理的过程需要将复杂的任务分解为更小的、更易于管理的子任务,这些子任务可以由llm在工具的帮助下独立或协作解决。此外,llm可以利用外部工具或模型来完成相关任务。例如,ToolFormer在文本序列中引入了外部API标记,以使llm能够访问外部工具。HuggingGPT将Hugging Face hub与以ChatGPT为中心的特定任务模型集成,以解决通用的AI任务。增强语言模型可以独立地使用这些增强,或以特定顺序将它们组合起来以完成给定的任务,最终增强泛化能力(Mialon等人,2023;赵等,2023a)。与之前的工作相比,所提出框架是模块化的,不需要调整整个语言模型。因此,该框架是参数高效的,很容易适应各种知识源和语言模型。
3 Methodology
为了在结构化知识的帮助下为问题产生更符合事实的正确答案,所提出框架旨在解决两个关键挑战:检索和合成。对于检索,我们需要从自然问题中生成结构化的KB查询。对于合成,我们希望有效地利用检索到的知识来得到更有信息的答案。
因此,如图3所示,我们的方法包含两个相对应的模块:(1)一个查询生成器,用于将自然问题转换为结构化知识库的查询。我们对生成器进行了微调,以适应不同格式的结构化数据,如知识库三元组查询和SPARQL查询。(2)一个冻结的LLM,如GPT-3,用于组合检索到的信息并生成最终答案。
与传统的检索增强模型相比,该设计具有一些关键的优点。首先,传统的检索增强模型通常将语言模型视为白盒,并对语言模型进行微调以合并检索到的文档。然而,白盒设置需要我们访问和调整模型参数,这对于非常大的llm(如GPT)是不可行的。此外,为了利用他们的检索模块,用户只能使用特定语言模型的微调版本。作为比较,由于我们使用LLM作为黑盒,并且仅利用输出标记,因此CoK可以轻松适应任何类型的下游LLM。其次,训练后的查询生成器可以重用并适应任何知识库。与之前的web文档增强检索方法相比, KBs的使用为隐私问题提供了更可靠的知识来源和潜在的解决方案。总之,我们的设计具有更大的灵活性和更广泛的可用性。
我们的方法的总体流程如图3所示。给定一个整体问题,首先生成结构化数据查询,这些查询可以是不同格式的,以检索外部知识。如果整个问题需要多跳推理,我们还使用CoT步骤在检索之前将其分解为思维。然后,将检索到的知识与原始问题相结合进行引导式问答;
3.1 查询知识库
利用结构化数据的主要挑战在于其非自然的格式,而llm没有针对这种格式进行优化。因此,为了有效适应各种类型的知识库,本文提出了一种将自然问题转换为结构化查询的查询生成器模型,如KB三元组或SPARQL。使用语言建模损失目标和对比方法对生成器进行微调。具体细节见第4节。给定自然问题作为输入,查询生成器输出一个结构化的查询,然后从知识库中检索相关的知识。对于复杂的多跳问题,在导出查询之前,需要推理来确定应该检索哪些特定的知识。因此,我们首先将这些问题传递到思维链步骤中,并将生成的想法用作子问题。然后,将每个子问题输入到查询生成器中以检索外部知识;
3.2 协同检索文档和问题回答
最终,LLM利用提取的信息和初始输入来生成结论性的响应。在整个过程中,我们的预期是LLM将被提示相关的事实细节,仔细考虑选择适当的信息纳入,并最终得出一个开明的答案。随着检索到的知识的纳入,通过提供更多的相关事实来丰富LLM,预计会增加事实准确的答案的生产。上述假设随后将通过一系列实验进行检验,详情见第6节。
3.3 其他实现细节
之后,我们使用LLM的自一致性作为不确定性估计,只有在模型高度不确定时,才用知识库中的事实来增强。具体而言,对于每个输入问题,通过思维链提示采样固定数量的推理路径。当一致性低于[n/2]时,即没有大多数人同意答案时,我们继续查询知识库。由于生成的查询只包含实体的文本提及,可能与具有相似名称的不同实体混淆,因此使用现有的实体链接模型GENRE 进行实体消歧。对于查询生成器产生的每个文本提及(如” Barack Obama “),识别知识库中相应的实体(如wikidata知识库中的实体Q76),然后用于检索相关文本。
4 训练查询生成器
由于llm没有针对查询结构化数据(如知识库)进行优化,因此对查询生成器模型进行微调,将自然问题转换为结构化查询。本文探索了结构化查询的两种可能格式:用于简单任务(如事实验证)的知识库三元组,以及用于复杂问答的SPARQL查询。我们使用LLaMA-7B作为基础模型,并针对不同的格式分别进行训练。为了执行结构化查询,我们从Wikidata知识库进行检索。
4.1 三元组知识库
三元组采用(头实体、关系、尾实体)的格式,在给定其他两个分量的情况下,只检索其中一个分量。为了进行微调,我们使用了FewRel 和HyperRed 数据集的过滤版本,其中包括自然句子及其对应的KB三元组。数据集大小如表1所示。
4.2 SPARQL
为了进行微调,我们使用了过滤版本的LC-quad (Trivedi et al., 2017)和KQA-pro (Cao et al., 2022)数据集,其中包括自然问题及其对应的SPARQL查询。数据集大小如表1所示。
4.3 对比学习
受后见之明启发,除了给出正确的查询外,还添加了负面示例,如“不正确的查询:…”负例是通过一组针对两个查询生成器的规则人工生成的。对于问题-答案对中的每个答案,我们使用1个准确查询和4个不准确查询。如表2所示,KBR指的是我们的对比学习查询生成器。作为一种消融,KBR_correct指的是没有使用对比性方法训练的模型。对比技术成功地提高了评估的准确性。因此,在接下来的实验中,我们使用经过对比训练的KBR版本作为我们的主要查询生成器。实现了一种简单的方法来训练具有对比目标的模型,其中正确的查询和错误的查询在相同的序列中进行自回归建模。具体来说,给定一个序列x,其中包括输入标记、正确的查询标记和错误的查询标记,使用对数似然损失训练查询模型:
5 问答实验
5.1 数据集
在事实验证和复杂推理任务等知识密集型任务上评估了所提出方法。
FEVER
FEVER是一个事实验证数据集,根据来自维基百科的证据段落,将声明标记为“支持”、“反驳”或“信息不足”。
Adversarial HotpotQA (AdvHotpotQA)
AdvHotpotQA 是一个多跳问答数据集。我们使用Ye和Durrett(2022)提出的具有挑战性的子集,其中正确和错误的预测使用他们的模型进行平衡。对于思维链和有指导的问题回答阶段,我们采用text- davcia -003。此外,为了再现性,我们将温度设置为零。
5.2 基线
我们将所提出的方法与几种广泛使用的方法进行了比较。还与最先进的方法进行了比较,以提供更全面的概述。
标准提示(Standard)
在训练提示中给出示例,标准提示直接预测答案。
思维链提示(CoT)
CoT 在最终答案之前生成几个中间推理步骤,以提高llm的复杂推理能力。
自洽思维链提示(CoT- SC)
CoT-SC用一种新的采样策略取代了CoT中的朴素贪婪解码策略。CoT-SC对一组不同的推理轨迹3进行采样,然后选择最一致的答案作为最终答案。
Calibrator
Calibrator经过训练,通过使用自动提取的分数来评估解释的可靠性,以提高事后的性能。
ReAct
ReAct在llm中协同推理和行动。它利用推理步骤来帮助模型更新动作。动作步骤允许模型从维基百科提取外部知识作为知识基础。
验证与编辑(VE)
VE 是一个CoT框架,试图通过外部知识的后编辑推理链来提高预测的真实性。
6 结果与分析
6.1 FEVER结果
Fever数据集包括用于事实验证的单句,不需要复杂的推理。因此,我们省略了思维链分解,直接将原始语句输入到查询生成器。
Fever数据集上的实验结果如表3所示。我们注意到,与之前的方法相比,CoK方法有很好的性能提升。然而,结果只在原始测试集的一个小子集上运行,并将在稍后的版本中进行更新。
6.2 AdvHotpotQA结果
AdvHotpotQA的实证结果如表4所示。我们注意到,与标准的提示方法相比,CoT有很大的性能提升。但是,在CoT中加入自我一致性并不总是能提高性能。在所有基线中,当与Wikipedia-API和DrQA结合时,VE框架的表现优于其他基线,与标准提示方法相比,性能分别提高了4.5%和4.8%。通过提出的新框架CoK,与标准方法相比,实现了6.5%的性能提升,从而超过了所有基线。这证明了框架中知识库检索机制的有效性。搜索引擎产生的自然语言输出可能与发布的问题无关,而KBR则相反,利用对比样本对与问题一致的最合适的查询进行微调。通过llm的逻辑推理能力,该框架融合了两者的优点,使llm能够产生更符合事实的输出。
7 结论
本文提出知识链(CoK),一种新的突破性框架,旨在通过整合结构化知识库(KBs)来增强大型语言模型(LLMs)的事实正确性。本文提出了一种基于对比指令调优的查询生成器模型,以解决提高知识库查询精度的重大挑战。在知识密集型任务上的实验结果表明,CoK实现了实质性的改进,包括增强llm的事实正确性和减少幻觉。通过实现CoK获得的结果强调了在语言模型中利用结构化知识库的重要性。随着未来研究在这个方向的进展,我们预计在事实正确性和信息可靠性方面会进一步进步,从而为更可信和准确的语言模型铺平道路,可以有效地满足不同用户和应用程序的需求。总而言之,CoK代表了通过整合结构化知识库来增强llm事实正确性的有希望的一步。CoK架构的灵活性允许它应用于各种llm和不同格式的知识库查询。通过利用知识库而不是网络文档,它可以解决隐私问题、知识来源依赖和信息快速更新等重要挑战。通过利用知识库,我们可以为更可靠和可信的语言模型铺平道路,从而惠及广泛的行业和应用。