神经网络与知识图谱学习总结
Posted Coding With you.....
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神经网络与知识图谱学习总结相关的知识,希望对你有一定的参考价值。
谷歌新模型MUM
1.从零开始训练网络
搭建网络基本架构
1,初始化initialisation,设置输入层,中间层,和输出层的节点数。
2,训练train:根据训练数据不断的更新权重值
3,查询query,把新的数据输入给神经网络,网络计算后输出答案。(推理
构建训练网络
第一步是计算输入训练数据,给出网络的计算结果,这点跟我们前面实现的query()功能很像。
第二步是将计算结果与正确结果相比对,获取误差,采用误差反向传播法更新网络里的每条链路权重。
启动训练网络并测试数据
读取真实数据,以及数据的预处理(归一化);进行训练 训练完成后进行预测
总之,定义框架——构造框架中的训练网络——进行训练与预测
2.表示学习
参考文献:
[1] Wang Q , Mao Z , Wang B , et al. Knowledge Graph Embedding: A Survey of Approaches and Applications[J]. IEEE Transactions on Knowledge & Data Engineering, 2017, 29(12):2724-2743.
[2] Ji S , Pan S , Cambria E , et al. A Survey on Knowledge Graphs: Representation, Acquisition and Applications[J]. IEEE Transactions on Neural Networks and Learning Systems.2020.
[3]《Node2vec: Scalable Feature Learning for Networks》 KDD 2016 Node2Vec:万物皆可Embedding
表示学习入门
表示学习旨在学习一系列低维稠密向量来表征语义信息,而知识表示学习是面向知识库中实体和关系的表示学习。
知识图谱表示学习对于知识获取和下游应用具有很重要的作用。知识表示学习的表示空间包括:point-wise空间,流形空间,复数空间,高斯分布和离散空间。打分函数通常分为基于距离的打分和基于语义匹配的打分函数。编码模型包括:线性/双线性模型,张量分解和神经网络。辅助信息考虑文本,视觉和类型信息。
1.KG Embedding主要是把实体(entities)和关系(relations)嵌入(Embed)到一个连续向量空间里面
KG Embedding主要包含三个步骤:
- 对实体(entities)和关系(relations)进行表示
- 定义得分函数(scoring function)
- 对实体和关系的表示进行学习
其核心是分布式表示,这个分布式的理解是可以将一个对象使用低维的稠密的向量进行表示,这样也表达出了不同向量之间的联系。
2.transE
transE算法就是一个非常经典的知识表示学习,用分布式表示(distributed representation)来描述知识库中的三元组。想象一下,这类表示法既避免了庞大的树结构构造,又能通过简单的数学计算获取语义信息,因此成为了当前表示学习的根基。
打分函数:
局限:
transE效果很好且非常简单,后续大量的工作都是在此基础上的改进(简称trans大礼包),传统方法已经基本不用了(有些思想还是值得借鉴的,比如矩阵分解、双线性模型)。改进大体针对以下几个问题:
复杂关系建模效果差。对1-N,N-1,N-N关系,会出现冲突映射,一个实体在不同三元组内的表示融合,导致不明确甚至错误的语义信息。
多源信息融合。 如何充分利用知识库中的额外信息(如实体类型、实体描述)。
关系路径建模。 对relation之间的依赖进行建模。
为了更好的理解上面所述的复杂关系,我们在此说明,按照知识库中关系两端连接实体的数量,可以将关系类型划分为 1-1、 1-N、N-1 和 N-N 四种。以 N-1 类型关系为例,指的是该类型关系中的一个尾实体会平均对应多个头实体,其他的类推。
TransH 的动机就是解决这种复杂关系,那么它具体是怎么解决的呢?
TransH 的核心思想是对于关系每一个 r,有一个超平面 Wr 和一个关系向 dr表示,而不是和实体在同一个嵌入空间。具体来说,在每个三元组中,将头实体 h 和尾实体 t 都映射到这个超平面上得到向量h⊥和t⊥,训练使 h⊥+dr ≈ t⊥。目的是为了能够使得同一个实体在不同关系中有不同的意义,因为不同的关系有不同的法平面。
回到我们上面的N-1的复杂关系问题,对于三元组(h, r, t)和(h1, r, t),根据 TransE 的思想, h1 = h。而对于 TransH 来说,只需要满足 h 和 h1 在关系 r 的超平面上的投影相同就行啦,这样就可以区分出 h 和 h1,两个的向量表示是不同的。
TransE 和TransR 虽然多取得了很大的进步,但是他们实体和关系都是映射在同一语义空间中,然而实体包含多种属性,不同的关系对应不同的实体属性,因此,在实体空间中,有些实体是相似的,因而彼此接近,但某些特定实体属性却有相当大的不同,因而在相关的关系空间中彼此相距甚远,TransR 的提出缘起于此。
所谓 TransR 是指将实体和关系映射到不同的语义空间,并且关系不再是单一的,而是多个关系空间,头尾实体的翻译也是在相应的关系空间中完成。
对于每一个三元组(h, r, t),将头尾实体表示在实体空间,将关系表示在关系空间,并且,对于每一个关系 r,存在一个映射矩阵 Wr,通过这个矩阵将 h, t 映射到关系 r 所在空间,得到 hr 和 tr,使 hr + r = tr。在这种关系的作用下,具有这种关系的头/尾实体彼此接近(彩色的圆圈),不具有此关系(彩色的三角形)的实体彼此远离。
TransR 还进行了变体,叫做 CTransR,其中的 C 是 Cluster,表示聚类聚类。具体来说,仅通过一个关系向量不足以满足头尾实体对的多样性表示,比如关系(location_location_contains)其实包含 country-city、country-university、continent-country 等多种含义。
因此对于某一种关系的全部实体对(h,t),采用聚类的方式得到多种聚类结果,学习每种聚类结果的关系表示,用 TransE模型训练得到的 h, t,将 h-t 作为它的表示,对于每一类的关系都有一个映射矩阵 Mr 和一个向量表示 r,其他和 TransR 一样。
具体的定义如下:
(1) 在同一关系 r 下, 头尾实体共用相同的投影矩阵,然而,一个关系的头尾实体存在很大的差异,例如(美国,总统,奥巴马),美国是一个实体,代表国家,奥巴马是一个实体,代表的是人物。
(2) TransR 仅仅让给投影矩阵与关系有关是不合理的,因为投影矩阵是头尾实体与关系的交互过程,应该与实体和关系都相关。
(3) TransR 模型的参数急剧增加,计算的时间复杂度大大提高。
下面是 TransD 的模型图。
我们来看下 TransD 的模型思想,给定一个三元组(h, r, t),TransD 将头尾实体分别投影到关系空间得到投影矩阵 Mrh 和 Mrt ,这样得到的投影矩阵便与实体和关系都有关系。获取投影矩阵之后,和 TransR 一样,计算头尾实体的投影向量。
接下来,看一下 TransD 的代码。最开始是在初始化__init__中定义了四个 Embedding 矩阵,并且对其初始化。这里的 ent_transfer 和 rel_transfer 代表的是实体关系转换矩阵
上述方法中实体和关系向量的每一维都等同对待,但是不同维度的重要度不一样,有些维度效果好,有些维度可能是噪音,因此将其等同对待是不合理的。
来看下图,实点表示正确匹配,空心点表示错误匹配,箭头表示某种关系(HasPart),我们来看一个例子,在图(a)中采用欧式距离得到的结果中有一个三元组(Sleeping,HasPart, Appliance),但是它是错误的,正确的三元组是(Sleeping,HasPart, Dreaming)。TransA 为了不等同对待向量的每一维,对向量维度加权,赋予不同的权重,在图(b)中对 xy 轴进行了拆解,对 y 轴加权,对 x轴降权,这样x轴就有一个较小的loss,会向正确的三元组方向学习。
具体的来看一下:以往的TransE是公式(1),公式(2)是TransA的损失函数,其中增加了Wr权重矩阵,并且是与关系r相关的非负权值矩阵,除此之外,对于 h+r 和 t 采用了绝对值的方式。
TransG认为既然一种关系存在多种语义表达,那么将每种语义采用高斯分布来刻画。具体的公式定义如下,Mr代表的是潜在语义关系数量,
其中三角形为正确的尾实体,圆点为错误的尾实体,不同颜色的三角代表不同的语义表达。(a) 为传统模型示例,由于将关系 r 的所有语义混为一谈,导致错误的实体无法被区分,(b) 中为 TransG的模型示例,TransG 利用高斯分布刻画不同语义关系,从而能够区分出错误实体。
实体库中实体和关系的 异质性(heterogeneous) 和 不平衡性(unbalanced) 是知识表示学习的两个难题。
异质性(heterogeneous):关系链接实体的数量不一致,有的很多,有的很少。
不平衡性(unbalanced):某些关系头尾实体的种类和数量可能差别巨大。
针对异质性问题提出TranSparse(share),针对不平衡性提出 TranSparse(separate)。
TranSparse(share):对于每一个关系,有翻译向量 r 和稀疏矩阵 Mr,稀疏矩阵的稀疏度由关系链接的实体对数量决定,稀疏度 θr 的定义如下,其中 Nr 表示关系链接的实体对的数量,Nr* 表示最大实体对的数量(关系链接最多的实体对),θmin 为稀疏度超参数,取值在 [0, 1] 之间,根据下面的公式(2)可以得到头尾实体的投影矩阵。
TranSparse(separate):对于每一个关系,设置两个投影矩阵,分别为头实体 Mrh 和尾实体 Mrt,两者的稀疏度 θrl 和上面的有所改动,具体如下,其中 Nrl 表示关系 r 在位置 l 处链接的实体的数量,Nr*l 表示 Nrl 中最大的数,θmin 为稀疏度超参数,取值在 [0, 1] 之间,根据下面的公式(4)可以得到头尾实体的投影矩阵。
以上两个方法的损失函数均为如下定义:
作者认为以前的方法都是将实体和关系嵌入到点向量空间中,这些模型总是以同样的方式看待所有的实体和关系,而作者认为实体库中的实体和关系本身就就存在不确定性,以前的方法模型忽略了这一不确定性。
针对这种不确定性,文中给出了图示,如下图所示,带有下划线的表示关系,每个圆圈代表不同实体和关系的表示,他们分别于 Bill Clinton构成了三元组,圆圈越大代表其不确定性越大,从图中我们能够看出 nationality这个关系的不确定性是最大的。
基于上述不确定性问题,本文提出 KG2E,与以往不同的是不再采用点空间,而是基于密度,采用高斯分布表示实体和关系,其中均值表示其所处的中心位置,而协方差可以恰当的表示其不确定度。
KG2E使用 h-t 表示头尾实体之间的关系,实体可以用一个概率分布表示,如下:
关系 r 也同样是一个高斯分布:
可以根据上述两个概率分布估算三元组的得分。
KG2E考虑了两种计算概率相似度的方法:KL-距离(KL-divergence)和期望概率(expected likelihood)。
KL距离是一种不对称相似度,得分函数定义如下:
期望概率是一种对称相似度,得分函数如下:
——————————————————————————————————————————
表示空间:近期研究成果中主要用到的表示空间主要是四类,其中包括实数点向空间(point-wise space)、复杂空间(含复数)、高斯分布空间、流形和群。
- 评分函数:主要包括基于距离和基于语义两种
- 编码空间:主要论述了线性/非线性模型、张量模型、神经网络三种。每一种都引用了多篇论文举例。
- 辅助信息:图谱嵌入表示过程中,为了最小化语义损失,会将更多的图谱信息进行嵌入,这些信息包括文本描述、实体/关系类别信息、可视信息(如图片等)、实体/关系的属性、关系路径、逻辑规则。
典型的KG嵌入技术通常包括三个步骤:(i)表示实体和关系,(ii)定义得分函数,(iii)学习实体和关系表示。第一步指定实体和关系在连续向量空间中表示的形式。然后,在第二步中,得分函数;用每个事实(h,r,t)来衡量其合理性。在KG中观察到的事实往往比那些没有观察到的有更高的分数。最后,学习这些实体和关系表示。
图表示学习讲解-1_哔哩哔哩_bilibili 第五讲 图表示学习-北京大学刘钰博士后
图谱学苑 石川 Part 1 《基于图神经网络的聚类研究—表示学习和网络聚类》_哔哩哔哩_bilibili
2.可以将实体和关系输入深度神经网络来输出一个语义匹配的分值。MLP将实体和关系一起送入一个全连接层,并且在第二层使用sigmoid激活函数来对一个三元组打分
CNN在图像中具有很强的特征提取的能力,为了能够在知识图谱表示学习中使用CNN,ConvE模型先使用2D卷积将头实体和关系重塑为2维矩阵,然后就可以来建模实体和关系之间的交互。
3.基于MLP和基于CNN的方法都只对三元组进行了编码,而没有考虑长期关系依赖,例如对于知识图谱中的关系路径,就需要使用RNN来进行建模。RSN设计了一个循环跳跃机制,通过区分实体和关系来增强语义表示能力。对于一条通过在知识图谱中随机游走生成的关系路径,利用RNN得到隐层状态:
4.Transformer在NLP里尤其是以Bert为代表的自然语言预训练中已经成为炙手可热的一项技术,基于Transformer的表示学习可以集成知识图谱中的上下文信息。CoKE使用Transformer来编码边和路径序列。KG-BERT从预训练语言模型中得到启发,采用Transformer来编码实体和关系。
5.
GNN可以在一个encoder-decoder框架下学习连接结构信息。RGCN提出了关系特定的转换,以建模知识图谱的有向性。在第l+1层得到的聚合一个实体的邻域信息的状态为:
这里,GCN是一个编码器,针对不同任务可以选择不同的编码器集成到RGCN这个框架中。由于RGCN将每个实体的邻域信息都等价对待,
SACN设计了带有权重的GCN,定义了相同关系类型下两个邻接的节点连接强度。
解码器模块通常使用ConvE来作为语义匹配的度量,使用C个卷积核,可以得到实体和关系嵌入表示的卷积输出为
接着,打分函数设计为:
KBAT模型通过拼接实体和关系嵌入表示,然后采用图注意力网络和多头注意力机制来编码多跳邻域信息。
为了进一步提高表示学习的性能,结合一些外部辅助信息可以实现多模态嵌入,包括文本描述,类型约束,关系路径,视觉信息与,逻辑规则等和知识图谱本身进行结合。
文本描述
知识图谱中的实体描述信息可以补充语义信息。结合文本描述的知识表示学习的挑战在于如何将结构化的知识图谱和非结构化的文本描述嵌入在同一个表示空间中。一种方法是通过引入实体名称和Wikipedia的集合,用对齐模型来对齐实体空间和词空间。DKRL对TransE进行扩展,利用CNN学习实体描述的表示。SSP将三元组和文本描述映射到一个语义空间中,并用一个关于嵌入的loss和一个关于主题的loss组成整体loss。
类型信息
知识图谱中的实体有时会带有层次化的类别或类型信心。SSE模型结合实体类型来对属于同一类型的实体进行嵌入。TKRL通过关于实体类型的映射矩阵来捕捉层次化类型信息。KR-EAR将关系类型分为属性和关系,并建模了实体描述之间的关联。
总结
高斯嵌入能够表示实体和关系的不确定性以及多重关系的语义。嵌入复数向量空间可以有效地建模不同的关系连通性模式,尤其是对称/反对称模式。表示空间在编码实体的语义信息和捕获关系属性方面起着重要作用。在设计表示学习模型时,应仔细选择和设计适当的表示空间,以匹配编码方法的性质,并平衡表示能力和计算复杂性。基于距离的度量的打分函数使用翻译原理,而语义匹配打分函数使用合成运算符。编码模型(尤其是神经网络)在建模实体和关系的交互过程中起着至关重要的作用。双线性模型也引起了很多关注,一些张量分解模型也可以视为该类方法。其他方法包含文本描述,关系/实体类型和实体图像的辅助信息。最近几年最前沿的知识表示学习模型如下表所示:
3.图嵌入到图网络
4.
5.R-GCN
计算R-GCN模型中单个图节点/实体更新(红色),蓝色块对应着不同关系下的不同邻居对红色中心节点的影响, 每种关系分别经过变换求和得到绿色块, 对所有关系的绿色块求和并激活, 得到红色中心节点的新表示
对于某一个节点, 其相邻节点都会被考虑。一个节点有输入和输出,要分别转换;对于不同关系类型的边也要分别转换
仿照 GCN 的架构
比如链接预测,用 R-GCN 编码,得到 embedding,然后用 DistMult 的打分函数计算三元组得分,最后输出交叉熵 loss
6.ConVE
link prediction的意思就是给定 起始节点 和 终结点,预测这两个节点的relation,从relation的集合里找出score最高的relation
整体模型:(将e1和rel给reshape以输入2D卷积,红叉代表dropout,输出e1 e2和r的匹配分数)
因为实体和关系是一个嵌入的向量,如果实体有s个 关系有r个,嵌入维度分别为k1 k2那么实体的嵌入sk1,关系的嵌入维度rk2; E:s*k1,R:r*k2
所以首先将他们每一个reshape成二维的——m n,将两个矩阵进行拼接,再通过卷积核w进行卷积操作; E:s*k1,R:r*k2中每一个三元组转化为m*n的二维张量——2D 卷积比 1D 卷积通过 embedding 之间的交互增强了模型的表现力,可以比一维卷积抽取更多的特征交互。
操作后得到一个feature maps,C*m*n 其中C为个数
将feature maps reshape为一个cmn的向量,然后使用矩阵W∈cmn×k参数化的线性变换将其投影到k1维空间中
将投影的矩阵与尾实体eo的嵌入矩阵进行内积,进行softmax计算找到正确的关系进行预测
比如对于每一个三元组,图中将实体和关系向量嵌入设置为4维,reshape为二维的m*n=4.
7.convKB
将三元组进行嵌入,得到k*3的矩阵,对于每一行进行特征提取,采用t个卷积核进行卷积操作
最后得到一个k*t的feature maps,将feature maps拼接为一个kt*1的特征向量,将其与权重向量进行点积操作得到分数
∗表示卷积运算符;连接运算符表示连接运算符。
8.新版DGL:异构图神经网络利器
9.GCN,图卷积神经网络,实际上跟CNN的作用一样,就是一个特征提取器,只不过它的对象是图数据。
GCN的核心部分是什么样子:
假设我们手头有一批图数据,其中有N个节点(node),每个节点都有自己的特征,我们设这些节点的特征组成一个N×D维的矩阵X,然后各个节点之间的关系也会形成一个N×N维的矩阵A,也称为邻接矩阵(adjacency matrix)。X和A便是我们模型的输入。
GCN也是一个神经网络层,它的层与层之间的传播方式是:
10.neo4j中链接预测亲密度和根据邻居得到亲密度检测
对于指定的两点,可以直接计算
MATCH (p1:Person name: 'Michael')
MATCH (p1:allnodesid: '37')
MATCH (p2:Person name: 'Karin')
RETURN algo.linkprediction.adamicAdar(p1, p2) AS score
MATCH (p1:Person name: 'Michael')
MATCH (p2:Person name: 'Karin')
RETURN algo.linkprediction.preferentialAttachment(p1, p2) AS score
对于所有的,可以写一个程序找到无边连接的节点间的相似度,大于某个值就加一条边
以上是关于神经网络与知识图谱学习总结的主要内容,如果未能解决你的问题,请参考以下文章