知识增强语言模型提示 零样本知识图谱问答
- 摘要
- 介绍
- 相关工作
- 方法
- 零样本QA的LM提示
- 知识增强的LM提示
- 与知识问题相关的知识检索
摘要
大型语言模型(LLM)能够执行 零样本closed-book问答任务 ,依靠其在预训练期间存储在参数中的内部知识。然而,这种内部化的知识可能是不足和错误的,这可能导致LLM生成错误的答案。此外,对LLM进行微调以更新其知识是昂贵的。为此,本文提议直接在LLM的输入中增加知识。具体而言,首先根据问题与相关事实之间的语义相似性从知识图谱中检索与输入问题相关的事实。然后,将检索到的事实以提示的形式前置到输入问题之前,然后将其转发给LLM生成答案。本文提出的框架,称为knowledge-Augmented language model PromptING(KAPING),无需模型训练,因此完全是零样本的。
还验证了KAPING框架在知识图谱问答任务上的性能,该任务旨在基于知识图谱上的事实回答用户的问题,在此任务上,本文的方法在多个不同规模的LLM上相对于相关的零样本基线平均提高了高达48%的性能。
Closed-book问答任务指在回答问题时,模型只能依靠其在预训练阶段学到的知识,而无法进行额外的外部搜索或引用。这意味着在回答问题时,模型不能直接访问互联网或其他外部资源。
Zero-shot closed-book问答任务是一种更具挑战性的闭书问答任务,其中模型在没有任何先前训练的情况下,无需额外的模型微调或更新,直接回答问题。
在传统的闭书问答任务中,模型需要在预训练后进行微调,以根据特定的问题集和答案集进行调整。而在zero-shot closed-book问答任务中,模型不需要进行任何额外的调整或微调,仍然可以回答新问题。
这种任务要求模型能够利用其预训练阶段学到的通用语言理解和推理能力,以及内部的知识表示来解决新问题。模型需要将问题与其内部知识进行联结,从而推断出答案,而无需对任务进行特定的针对性训练。
在zero-shot closed-book问答任务中,模型通常会使用问题的提示信息或关键词来引导答案的生成。模型会利用其预训练的语言表示能力和对内部知识的理解,以及与问题相关的提示信息,生成可能的答案。
介绍
预训练语言模型通过自监督学习在大量文本语料上进行训练,可以执行闭书问答(closed-book Question Answering,QA)任务,即仅依靠其内部参数中的知识来回答用户的问题,而不使用任何外部知识。此外,当增加语言模型的规模时,大型语言模型可以在没有任何额外微调步骤的情况下为问题生成答案,这称为语言模型提示(LM prompting)。然而,由于LLMs中的知识可能是不完整、错误和过时的,它们经常会生成事实上错误的答案,即所谓的幻觉(hallucination)(见图1a)。此外,通过参数更新来完善LLMs中的知识是昂贵的,特别是当知识不断变化时(例如货币汇率)。最后,LLMs是否正在获取正确的知识来回答问题尚不清楚。
为了克服这些限制,本文提出直接检索和注入相关知识作为输入,称为提示(prompt),传递给LLMs(图1b)。使用知识图谱作为知识源,其中包含以三元组形式表示的符号知识(头实体、关系、尾实体)。因此,为了提取与输入问题相关的事实,首先将问题中的实体与知识图谱中的实体进行匹配。然后,与知识图谱中的实体相关联的三元组被转化为文本形式,并 前置到输入问题前面 ,然后传递给LLMs生成答案。
“前置到输入问题前”
指的是将相关知识直接插入到输入问题之前,作为输入序列的一部分。在传统的问答系统中,只有输入问题作为模型的输入,模型需要通过自身的预训练知识来回答问题。而在这种方法中,我们将从知识图谱中提取的相关知识以文本形式添加到输入问题之前,形成一个新的输入序列。
举个例子,假设有一个问题:
“谁是美国的第一位总统?”。
如果我们有一个知识图谱,并且知道其中包含了以下三元组:(美国,首都,华盛顿)和(华盛顿,位于,哥伦比亚特区)。那么,在前置知识的情况下,我们可以将这些知识转化为文本形式:
“美国的首都是华盛顿,华盛顿位于哥伦比亚特区。”
然后将这个文本知识添加到原始问题之前,形成新的输入序列:
“美国的首都是华盛顿,华盛顿位于哥伦比亚特区。谁是美国的第一位总统?”。
通过这种方式,语言模型在生成答案时可以同时考虑问题和前置的知识,从而能够更好地利用外部知识来提高答案的准确性和相关性。这种前置知识的方法可以帮助语言模型更好地理解问题的上下文和意图,避免产生基于不准确或过时知识的错误答案。
因此,基于事实知识的LLMs能够生成准确的答案,减轻了幻觉问题,同时保持LLMs的参数不变,无需进行知识更新的微调。整体框架称为Knowledge-Augmented language model PromptING(KAPING),它完全是零样本的,并且可以与任何现成的LLMs一起使用,无需额外的训练。
虽然上述方案看起来简单而有效,但还存在一些挑战。
首先,与问题实体相关的大多数检索到的三元组与回答给定问题无关。例如,在维基数据知识图谱中为问题实体(例如Poseidon)检索相关的三元组时,存在60个三元组,其中大多数(例如流派、出版日期等)与回答问题无关。因此,它们可能会误导模型生成错误的答案。
另一方面,问题实体的三元组数量有时很大(例如,WebQSP数据集中有27%的样本有超过1000个三元组),因此编码包括不必要的所有三元组会带来很高的计算成本,特别是对于大型语言模型来说。
为了克服这些挑战,受信息检索的启发,进一步提出了 基于语义相似性过滤不必要三元组 的方法。具体而言,首先将问题及其相关的语言化三元组表示为嵌入空间中的向量。然后,检索出一小部分三元组,其嵌入与输入问题的嵌入相比其他三元组更接近。这样,只将与给定问题更相关的三元组前置,可以有效防止大型语言模型生成与问题无关的答案,并且具有高的计算效率,不像增加所有三元组的方法那样。值得注意的是,这种过滤方法使用 现成的句子嵌入模型,因此在我们的流程的每个部分都不需要额外的训练。
基于语义相似性过滤不必要的三元组
是指通过比较问题和其关联的三元组之间的语义相似性来筛选出与问题相关性较高的三元组,从而减少不相关的三元组对于问题回答的干扰。
在知识图谱问答任务中,通常通过检索知识图谱中与问题实体相关的三元组来获取问题的背景知识。然而,检索到的三元组中可能包含大量与问题无关的信息,这些不必要的三元组可能会误导模型,导致生成错误的答案。
为了解决这个问题,可以使用语义相似性来衡量问题和三元组之间的相似程度。常见的方法是将问题和三元组表示为向量形式,然后计算它们之间的相似度。根据相似度的大小,可以选择保留与问题最相关的三元组,而过滤掉与问题关联性较低的三元组。
"现成的句子嵌入模型"指的是已经经过预训练并可供使用的句子级别的文本表示模型。这些模型通过将输入的句子转换为连续向量表示,捕捉句子的语义和语法信息,并将其映射到一个高维向量空间中。这些向量表示可以用于计算句子之间的相似性、分类、聚类等自然语言处理任务。常见的句子嵌入模型包括BRERT、GPT等。
然后,在知识图谱问答(KGQA)任务中验证了KAPING框架。结果表明,KAPING显著优于相关的零样本基线。此外,详细的分析支持知识检索和增强方案的重要性。
本文这项工作中的贡献有三个方面:
• 提出了一种新的知识增强的语言模型提示框架,利用知识图谱中的事实知识进行零样本问答。
• 提出了基于问题及其相关三元组之间的语义相似性来检索和增强知识图谱中相关事实的方法。
• 在知识图谱问答基准数据集上验证了我们的KAPING,在这些数据集上,本文的方法令人印象深刻地优于相关的零样本基线。
相关工作
语言模型提示
语言模型预训练是一种训练Transformer模型的方法,使用未标注的文本语料库进行自编码或自回归目标的训练。它已成为自然语言任务的一种重要方法。此外,大型语言模型能够进行零样本学习,例如基于预训练参数中存储的知识,根据输入的文本提示生成答案,而无需额外的参数更新或标记的数据集。为了进一步提高它们的性能,一些工作提出从训练数据集中检索与输入问题相关的样本,并将它们在少样本学习中添加到提示中。最近的一些工作进一步表明,当LLMs在从自然语言任务中提取的一系列指令上进行微调时,它们在未见过的零样本任务上具有强大的泛化性能。然而,LLMs内部的知识可能不足以处理事实性问题,这引发了知识增强的LLMs。
知识增强的语言模型
最近的研究提出将知识,如来自无结构语料库(例如维基百科)的文档和来自知识图谱的事实,整合到语言模型中。其中,REALM和RAG学习检索文档并将其与语言模型结合。此外,知识图谱也可以是另一种知识源,其中知识以最紧凑的形式进行编码,一些方法将KG中的事实增强到语言模型中。然而,所有上述方法都需要大量的训练数据和模型更新用于下游任务。虽然最近的一些工作表明,通过检索增强的语言模型在少样本学习中具有很强的性能,但仍需要额外的训练步骤,这与完全零样本的LM提示不同。
最近,有几项研究在LM提示方案中增加了知识。首先,一些工作提出通过提示提取LLMs本身参数中的知识,然后使用提取的知识回答问题。然而,由于LLMs的参数可能不足以存储所有世界知识,提取的知识和生成的答案可能不准确。另一方面,最近,Lazaridou等人提出使用谷歌搜索在Web上检索文档,然后将检索到的文档与少样本演示一起添加到输入问题中,在少样本的LLM提示方案下回答问题。然而,关注与之前研究不同的零样本提示与KGs的结合,利用KGs可以带来额外的优势。具体而言,由于KGs可以以紧凑的三元组形式简洁地编码知识,在问答任务中,相比于文档情况,本文的方法使LLM提示更加高效(即减少输入序列长度),同时在零样本问答方案上更加有效:LLMs需要从提示中选择包含答案实体的一个三元组,而不是查找包含各种实体的冗长文档。
方法
接下来描述KAPING框架。
零样本QA的LM提示
首先从零样本问答开始,然后解释语言模型提示。
零样本问答
给定一个输入问题x,问答(QA)系统返回一个答案y,其中x和y都由一系列标记组成:x = [w1,w2,…,w|x|]。假设P是一个基于生成语言模型的QA模型,它生成给定问题x的答案y的条件概率如下:P(y|x)。与使用一组带标注的(x , y)样本来训练模型P的监督学习不同,零样本学习不使用任何带标签的样本和模型训练。值得注意的是,对这种零样本QA感兴趣是因为收集数据集并为每个新领域微调现有的LM被认为是昂贵且有时不可行的。
LM提示
LM通常通过基于先前标记预测下一个标记进行预训练,这被称为自回归语言建模。然后,由于这种预训练目标,LLM可以进行零样本指令学习。具体而言,当向LLM(即P)提供一个问题和一条指令(例如,“请回答以下问题:《Lady Susan》的作者是谁?”)时,LLM在输入文本的条件下可以顺序生成输出标记的概率,这可能是一个答案,比如“Jane Austen”。
为了更规范,对于每个输入问题x,首先使用特定的指令模板T将其修改为一个文本字符串x’,称为提示(prompt),如下所示:T:x → x’。例如,如果我们有先前的问题x = “Who is the author of Lady Susan?” 以及先前的指令模板"Please answer the question:",则生成的提示x’将为T(x) = “Please answer the question: Who is the author of Lady Susan?”。然后,将提示x’传递给LLM(即P),LLM通过P(y|x’)生成答案(即y)。注意,这种LM提示方案不需要对标记数据进行任何额外的模型参数更新(即微调),因此适用于目标零样本QA任务。
然而,在这种单纯的零样本提示QA中存在多个挑战。首先,LLM依赖参数中的知识,容易生成事实上不正确的答案,因为LLM中的知识可能是不准确和过时的:知识可能随时间的推移而出现和变化。此外,使用额外的参数更新来改进内部知识是昂贵的,而且有必要反映错误和不断增长的知识。最后,LLM在生成对问题提示的答案时记忆和利用哪些知识是不清楚的,这限制了它们在输出上的可解释性。
知识增强的LM提示
为了解决现有LM提示方案的前述限制,本文提出了一种将相关知识从知识图谱(KG)注入到输入问题中的方法,称为增强知识语言模型提示(Knowledge-Augmented language model PromptING,KAPING)。
在本小节中,首先定义了KAPING框架的主要目标,然后介绍了增强KG上的知识以及注入到LM提示中所需的要素。
使用知识图谱进行LM提示
不再仅依赖于 参数内部化的知识 ,而是提出通过访问和注入来自外部KG的知识来回答问题,这些知识包含对回答问题有帮助的准确和最新的事实。形式上,知识图谱G由一组事实三元组{(s, r, o)}组成,其中s和o表示主体和客体实体,r是它们之间的特定关系类型。例如,一个关系型知识"《Lady Susan》是由Jane Austen编写的"可以表示为一个包含两个实体s = "Lady Susan"和o = "Jane Austen"以及关系r = "written by"的三元组。然后,对于通过模板T从示例问题x = "Who is the author of Lady Susan?"转换而成的问题提示x’,还将其相关三元组(Lady Susan, written by, Jane Austen)增加到LM提示方案中。通过这样做,LLM可以根据来自KG的增强知识生成正确的答案,形式化表示为P(y|x’, G)。需要注意的是,由于可以在KG中提供特定和有效的事实给LLM,该框架可以缓解LLM中不准确和过时知识导致的错误生成问题,而无需昂贵地更新模型参数。此外,还可以确认LLM是否基于增强事实生成答案,从而提高LM提示的可解释性。
剩下的问题是如何从输入问题中访问KG上的关系符号事实,将符号知识转化为文本字符串,并将转化后的知识注入到LM提示方案中。下面的段落中将逐一解释它们。
知识访问
为了利用与输入问题相关的事实,首先提取问题中的实体。例如,对于问题"谁是《Lady Susan》的作者?“,提取出实体"Lady Susan”。然后,基于提取的实体,在知识图谱中找到对应的实体,其关联的三元组成为与输入问题相关的事实。需要注意的是,实体匹配可以通过现有的实体链接技术来完成。
知识转化
LLMs处理的是文本输入,而事实三元组表示为符号图。因此,在将来自知识图谱的符号事实注入到LLMs之前,首先将包含(s, r, o)的三元组转化为文本字符串,称为转化。虽然存在最近的方法专门设计或学习图到文本的转换,但在本工作中,我们使用线性转化:将三元组中的主体、关系和客体文本连接起来,我们观察到这在LM提示中效果良好(参见附录B.5)。例如,一个三元组(Lady Susan, written by, Jane Austen)直接使用为"(Lady Susan, written by, Jane Austen)"作为LLM的输入。
知识注入
基于与输入问题相关的转化后的事实,剩下的步骤是实现知识注入机制,使LLMs能够基于外部知识生成答案。假设有一个与问题x相关的N个关联三元组k = {(sᵢ, rᵢ, oᵢ)}ᴺᵢ₌₁。类似于上述描述的指令模板T:x → x’,修改N个转化后的三元组k,并将知识注入指令添加到知识提示k’中,如下所示:T:k → k’。用于构建提示的一个特定模板,首先逐行列举N个转化后的三元组,然后在提示的顶部添加具体指令:“以下是以三元组形式表示的对回答问题有意义的事实。”。之后,将这样的知识提示字符串k’添加到问题提示x’之前,LLMs根据知识和问题提示生成答案标记,形式化表示为P(y|[k’, x’]),其中[·]表示连接。
与知识问题相关的知识检索
KAPING框架允许LLMs利用知识图谱中的知识进行零-shot问答。然而,存在一个关键挑战,即与问题相关的三元组数量往往太大,无法直接用于LLMs。而且,其中大部分与问题无关,会误导LLMs生成不相关的答案。
知识检索器
为了克服这些限制,进一步提出仅检索和增强与问题相关的三元组。需要注意的是,存在一种文档检索方案,其目标是根据嵌入相似性为给定查询检索相关文档,这激发了我们检索用户问题的三元组的想法。特别是,由于在上一节中定义的知识转化器,可以在文本空间中操作从符号知识图谱中获取的三元组。因此,对于转化后的三元组和问题,首先使用现成的句子嵌入模型对它们进行嵌入表示,然后计算它们之间的相似性。然后,仅使用与给定问题相关的前K个相似三元组,而不是使用所有与问题相关的N个三元组。需要注意的是,与最近的一些研究不同,这些研究旨在通过监督训练改进知识图谱检索器本身,专注于使用知识图谱进行零样本LM提示,因此将现成的检索器作为工具,用于过滤掉与问题无关的三元组。