再谈大模型x知识图谱 | 大模型领域认知进化系列

796 阅读20分钟

原文传送门

b乎原文传送门: zhuanlan.zhihu.com/p/647611646

绿泡泡公众号传送门:Part1 Part2

唠嗑

读者朋友们好,今天是7月的开始,23年上半年已然结束。回顾这半年来,在科技圈,笔者等来了不少好的产品的发布,也看到了不少新研究的推进。这也是为什么小编距离上次发文也过去了比较长的时间,除了工作繁忙的关系外,业余时间除了需要阅读一些科研成果之外另一大块放在了虚拟现实技术上。回归正题,本文还是关于大模型领域技术的一些总结。对于大模型领域,笔者关注的重点有如下几点:多模态,长记忆,知识修改,大模型思维模式。其中,知识图谱与大模型的融合在如上几个点上交叉度很高,这也是为什么年初业界还纠结大模型“胡说八道”的时候,笔者就觉得知识图谱应当被予以重视。现如今大模型领域浮躁的热度逐渐趋于平稳,大模型领域各个方向上的研究有了不错的进展。其中,有关知识图谱与大模型的结合的研究有了不错的进展。这篇文章会围绕大模型和知识图谱的结合技术。文章比较干,属于纯技术向,建议收藏后再看。

01/ 大模型与知识图谱的互补性

大预言模型基于大规模的语料进行预训练在各类NLP任务中都展现出了非常优异的表现。尽管LLMs在很多应用中都取得了成功,因为缺乏事实知识所展现出的不同程度的胡编乱造现象从一开始就为人所诟病。针对这个问题,许多不错的基于微调也好,prompt engineering也罢,各种各样的解决路径都给到了不错的优化效果。

除了缺乏事实知识之外,大语言模型还有一个缺陷就是缺乏可解释性。LLMs通过将知识隐式地存储于参数中,我们可以把大模型看成一个“黑盒子”,因而验证和解释LLM获取的知识是很难的。当然不止LLM有这样的问题,之前基于预训练操作的NLP模型也有专门的一个研究方向是针对模型可解释性的(language model probing)。模型可解释性问题对于现阶段的大模型更是一个挑战。

知识图谱的优势在于它是一种结构化的知识存储、表达方式,以三元组的形式存储了大量的事实。同时,KG也可以随着新知识的增加不断演化。通过构建专家领域的专业知识知识图谱,我们可以做到对专业领域的事实知识进行增删改查。

知识图谱本身的痛点在于构建KG,推理隐式的关系以及其对于不完整性的动态规划能力。现阶段很多针对大段原始数据进行关系抽取的算法的准确度都无法达到要求,对于相似节点关系推理的算法在在深度上也很有局限性,更别说对于多模态知识图谱的相关应用了。

总结了一下KG和LLM对应的优势和劣势,我们不难发现其实两者具有很强的互补性,因此二者结合这条道路是很值得期待的。

02/ LLM + KG 融合路径

上图总结了LLM和KG融合的一些方向,结合了大语言模型爆火之前基于Finetuning模型的研究以及今年最新的一些论文。下面针对其中各点展开来讲一下。

KG强化LLMs - Pre-training

现有的大型语言模型主要依靠对大规模语料库的无监督训练。尽管这些模型在后续任务中表现出色,但它们往往缺乏与现实世界相关的实用知识。为了解决这个问题,之前的研究提出了将知识图谱(KG)整合到大型语言模型中的三种方法:

1)将KG整合到训练目标中, 通过entity在KG中的关系动态调整Mask的权重。具体可以去看这几个模型的论文:GLM, E-BERT, SKEP, KALM, ERNIE.

2)将KG整合到语言模型的输入中,通过将KG中对应entity的sub-graph信息显示的融入LM的输入中进行训练。里面会有一些细节问题,比如会有Knowledge Noise, 会忽略long-tail entities等。可以看这几个论文:ERNIE3.0,K-Bert, DkLLM, Dict-Bert。

3)将KG整合到额外的融合模块中。这个其实我会更加看好,毕竟从头预训练大模型试错成本代价都很高,不像以前的语言模型可能还可以接受。如果是将KG整合到额外的模块中,就像是Lora一样,可以freeze大模型的参数,额外针对KG做K-encoding, 然后融合L-encoding和K-encoding(text-knowledge fusion module) 的结果。类似的研究很早就有了,比如:CokeBert, JAKET, K-adapter

KG强化LLMs - Inference

上面提到的强化LLM预训练阶段的方法对于知识融合是非常有效的,然而有一个问题,现实生活中很多信息都是有变化的,上述的方法不支持对于已经训练好的知识的更新。因此,这一部分我们考虑到的方法是将知识空间和语言空间分开,在推理阶段注入知识信息。

1)动态知识融合

动态知识指的是在处理信息时,对知识的获取、更新和应用是根据上下文和需求的变化而变化的。大量的研究都是采用的双塔结构,一个处理输入的文字,另一个处理相关知识图谱的输入。不过这个方法让text和knowledge的交互不充足。很显然,我们会想到的就是要么直接拼接,要么增加attention模块。目前还没有研究将这些方法运用于现在市面上的大语言模型,所以还可以观望一下,推荐大家看这几篇论文:KagNet,MHGRN,QA-GNN,JointLK。

2)检索增强的知识融合

检索增强的知识融合是一种处理外部知识的方法,它与传统的双塔结构不同。在这种方法中,我们将非参数化和参数化模块相结合,以更好地处理外部知识。以RAG为例,它首先通过最大内积搜索(MIPS)在非参数化模块中检索与输入文本相关的知识图谱,获得一些文档。然后,利用Seq2Seq LLMs,将这些文档作为隐藏变量z,提供给输出生成器,作为额外的上下文信息。通过在不同生成步骤中使用不同的检索文档作为条件,而不仅仅使用单个文档来指导整个生成过程,RAG在开放领域问答中表现出色。此外,Story-fragments、EMAT、REALM和KGLM等论文也在这个领域做出了一些有趣的工作。检索增强的知识融合可以更好地利用外部知识,提升生成文本的质量和多样性。未来的研究可以进一步探索如何将这些方法应用于现有的大型语言模型,以提升模型的知识处理和生成能力。

KG强化LLMs - Interpretability

大型语言模型(LLMs)的可解释性是指对其内部工作和决策过程的理解和解释能力。这可以提高LLMs的可信度,并促进其在医学诊断和法律判决等重要场景中的应用。知识图谱(KGs)以结构化方式表示知识,并能够为推理结果提供良好的可解释性。因此,研究人员试图利用KGs来提高LLMs的可解释性,这可以大致分为两类:

1)用于语言模型探测(language model probing)的KGs

语言模型探测是一种旨在了解大型语言模型(LLMs)中存储的知识的方法。LLMs在大规模语料库上训练,通常被认为包含了丰富的知识。然而,LLMs以一种隐含的方式存储知识,使得很难确定其中所存储的知识。此外,LLMs存在幻觉问题,导致生成与事实相悖的陈述。这个问题严重影响了LLMs的可靠性。因此,有必要对LLMs中存储的知识进行探测和验证。

LAMA是第一个利用知识图谱(KGs)对LLMs中的知识进行探测的工作。LAMA首先将KGs中的事实通过预定义的提示模板转换为填空陈述,然后利用LLMs预测缺失的实体。预测结果用于评估LLMs中存储的知识。不同于手动定义的提示模板,LPAQA提出了一种基于挖掘和改写的方法,自动生成高质量和多样化的提示,以更准确地评估语言模型中包含的知识。

2)用于语言模型分析(language model analysis)的KGs

预训练语言模型分析是对预训练的语言模型进行深入研究和理解的过程。通过采用不同的方法,如基于知识图谱的关联、因果分析、神经元激活等,来揭示语言模型在推理和生成结果过程中的内部机制和知识表达方式。这种分析方法可以帮助我们了解语言模型的推理过程、依赖模式以及存储的隐含知识,从而提高对语言模型的解释能力和应用场景的理解。这一部分的应用可以帮助我们定位具体知识在大模型的参数区间,进而可以做定向训练,更新已经训练进去的知识。目前我有看到过一个论文:

Editing Large Language Models: Problems, Methods, and Opportunities,推荐大家看一下,是关于大模型定向edit的。

KG强化LLMs - Prompt Engineering

这一部分比较老生常谈了,在我很早之前的一个文章里就有提到过。和上文提到的“KG强化LLMs - Inference”其实有异曲同工之妙。我们通过一些图遍历算法可以得到与input text逻辑相近的子图信息,融入prompt中,再结合input text,通过大模型进行知识的生成。但是这个方向的局限性在于prompt长度是有限制的,且prompt长度越长,精度就会有所下降。虽然也是双塔结构,但是我可能会更偏向于inference 前通过embedding注入KG的信息。目前没有什么相关的论文,之前有一个graph-toolformer比较接近,因为是属于一个工程解决方法可以说是,之后应该langchain会支持,我们可以观望一下。

LLM强化KG - Embedding

Embedding这个词汇相信大家都不会很陌生,简单说就是把各种各样模态的高维度信息(文字,图像,音频等)转换为低维度的向量。将KG转换为embedding后,对应的embedding不仅包含其语义层面上的信息,还包含了其结构方面的信息。基于语言模型的KG向量化,我们有两个技术方向,一个是二段式的,一个是一段式的,如下两图:

图1:一段式

图2:二段式

一段式的是利用Mask,将KG的三元组信息与对应原文连接在一起,对其中的三元组信息中的一个进行遮罩然后训练。二段式这里我举得例子是KEPLER模型,将三元组中的头和尾对应的原文用语言模型进行Encoding操作,对三元组中的关系和encoded的头和尾放入KGE模块进行进一步的encoding,通过这种方式得出的包含KG信息的三元组对应embedding。

LLM强化KG - KG信息补全

KGC知识图谱信息补全指的是补全知识图谱中缺失的事实,通常这些补充的知识是基于结构层面的事实,LLM强化的部分可以帮助KG通过生成的方式生成图谱中没有的事实。KGC的技术路径分为两类:1)LLM作为encoders 2) LLM作为generators

PaE(LLM作为encoder)有三种,如下图

对应的代表作品有:KG-BERT, MEM-KGC, StAR.

PaG(LLM作为generators)分为两种,一种是encoder-decoder, 另一种是decoder-only,如下图

LLM强化KG - 构建KG

利用LLM增强KG的构建流程分为两种,一种是分步构建,第二种是端到端构建,也就是一步到位。

分步构建有如下三个子任务:1)实体识别 2) 共指消解 3) 关系抽取。对于实体识别,有如下几个关键技术:NER(Named Entity Recognition), ET(Entity Typing), EL(Entity linking). 共指消解指的是在一段文字中找到描述同一个实体的表达。关系抽取从字面上就能理解是干什么的,我就不赘述了。这里提到的三个步骤,现有的研究成果主要都是基于类似Bert, Roberta这种模型实现的,都是一些Mask方面的tricks, 有兴趣的读者可以看一些相关的论文;笔者对于端到端基于LM的KG构建比较有兴趣,方向上有很多,有的是基于多层基于Bert的变体模型的拼接,还有的方向是利用基于Bert、T5这种相对于chatgpt参数量小的LLM进行微调训练,来校验ChatGPT构建的KG的准确性的。多模型交互的架构在未来一定是主流,很值得关注。

LLM强化KG - KG生文

知识图谱到文本(KG-to-text)生成的目标是生成高质量的文本,准确且一致地描述输入的知识图谱信息。然而,由于收集大量的图文平行数据的困难和成本高昂,训练不足以及生成质量较差,许多研究工作采用以下两种方法来解决这个问题:1)利用LLMs中的知识;2)构建大规模的弱监督的KG-text语料库。

对于第一种方法,一些先驱性的研究工作直接对BART和T5等不同LLMs进行微调,将LLMs的知识转移应用于KG-to-text生成任务。这些方法将输入的图谱表示为线性遍历,并发现这种简单的方法在性能上胜过许多现有的KG-to-text生成系统。然而,这些方法无法明确地融入图谱中丰富的语义信息。为了增强LLMs与KG结构信息的关系,JointGT提出了在Seq2Seq大型语言模型中注入保留KG结构的表示方法。JointGT先将KG实体和它们之间的关系表示为一个令牌序列,然后将其与文本令牌连接在一起,并输入到LLM中。通过自注意力机制,JointGT获得了与知识实体和关系有关的上下文语义表示。最后,这些汇总的KG表示在另一个结构感知的自注意力层中聚合。Li等提出了一种面向少样本情况的新颖广度优先搜索策略,以更好地遍历输入的KG结构,并将增强后的线性化图表示输入到LLMs中生成高质量的输出。与这些工作不同,KG-BART保持了KG的结构,并利用图注意力机制来聚合子图中丰富的概念语义,增强了模型对未见概念集合的泛化能力。

尽管LLMs取得了显著的实证成功,但它们的无监督预训练目标不一定与KG-to-text生成任务很好地对齐,这促使研究人员开发大规模的KG-text对齐语料库。一些研究工作从维基百科中采集了大量无监督的KG-to-graph训练数据,通过检测超链接和命名实体,选择与知识图谱中共享实体的文本。同时,还提供了人工标注的KG-to-Text测试数据来验证预训练的KG-to-Text模型的有效性。另一些研究通过从英文维基语料中提取带有至少两个维基百科锚链接的句子,并使用这些链接的实体查询它们在WikiData中的相邻实体,计算这些相邻实体与原始句子之间的词汇重叠程度,从而选择高度重叠的句子对。研究人员探索了基于图的和基于序列的编码器,并在不同的任务和设置中确定了它们的优势。

LLM强化KG - 基于KG问答

知识图谱问答(KGQA)旨在根据知识图谱中的结构化事实找到自然语言问题的答案。KGQA面临的挑战是如何检索相关事实,并将知识图谱的推理优势扩展到问答中。因此,最近的研究采用了LLMs来弥合自然语言问题和结构化知识图谱之间的鸿沟。应用LLMs进行KGQA的一般框架如下:LLMs可以用作:1)实体/关系提取器 2)答案推理器。

LLMs作为实体/关系提取器的作用是识别自然语言问题中提及的实体和关系,并从知识图谱中检索相关事实。由于LLMs在语言理解方面的优势,它们可以有效地用于此目的。已有的研究利用LLMs作为分类器进行关系预测,相比浅层神经网络,取得了明显的性能改进。使用LLMs检测提及的实体和关系,然后利用提取的实体-关系对在知识图谱中查询答案的KGQA框架也已经被引入。通过LLMs对问题和候选答案对进行编码,并利用编码结果估计相关KG实体的重要性的QA-GNN框架也得到了应用。还有一些研究通过计算关系和问题之间的相似性来检索相关事实。此外,还提出了使用LLMs检索问题相关关系的方法,并构建了多个路径。从提取的关系和路径中提取的上下文知识可用于改善答案推理的性能。

LLMs作为答案推理器的作用是基于检索到的事实进行推理并生成答案。LLMs可以直接生成答案。例如,将检索到的事实与问题和候选答案连接起来,然后输入LLMs进行答案得分的预测。还有一些研究将LLMs与图神经网络的表示相结合,以有效地推理知识图谱中的事实和语言上下文。还有一些研究在答案推理中利用LLMs与知识图谱之间进行交互,通过发现不同推理路径,并对这些路径进行推理来生成答案。

综上所述,LLMs在KGQA中发挥着重要的作用,可以用于实体/关系提取和答案推理。通过LLMs的应用,我们可以更好地利用自然语言问题与结构化知识图谱之间的关联,从而提高KGQA的性能和效果。

LLM+KG融合框架 - 知识表示

文本语料库和知识图谱都包含了大量的知识,但是文本语料库中的知识通常是隐含且无结构的,而知识图谱中的知识则是明确且有结构的。因此,有必要将文本语料库和知识图谱中的知识进行对齐,以统一的方式表示它们。知识图谱和语言模型结合的统一框架如图中所示。

在这个框架中,有一些模型用于将语言模型和知识图谱进行统一的表示。KEPLER提出了一个统一的知识嵌入和预训练语言表示模型。在KEPLER中,他们使用LLM对文本实体描述进行编码,并共同优化知识嵌入和语言建模的目标。JointGT提出了一种图文联合表示学习模型,提出了三个预训练任务来对齐图和文本的表示。DRAGON提出了一种自监督方法,从文本和知识图谱中预训练了一个联合的语言知识基础模型。它将文本段落和相关的知识图谱子图作为输入,并从两种模态中双向融合信息。然后,DRAGON利用两个自监督推理任务,即掩码语言建模和知识图谱链接预测,来优化模型参数。HKLM引入了一种统一的LLM,结合知识图谱来学习领域特定知识的表示。

LLM+KG融合框架 - 可解释性

利用LLMs和KGs的优势,研究人员将它们结合起来,在各种应用中进行推理。在问答任务中,QA-GNN首先利用LLMs处理文本问题,并引导对KGs的推理步骤。通过这种方式,它可以弥合文本和结构信息之间的差距,为推理过程提供可解释性。在知识图推理任务中,LARK提出了一种LLM引导的逻辑推理方法。它首先将传统的逻辑规则转化为语言序列,然后让LLMs进行推理产生最终输出。此外,Siyuan等人在一个统一的框架中统一了结构推理和语言模式预训练。给定一个文本输入,他们采用LLMs生成逻辑查询,然后在KGs上执行以获取结构上下文。最后,将结构上下文与文本信息融合以生成最终输出。RecInDial将知识图和LLMs结合起来,在对话系统中提供个性化推荐。KnowledgeDA提出了一个统一的领域语言模型开发流水线,以用领域知识图增强任务特定的训练过程。

总结

这篇主要是针对大模型+KG的技术路径进行总结,展开讲了KG对于LLM的增强方向,篇幅较长,打算下次再继续讲LLM对于KG的增强以及二者的融合框架。如果有时间的话还会给大家分享一些思考模式(例如CoT,ToT等)。大模型不会是一个独立的个体,将大模型模块化通用化是未来的发展趋势。我想作为一个软件工程师,我看到的更多的是从一个架构角度思考大模型的发展,因而笔者大多的文章都基于方法论。希望我的文章能让读者朋友们在这个浮躁的市场环境下找到适合自己的研究方向,希望大家能有所收获,也欢迎和笔者进行讨论。我们下期再见。