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

前言

知识表示学习是针对于知识图谱三元组所做的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} h

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值