1. GMeLLo 提出的背景
1.1 多跳问答
多跳问答的难度往往比较大,因为不仅要追溯事实,还要聚合与串联事实。
事实的来源可以是知识图谱、表格、自由格式文本,或者是这些来源的异构组合。
随着大型语言模型的发展,基于提示的方法搭配可选的检索模块已成为处理多跳问答的常用手段,但以往多数工作侧重于静态信息库。
1.2 知识编辑
知识编辑目前有两种主流方案:修改模型参数和保留模型参数。
1.2.1 修改模型参数
可进一步细分为元学习和定位-编辑方法。
- • 元学习方法(meta-learning):利用超网络来学习编辑大型语言模型所需的调整。
- • 定位-然后-编辑(locate-then-edit)范例,首先识别与特定知识对应的参数,然后通过直接更新目标参数来进行修改。
2.2.2 保留模型参数
在保留模型参数的情况下,主要方法是引入额外的参数或外部存储器。
- • 额外参数范式( additional parameters ):将额外的可训练参数纳入语言模型。这些参数在修改后的知识数据集上进行训练,而原始模型参数保持不变。
- • 基于存储器的模型(memory-based models):将所有编辑的示例存储在存储器中,并使用检索器为每个新输入提取相关的编辑事实,从而引导模型生成编辑后的输出。
2. GMeLLo
基于以上背景,作者提出了 GMeLLo (Graph Memory-based Editing for Large Language 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: <http://www.kg/entity/>
PREFIX rel: <http://www.kg/relation/>
SELECT 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地址:https://github.com/facebookresearch/contriever
然而,处理多跳问题,尤其是那些编辑的事实与中间跳有关的问题时,往往无法准确检索到相关信息。
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),来实现更精准的多跳推理。
- • 未优化预定义的关系列表,以提升其准确性。
- • 可以进一步强化知识图谱,以支持更复杂的问答,比如涉及历史信息的查询。
如何学习AI大模型?
大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业
?”“谁的饭碗又将不保了?
”等问题热议不断。
不如成为「掌握AI工具的技术人
」,毕竟AI时代,谁先尝试,谁就能占得先机!
但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高
针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料
分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈
学习路线
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓