语言模型(LM)的成功似乎掩盖了旁人的光辉。
比如知识图谱(knowledge graph,KG),这个整合了实体关系的结构化知识库。
通常来说,语言模型代表了语言能力,而知识图谱蕴含了结构信息。
长期以来,对于KG的利用大致可以分为两类:
第一类是将KG线性化后嵌入LM,这种做法并不能充分利用其结构信息;
第二类是使用图神经网络 (GNN) 来保留图结构,但GNN无法表示文本特征,也无法与LM的预训练特征结合。
——有没有办法结合二者的优点,既保留预训练LM的能力,又充分利用KG来增强模型对于图概念和三元组的理解?
当然有,不然小编就不会写,那就是来自海德堡大学的研究人员推出的图语言模型 (GLM)。
论文地址:https://aclanthology.org/2024.acl-long.245.pdf
GLM集成了两种方法的优势并弥补了它们的缺点。
作者使用预训练LM来初始化GLM的参数,同时又设计新的架构来促进有效知识分配,这使得GLM能够同时处理图和文本信息。
下表展示了对关系分类任务的实证评估结果,在这些较为复杂的任务中,模型需要对来自文本和图的互补输入进行推理,还需要推断不存在于文本中的信息。
数据表明,GLM在监督和零样本测试中,超越了基于LM和GNN的基线。
此外,通过线性探测实验,作者还证明了GLM的架构变化与原始LM权重高度兼容。
图语言模型
KG对于组织大量数据、促进信息检索,以及揭示决策中隐藏的见解至关重要。
KG擅长明确地表示多种关系,一般使用三元组的形式:节点是实体,边代表它们之间的关系,以下将这类复杂的结构统称为GoT。
为了有效地使用GoT,我们需要对其组件进行有意义的编码。
上面提到了利用语言模型和GNN的问题,本质上来说,两种结构由不同的基本原理驱动,LM利用语义编码,而GNN执行结构推理。
在图语言模型的设计中,作者通过文本和结构信息的早期融合来解决这个问题。
首先是使用LM现成的参数来初始化——一方面是保留预训练的能力,另一方面是从头训练太贵了。
通过对LM的自注意力模块进行一些非侵入性的更改,将LM转换为Graph Transformers(GT),同时保持与其预训练参数的兼容性。
在对图进行编码时,LM用来处理三元组线性组织的文本信息,而GT则沿着图结构聚合信息。
因此,GLM继承了LM对三元组的文本理解,而其中的GT模块允许直接执行结构推理,无需额外的GNN层。
重要的是,文本序列可以看作一种特殊类型的图,在GLM中的处理模式与原始LM相同。
Self-Attention中的Attention可以写成
除了熟悉的Q、K、V, Bp表示位置编码,而M为mask矩阵。
在Transformer中,位置编码 (PE) 用于通知语言模型文本中token的顺序。
包括绝对PE(对token的绝对位置进行编码)和相对PE(token对之间的相对位置),绝对PE通常加在输入序列里面。
相对PE为每个可能的距离学习一个标量:
对于GT来说,定义图中节点或边的绝对位置并不简单。因此,本文采用相对PE。
给定图中的有向非循环路径,我们可以将路径上任意一对节点之间的距离定义为节点之间的跳数,也就获得了相对距离(PE)。
M(mask)矩阵
在普通Transformer中,自注意力是针对输入中所有可能的标记对进行计算的。
相比之下,GNN中的节点通常只关注相邻节点,更远的节点之间的信息必须跨多个GNN层传播。
对于图来说,这种稀疏消息传递方法有时是首选,因为在大多数图中,邻域大小随着半径的增加呈指数增长。
因此,在GT中引入图先验可能是有益的,比如只在局部邻域计算自注意力(M中相连的节点对应设置为0)。
另一方面,事实证明,图的全局视图可以实现高效、远程的信息流。所以作者搞了两个版本:本地GLM和全局GLM。
如上图所示,G2G的连接就属于全局视野,本地GLM不处理这种关系。
在本地GLM中,自注意力机制仅限于来自同一三元组的token,而外部所有token的注意力都设置为 0(因此也不需要PE)。
尽管如此,因为属于一个概念的token可以由多个三元组共享,所以消息可以通过图跨多个层传播(类似于GNN中的标准消息传递)。
所以即使非相邻节点没有直接连接,仍然可以通过消息传递共享信息。
比如,在第一个本地GLM层中,「狗」通过三元组「黑色贵宾犬是一只狗」和「狗是一种动物」来表示。那么,在第二层中,「动物」的表示会受到「黑色贵宾犬」的影响,尽管两者之间没有直接联系。
另外,研究人员还形式化了全局GLM,(对标自注意力)可以将任何节点连接到每个其他节点。这种形式需要为任意token对设置PE,包括那些不在同一三元组中出现的token。
为此,全局GLM引入了新的图到图(G2G)相对位置。LM中没有学习G2G连接的参数,因此这里使用相对位置( +∞ )来初始化参数,表示相应的token出现在文本段落中很远的地方。
GT架构引入了图先验,而LM的参数初始化赋予了其语言理解能力。
对模型进行修改的整体思想是,三元组应该尽可能地类似于自然语言,以使LM能够学习,而图推理应该通过消息传递来工作。
类似于LM分词器将文本转换为词表中的向量,GoT也需要同样的处理以便GLM可以像LM那样处理图。
为了实现这一点,研究人员首先将GoT转换为Levi图,用包含关系名称作为文本特征的节点替换每条边,并将新节点连接到原始边的头部和尾部,保留原始边的方向。
接下来,将每个节点拆分为多个节点,每个新节点对应单个token,建立新的边连接相邻节点,保留原来的方向。
在这种表示中,每个三元组都表示为一个token序列,就像标准LM一样。
位置编码
如前所述,使用token对之间的相对位置进行编码,——只需将三元组视为一段文本,并计算该文本中的token距离。
请注意,转换后GoT的token序列,不一定与输入三元组的token序列完全相同。这里单独对Levi图中的每个节点进行标记,以确保多个三元组共享概念的一致。
当token不属于同一个三元组时,为了确定这些token对之间的距离,之前的工作考虑了它们之间的最短路径的长度。
然而,这中PE对于LM来说并不自然,因为如果在最短路径中以错误的方向遍历,三元组将以相反的顺序出现。
因此,本文省略了不具有结构信息的token之间的PE,使用局部 (ℓGLM) 和全局 (gGLM)。
作者在两个关系(标签)分类实验中评估了GLM嵌入GoT的能力(对哪个关系属于给定的头实体和尾实体进行分类)。
ConceptNet子图实验用来分析结构图属性的影响;而在维基数据子图和相关维基百科摘要的实验,用于测试文本和图形交错输入的能力。
研究人员构建了一个平衡的英语CN子图数据集,其中包含13,600个训练实例、1,700个开发实例和1,700个测试实例,并以17个不同关系作为标签,将要预测的关系替换为T5模型的第一个掩码<extra_id_0>。
GLM对图进行编码,为每个token生成嵌入,线性分类头根据掩码的嵌入给出最终预测,这里使用静态模板来表达未屏蔽的关系。
ConceptNet子图中关系分类的实验表明,GLM优于基于LM和GNN的编码方法——即使继承的LM参数在GLM训练期间没有更新。
维基数据子图和维基百科摘要上的KG群体实验表明,GLM可以对GoT和文本的交错输入进行推理,是LM所不具备的新能力。
文章来源于“新智元”,作者“新智元”
【开源免费】FASTGPT是基于LLM的知识库开源项目,提供开箱即用的数据处理、模型调用等能力。整体功能和“Dify”“RAGFlow”项目类似。很多接入微信,飞书的AI项目都基于该项目二次开发。
项目地址:https://github.com/labring/FastGPT
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI