知识表示学习(KG Embedding)—— TransX系列

article/2025/9/20 16:00:53

文章目录

  • 前言
  • TransE
  • TransH
  • TransR
  • TransD
  • 总结
  • 参考资料

前言

知识表示学习是针对于知识图谱三元组所做的word embedding,平常所做的都是基于完整的文本表述比如一句话去产生word2vec这种副产物,但是KG中的embedding是更为直接的构建实体与关系之间的语义联系。在知识图谱相关任务中,相比使用普通的词向量,知识表示更能反映相近的实体、关系之间的相似程度,知识表示可以被用于信息检索、知识图谱补全、自动问答等领域,还有像今年清华也有用知识表示和BERT相结合得到的具有先验知识信息的预训练模型ERINE
TransX系列的做法都是之前一些比较经典的做法算法简单实用,最近主要在做KBQA时考虑到看一下这些东西,下面会结合清华开源KG Embedding框架OpenKE(Tensorflow版)来学习。
OpenKE是一个集成多种KG Embedding算法的框架,tensorflow、pytorch、C++ 版本都有,可以使用GPU进行训练,具体可以参考OpenKE: An Open Toolkit for Knowledge Embedding这篇文章,由于只是初步了解,所以以下实验没有调参可能和论文中有差距,使用的数据是FB15k
在这里插入图片描述
评价指标主要是两项:
1、Link Prediction
给定缺失了h或者t的三元组让训练的模型去检测KG中所有实体契合这个缺失实体的得分并做排序。

  • MR : mean rank of correct entities;
  • MRR: the average of the reciprocal ranks of correct entities;
  • Hit@N : proportion of correct entities in top-N ranked entities.

2、Triple Classification
对于测试三元组判断是不是正确的三元组的二分类准确率

TransE

其实从图中可以很明显的看出TransE的基本思想就是让h+r——>t,目标函数就使用 max margin 损失函数:
L ( h , r , t ) = max ⁡ ( 0 , d p o s − d n e g + margin ⁡ ) \mathrm{L}(h, r, t)=\max \left(0, d_{p o s}-d_{n e g}+\operatorname{margin}\right) L(h,r,t)=max(0,dposdneg+margin)
其中: d = ∥ h + r − t ∥ \mathrm{d}=\|h+r-t\| d=h+rt 表示L1或L2范式,negative sampling是将头实体和尾实体替换为随机实体
在这里插入图片描述
在这里插入图片描述
OpenKE中的代码写的也很清晰:
在这里插入图片描述
然后就是运行结果:
在这里插入图片描述
TransE模型很简单也带来一个很大的问题就是他只适合处理一对一的关系,举例来说当(华科,地点,武汉)和(黄鹤楼,地点,武汉)出现在KG中时,TransE的表示会将“华科”和“黄鹤楼”的向量表示计算的很接近,但实际上这两者之间关系并不大。

TransH

为解决TransE的问题,后来又提出了TransH这个模型,它解决了一对多和多对一的关系问题,基本思想是针对每个关系r,将头实体h和尾实体t向量表示投影到一个由 w r w_r wr确定的超平面上,得到h⊥和t⊥,后面对h⊥和t⊥做和TransE一样的操作:
h ⊥ = h − w r T h w r t ⊥ = t − w r T t w r \begin{aligned} h_{\perp} &=h-w_{r}^{T} h w_{r} \\ t_{\perp} &=t-w_{r}^{T} t w_{r} \end{aligned} ht=hwrThwr=twrTtwr

在这里插入图片描述
代码中也就是多了一步投影的代码:
在这里插入图片描述在这里插入图片描述
这样就是对于头实体和尾实体的表示向量进行了分解,所以在使用h和r计算t的时候相当于只使用h的一个分量,从而解决了一对多和多对一的问题。
以下是代码结果:
在这里插入图片描述

TransR

TransE和TransH模型都假设实体和关系是在同一个语义空间的向量,这样相似的实体会在空间中相近的位置,然而每一个实体都可以有很多方面,而不同的关系关注的是实体不同的方面。所以TransR对每个三元组,首先应将实体投影到对应的关系空间中,然后再建立从头实体到尾实体的翻译关系。
对于每个关系,有一个变换矩阵 M r M_r Mr和一个在它自己的关系空间的表示向量r。通过变换矩阵将头实体和尾实体的表示向量映射到关系空间,后面还是和TransE一样的目标函数。
h r = h M r t r = t M r \begin{aligned} h_{r} &=h M_{r} \\ t_{r} &=t M_{r} \end{aligned} hrtr=hMr=tMr
同时后续研究进一步发现关系里面可以做更细致的划分,从而产生了一个变体CTransR。它是对于某关系的全部三元组(h,r,t)用h-t得到关系的表示,再对r进行聚类,对于每一个子关系学习变换矩阵 M r M_r Mr和r,后面就和TransR一样了。
在这里插入图片描述
代码中相较于TransE也就多了矩阵的那一步:
在这里插入图片描述
代卖结果如下:
在这里插入图片描述
不知道为啥效果很差…

TransD

TransR还有几个问题并没有解决:
1、在同一个关系r下,头、尾实体共享相同的变换矩阵,然而,一个关系的头、尾实体的类型或属性可能差异巨大。例如,对于三元组(美国,总统,奥巴马),美国和奥巴马的类型完全不同,一个是国家,一个是人物;
2、从实体空间到关系空间的投影是实体和关系之间的交互过程,因此TransR让变换矩阵仅与关系有关是不合理的;
3、与 TransE和TransH相比,TransR由于引入了空间投影,使得TransR模型参数急剧增加,计算复杂度大大提高。
于是就有了TransD这个模型。TransD模型对每个实体或关系使用两个向量进行表示,一个向量表示语义,另一个用来构建映射矩阵。
M r h = r p h p T + I M r t = r p t p T + I \begin{aligned} M_{r h} &=r_{p} h_{p}^{T}+I \\ M_{r t} &=r_{p} t_{p}^{T}+I \end{aligned} MrhMrt=rphpT+I=rptpT+I
这样映射矩阵就由实体和关系共同决定了,其中 I I I为单位阵,即通过向量相乘生成的矩阵对单位阵(代表不做变换)进行调整。后面的映射和训练过程和TransR相同。此外,该模型将TransR的矩阵运算转换成了向量间的运算,运算速度会大幅提升,具体公式如下,补0是因为这里假设关系空间维度比实体空间维度高。
h ⊥ = M r h h = h p T h r p + [ h T , 0 T ] T t ⊥ = M r h t = t p T t r p + [ t T , 0 T ] T \begin{aligned} h_{\perp} &=M_{r h} h=h_{p}^{T} h r_{p}+\left[h^{T}, 0^{T}\right]^{T} \\ t_{\perp} &=M_{r h} t=t_{p}^{T} t r_{p}+\left[t^{T}, 0^{T}\right]^{T} \end{aligned} ht=Mrhh=hpThrp+[hT,0T]T=Mrht=tpTtrp+[tT,0T]T
在这里插入图片描述
代码中多了每个实体、关系由两个向量表示的步骤以及解决实体和关系之间维数不一致的问题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后测试的结果如下:
在这里插入图片描述

总结

以上四种TransX系列都是最早的几篇代表性的工作,后面还有TransSparse、TransA、TransG以及最近两年的更复杂的模型,可以看出他们基本都是在TransE这个基础上的改进,用头实体和关系向量之和来预测尾向量,这样定义实体关系之间的信息作用是一种方案,但是不一定就是唯一最好的,如果后续有必要会再跟进KG Embedding的工作。最后放一张知乎上一个投稿中的图在这里插入图片描述

参考资料

[1] 知识表示学习研究进展-刘知远
[2] Translating Embeddings for Modeling Multi-relational Data
[3] Knowledge Graph Embedding by Translating on Hyperplanes
[4] Learning Entity and Relation Embeddings forKnowledge Graph Completion
[5] Knowledge Graph Embedding via Dynamic Mapping Matrix
[6] 知识图谱向量化表示
[7] Trans系列知识表示学习方法梳理


http://chatgpt.dhexx.cn/article/qkHIuwC1.shtml

相关文章

网络表示学习总结

我的GitHub博客:咖啡成瘾患者 网络的邻接矩阵表示网络的分布式表示网络表示学习的经典工作 DeepwalkLINEnode2vec 网络表示学习的相关论文 最近看了paperweekly的两次关于网络表示学习的直播,涂存超博士与杨成博士讲解了网络表示学习的相关知识。本文将网…

Deep Multimodal Representation Learning(深度多模态表示学习)

多模态表示学习旨在缩小不同模态之间的异质性差距,在利用普遍存在的多模态数据中发挥着不可或缺的作用。基于深度学习的多模态表示学习由于具有强大的多层次抽象表示能力,近年来引起了人们的广泛关注。 多模态融合的核心问题是异质性间隙,而为…

干货!Labeling Trick: 一个图神经网络多节点表示学习理论

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! GNN 旨在学习单节点表示。当我们想要学习一个涉及多个节点的节点集表示(如链路表示)时,以往工作中的一个常见做法是将 GNN 学习到的多个单节点表示直接聚合成节点集的联合表示…

知识图谱表示学习

知识图谱是一种精细化的异构网络, 所以对其节点与边的表示学习也是一个热门的问题. 这里的学习依旧是得到它们的低维稠密向量. 这样做的好处: 降低知识图谱的高维性和异构性;增强知识图谱应用的灵活性;减轻特征工程的工作量;减少由于引入知识…

深度聚类:将深度表示学习和聚类联合优化

参考文献: 简介 经典聚类即数据通过各种表示学习技术以矢量化形式表示为特征。随着数据变得越来越复杂和复杂,浅层(传统)聚类方法已经无法处理高维数据类型。结合深度学习优势的一种直接方法是首先学习深度表示,然后再…

什么是表示学习(representation learning)表征学习 表达学习

机器学习算法的成功与否不仅仅取决于算法本身,也取决于数据的表示。数据的不同表示可能会导致有效信息的隐藏或是曝露,这也决定了算法是不是能直截了当地解决问题。表征学习的目的是对复杂的原始数据化繁为简,把原始数据的无效信息剔除&#…

知识表示学习模型

最近清华的THUNLP整理了Pre-trained Languge Model (PLM)相关的工作:PLMpapers,非常全面,想要了解最新NLP发展的同学不要错过。本来这篇是打算写一写Knowledge Graph BERT系列工作的,但是最近有在做知识图谱的一些东西所以就先整…

网络表示学习(network represention learning)

https://www.toutiao.com/a6679280803920216589/ 2019-04-13 15:40:48 1.传统:基于图的表示(又称为基于符号的表示) 如左图G (V,E),用不同的符号命名不同的节点,用二维数组&#x…

图表示学习

文章目录 1.导言1.1 为什么要研究图(graph)1.2 针对图结构的机器学习任务1.3 特征表示的难点1.4 特征表示的解决思路1.5 线性化思路1.6 图神经网络1.7 讨论:何谓Embedding1.8 总结 2.图结构表示学习2.1 deepwalk(深度游走算法)2.2 node2vec 3…

表示学习(特征学习)

文章目录 表示学习特征工程与表示学习深度学习的表示学习注:深度学习不等于多层神经网络什么时候用「手工提取」什么时候用「表示学习」? 关于特征表示学习的算法 参考资料 表示学习 表示学习的基本思路,是找到对于原始数据更好的表达&#…

表示学习与深度学习

1、表示学习 首先给出表示学习的定义: 为了提高机器学习系统的准确率,我们就需要将输入信息转换为有效的特征,或者更一般性称为表示(Representation)。如果有一种算法可以自动地学习出有效的特征,并提高最…

表示学习(Representation Learning)

一、前言 2013年,Bengio等人发表了关于表示学习的综述。最近拜读了一下,要读懂这篇论文还有很多文献需要阅读。组会上正好报了这篇,所以在此做一个总结。 鉴于大家都想要我的汇报PPT,那我就分享给大家,希望能对大家有所…

使用 Altium Designer 绘制PCB完整设计流程记录(2021.05.04更新)

前言 做了大半年的毕业设计,陆陆续续也是画了几个板子,有些东西感觉要趁现在记录下来,方便以后某天还想再画板子时查看。 修改日志 时间修改内容2021.05.04初稿完成 文章目录 前言修改日志一、关于AD版本二、原理图库和封装库三、绘制原理…

PCB设计流程步骤中的注意事项

PCB中文名称为印制电路板,又称印刷线路板,几乎所有电子设备中都会应用到PCB。这种由贵金属制成的绿色电路板连接了设备的所有电气组件,并使其能够正常运行。PCB原理图是一个计划,是一个蓝图。它说明的并不是组件将专门放置在何处&…

使用Cadence绘制PCB流程(个人小结)

之前使用过cadence画过几块板子,一直没有做过整理。每次画图遇到问题时,都查阅操作方法。现在整理一下cadence使用经历,将遇到问题写出来,避免重复犯错。 注:写该篇文章时,感谢于争博士的教学视频和《Cade…

AD原理图 PCB设计步骤

版权声明:本文为CSDN博主「唐传林」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/Tang_Chuanlin/article/details/79803575 本文总结一下AD画PCB的步骤,…

AD中画PCB详细流程

1.新建工程 先在电脑新建一个文件夹作为工程总文件夹,里面再新建三个子文件夹分别为BOM(Bill Of Materials)(物料清单)、PCB、SCH(Schematic)(原理图)如下图1.1.1 (注意:记住该路径,该工程所有…

干货|PCB电路板的组成、设计、工艺、流程及元器摆放和布线原则

大家对PCB电路板电路这个词很熟,有的了解PCB电路板的组成,有的了解PCB电路板的设计步骤,有的了解PCB电路板的制作工艺......但是对整个PCB电路板的组成、设计、工艺、流程及元器件摆放和布线原则,及后期的注意事项没有一个综合的了…

pcb板制作流程图解

转载链接:http://www.360doc.com/content/16/0529/15/33072037_563261798.shtml 我们来看一下印刷电路板是如何制作的,以四层为例。 四层PCB板制作过程: 1.化学清洗—【Chemical Clean】 为得到良好质量的蚀刻图形,就要确保抗蚀层…

PCB简单绘制一般步骤

1、使用CAD或CAXA,布局线路板图纸 2、生成DWG/DXF格式文件,比如A.dwg 3、使用Altium Designer,文件——新建——PCB,新建一块板子 4、导入A.dwg,文件——导入——DXF/DWG——选择A.dwg导入 ——作为元素导入——比例为mm——绘…