1. GMeLLo 提出的背景
1.1 多跳问答
多跳问答的难度往往比较大,因为不仅要追溯事实,还要聚合与串联事实。
随着大型语言模型的发展,基于提示的方法搭配可选的检索模块已成为处理多跳问答的常用手段,但以往多数工作侧重于静态信息库。
1.2 知识编辑
知识编辑目前有两种主流方案:修改模型参数和保留模型参数。
1.2.1 修改模型参数
可进一步细分为元学习和定位-编辑方法。
• 元学习方法(meta-learning):利用超网络来学习编辑大型语言模型所需的调整。
• 定位-然后-编辑(locate-then-edit)范例,首先识别与特定知识对应的参数,然后通过直接更新目标参数来进行修改。
2.2.2 保留模型参数
在保留模型参数的情况下,主要方法是引入额外的参数或外部存储器。
• 额外参数范式( additional parameters ):将额外的可训练参数纳入语言模型。这些参数在修改后的知识数据集上进行训练,而原始模型参数保持不变。
• 基于存储器的模型(memory-based models):将所有编辑的示例存储在存储器中,并使用检索器为每个新输入提取相关的编辑事实,从而引导模型生成编辑后的输出。
基于以上背景,作者提出了 GMeLLo (raphmory-based Editing forargeanguage Models)方法,通过整合大语言模型和知识图谱(Knowgledge Graph),解决知识编辑后的多跳问答任务。
如上图,在更新了有关英国首相的信息后,显然相应的配偶信息也应予以修改。
如上图所示,GMeLLo 包括以下关键步骤:
• 借助大型语言模型将编辑后的事实句子转化为三元组,利用这些三元组来更新知识图谱,确保其信息保持最新。
• 对于给定的问题,利用大型语言模型提取其关系链。通过模板填充,将关系链转换为正式查询,并用于搜索更新后的知识图谱。
• 依据问题检索最相关的编辑事实,并通过大型语言模型依据这些事实生成答案。
• 当大型语言模型提供的答案与知识图谱的答案相冲突时,将知识图谱的答案作为最终回应。
3.1 从知识库中提取三元组
将知识图谱 Wikidata 用作基础知识库。当收到更新的事实时,运用大型语言模型从句子中提取实体并确定它们的关系(从预定义列表中选择一个关系)。生成经过编辑的事实三元组,然后用于更新知识图谱。需要依据主体实体和关系来识别知识图谱中的连接,打破这些连接,并基于三元组建立新的连接。
通过上下文学习,以确保大型语言模型对任务有深入理解。此外,鉴于大型语言模型可能生成不在预定义关系列表中的关系,使用检索模型从预定义关系列表中识别出最相似的关系(即嵌入空间中最接近的关系)。检索模型的融入让三元组提取过程更强大。
3.2 从问题中提取关系链
随着世界快速发展,大型语言模型的训练数据可能很快过时。
不过,由于语言模式的演变通常较为缓慢,大型语言模型的大量训练数据应当能使其有效地理解大多数句子模式。
借助大型语言模型从句子中提取关系链,涵盖问题中提到的实体及其与其他未识别实体的关系。与从知识库中提取三元组提取类似,让大型语言模型从预定义列表中选择一个关系,以减少相同关系的不同表述。
以 MQuAKE-CF 数据集中的一个问题句子为例,
问题:
Eeyore 的创作者的孩子的国籍所在国家的首都是什么?
What is the capital of the country of citizenship of the child of the creator of Eeyore?
关系链
Eeyore->创作者->?x->孩子->?y->国籍->?z->首都->?m
Eeyore->creator->?x->child->?y->country of citizenship->?z->capital->?m
示例中的这个问题需要一个 4 跳的推理过程。
以“Eeyore”作为关注的已知实体,要得出最终答案,需要依次识别其创作者“?x”,接着是创作者的孩子“?y”,获取孩子的国籍“?z”,最终检索该国的首都“?m”。所有的关系,如“创作者”“孩子”“国籍”和“首都”,都从预定义的关系列表中选取。关系链囊括了得出答案所需的全部关键信息。
为了让大型语言模型能够提取关系链并以结构化模板生成输出,在提示中提供了若干关系链提取的示例用于模型的上下文学习。具体提示词如下:
• 以上提示词用于从知识库中提取三元组
• 以上提示词用于从问题中提取三元组
• 以上提示词用于基于LLM的QA
3.3 将关系链转换为正式查询
一旦获取关系链,接下来就要把已知实体和关系整合到正式的查询模板中。
考虑以 RDF 格式展示知识图谱并以 SPARQL 查询,比如:
PREFIX ent: <rel: <DISTINCT?id?label WHERE {ent:E0 rel:R0?x.?x rel:R1?y.?y rel:R2?z.?z rel:R3?id.?id rdfs:label?label.}LIMIT 1
“ent”和“rel”分别作为实体和关系的前缀。
标识符“E0”在知识图谱中唯一代表“Eeyore”,而“创作者”“孩子”“国籍”和“首都”的标识符分别记为“R0”“R1”“R2”和“R3”。
在识别出实体“?id”后,检索其字符串标签“?label”作为最终答案。
3.4 整合LLM-QA与KG-QA
3.4.1 LLM-QA:基于大型语言模型的问答
使用预训练的 Contriever 模型从一系列编辑过的事实句子中检索最相关的事实。然后,大型语言模型依据问题和这些相关事实生成答案。与 MeLLo 中的“拆分-回答-检查”流程相比,在事实准确提供的情况下,这种基于大型语言模型的问答方式预计更简便,并能得出更准确的结果。
Contriever是一个 Embedding模型,用于Dense Retrieval
Github地址:
然而,处理多跳问题,尤其是那些编辑的事实与中间跳有关的问题时,往往无法准确检索到相关信息。
3.4.2 KG-QA:基于知识库的问答
为了解决基于大型语言模型问答的难题,整合来自基于知识库的问答的响应,以优化大型语言模型的输出。
当关系链和事实三元组准确推导出来后,基于知识库的问答系统会提供正确答案。
然而,如果关系链提取有误,知识图谱中的搜索路径可能失效,导致基于知识库的问答系统无法产生输出。在这种情况下,将大型语言模型的响应视作最终答案。
4. 效果评估
4.1 评估数据集
MQuAKE是一个聚焦于多跳问答的测试数据集,主要包括两个数据集:MQuAKE-CF、MQuAKE-T。
• MQuAKE-CF:在 MQuAKE-CF 上的实验是基于完整数据集的随机抽样子集进行的,总计包含 3000 个实例(2、3、4 跳问题各 1000 个实例),专为反事实编辑而设。每个问题都与一个或多个编辑相关,用于检验知识编辑方法处理反事实编辑的有效性。
• MQuAKE-T,专为时间知识的更新定制。由 1868 个实例构成,每个实例都与一个现实世界的事实变化相关。其旨在评估知识编辑方法在运用当代事实数据更新过时信息方面的效能。
4.2 参数设置
具体而言,测试样本被分组处理:
• MQuAKE-CF:每组样本数 n 取值于 {1, 100, 1000, 3000}
• MQuAKE-T:每组样本数 n 取值于 {1, 100, 500, 1868}
4.3 测试基准
• MEND:通过训练一个超网络,基于编辑的事实转换原始微调梯度来生成权重更新。
• MEMIT:更新各层的前馈网络以纳入所有相关事实。
• MeLLo:采用基于内存的方式进行多跳问答,将所有更新的事实存储于外部内存中。
4.4 主要结果
如上图,GMeLLo 在 MQuAKE-CF 数据集和 MQuAKE-T 数据集上均显著优于所有现有方法,尤其在处理大量编辑时表现出色。
MeLLo 的性能下降主要归因于随着编辑数量的增加,它在识别相关事实方面遭遇挑战。
当 k = 1 时,模型仅使用与输入问题直接相关的事实作为上下文。然而,随着 k 的增大,模型在从更广泛的内存中辨别相关事实时面临困境。
GMeLLo 模型通过采用明确的符号图表示来化解这一难题,增强了系统有效更新和检索相关事实的能力。这一特性显著提升了 GMeLLo 的可扩展性,使其非常适用于需要管理大量快速变化信息的实际问答应用。
使用两个更大的模型,GPT-3.5-Turbo-Instruct 和 GPT-3.5-Turbo 在 MQuAKE-CF 数据集上对 MeLLo 和 GMeLLo 进行评估,k = 3000。MeLLo 和 GMeLLo 与 GPT-3.5-Turbo-Instruct 的准确率分别为 30.7%和 51.4%。
而GMeLLo在使用GPT-3.5-Turbo时准确率高达66.4%,但当与MeLLo结合使用时,该模型却频繁出错。
这些发现表明,GMeLLo即使在扩展到更大型的语言模型时,依然能够保持良好的性能。
5. 局限性
• 未借助更为精妙的提示技术,例如思维链(CoT),来实现更精准的多跳推理。
• 未优化预定义的关系列表,以提升其准确性。
• 可以进一步强化知识图谱,以支持更复杂的问答,比如涉及历史信息的查询。
本文转载自,作者: