当前位置: 代码迷 >> 综合 >> SimplE Embedding for Link Prediction in Knowledge Graphs
  详细解决方案

SimplE Embedding for Link Prediction in Knowledge Graphs

热度:11   发布时间:2024-02-08 02:41:50.0

本文研究的问题是KG中的链路预测问题,首先,什么是链路预测,KG中使由许多三元组构成的,这些三元组为(h,r,t),链路预测便是在这些已知的三元组上完成KG completion工作,是对新的三元组进行预测,以达到补充KG的目的。

        当然对于LP(Link Prediction)问题,已经有很多解决的方法了,最常见的便是知识图谱嵌入,为所有的实体与关系生成连续的变量空间,以满足KG中的各种关系。而本文中提出了一种SimplE Embedding方法来解决这个问题,而这个方法是在CP方法的基础上提出来的(一种张量因子分解方法)。

         张量因子分解:这个概念应该是在矩形分解的基础上提出来的,一般用在做推荐,预测方面特别多,因为用来预测的矩阵一般都是稀疏矩阵,所以经过分解后便可以对原矩阵进行填充,达到预测的效果,这一点同样也应用在张量中,所以张量因子分解也是类似的功能,而CP分解只是其中的一种分解方法。

         本文中提到CP分解需要为每个实体学习两个向量,分别是头向量与尾向量,在学习的时候头向量与尾向量是分开的,而本文提出的SimplE可以解决两个嵌入向量的独立性问题。

为了使学习过程效率更高,我们还对KG中的三元组的一些性质进行应用,比如对称,反对称等。

下面对于SimplE进行具体的分析:

         SimplE利用一个关系的逆来处理CP中两个向量的独立性,也就是说,对于一个实体e来说有he和te两个向量,对于关系r来说有v和v-1两个向量,同时相似性方程定义为:

        

为什么这样就可以解决独立性问题?我个人理解应该是因为我们在计算(e1,r,e2)的score分数时,同时考虑到了每个实体的两个向量,每个关系的两个向量,这样在后面更新的时候便可以同时更新了,从而避免了独立性问题。

在学习过程中,我们之前提到必须要设置负样本,如何设置,也是一个可以探究的问题(这里不是重点),在本文中,负样本的生成比较简单,每次取出小批量的正样本后,我们随机对头向量或尾向量进行更改,生成对应的负样本。这样生成的意义也是为了学习的必要,因为学习过程中需要一个监督标志,所以我们生成对应的负样本,使得正样本的score比负样本高,以此为标准来生成对应的损失函数,从而反馈更新。

将背景知识融入到嵌入过程中,在本文中,通过利用这些背景知识,将训练集中的冗余信息可以进行去除,从而提高训练速度

  相关解决方案