知识图谱(Knowledge Graph or KG),如: Free Base、DBpedia、YAGO、NELL等已经成功地应用到语义分析、信息抽取、问答系统等方面。知识图谱是由实体(entity)和关系(relations: 不同类型的边)构成的多关系图。每一条边都以三元组的形式呈现(head entity, relation, tail entity),这也叫做fact。
KG Embedding目的是将实体和关系映射到低维连续的向量空间,从而简化KG的相关计算。KG Embedding的一般步骤:
- 表示图中的实体和关系
- 定义一个打分函数(scoring function)
- 学习实体和关系的向量表示
在这里,主要总结基于距离的模型,Translational Distance Model.
TransE —— 给定一个fact(h,r,t),TrasE模型将关系表示为translation 向量
r⃗ ,这样就能以较低的错误把实体的向量
h⃗ ,t⃗ 连接起来,即:
h⃗ +r⃗ ≈t⃗ 。 打分函数定义为:
h⃗ +r⃗ 与
t⃗ 之间的距离:
fr(h,t)=−||h⃗ +r⃗ −t⃗ ||1/2
如果(h,r,t)存在,那么 分数
frh,t 就比较高。示意图如下:
在训练过程中,最小化的是一个hinge loss函数:
L=∑(h,r,t)∈S∑(h′,r,t′)∈S′(h,r,t)[γ+fr(h,t)−fr(h′,t′)]+
其中,
[x]+ 表示
max{0,x} ,
γ 是margin超参数。根据max-margin的思想,
L 表示的是负样本的分数最多比正样本高
γ ,再大就没有奖励了。也就是说正样本
h⃗ +r⃗ 与
t⃗ 的距离小,负样本的距离大。E是实体的集合,S表示正样本的集合 ,
S′(h,r,t) 是负样本:
S′(h,r,t)={(h′,r,t)|h′∈E}∪{(h,r,t′)|t′∈E}
虽然TransE模型简单有效,但是它并不能处理1-N,N-1, N-N的问题。比如,一个导演指导了多部电影,根据头节点h(导演),关系r(指导),尾节点t(电影)进行模型训练,那么这些电影向量的距离是很近的,而事实上他们是完全不同的实体。
为了克服这个缺陷,有些工作提出了relation-specific实体embedding。
TransH —— TransE的问题所在是,在任何relation下实体的向量表示都是相同的,这就造成了以下两点: 1. 如果
(h,r,t)∈fact 并且
(t,r,h)∈fact ,也就是说r是一个自反的映射,那么
r⃗ =0⃗ 并且
h⃗ =t⃗ ; 2. 如果r是一个N-1的映射,
∀i∈0,⋯,m(hi,r,t) ,那么
h⃗ 0=⋯=h⃗ m ;同样的,如果r是一个1-N的映射,
∀i∈0,⋯,m(h,r,ti) ,那么
t⃗ 0=⋯=t⃗ m TransH 依然把实体 h,t 表示为向量,但是把关系r表示成两个向量:超平面的法向量
W⃗ r 和关系r在超平面内的向量表示
d⃗ r 。如下图所示:
头结点h和尾节点t映射到超平面的表示为:
h⃗ ⊥=h⃗ −W⃗ Trh⃗ W⃗ rt⃗ ⊥=t⃗ −W⃗ Trt⃗ W⃗ r
这样对于不同的关系r节点有不同的表示,可以解决1-N,N-1,N-N的问题:节点在关系
ri 中相似,但可能在关系
rj 中不相似。
约束
||W⃗ r||2=1 打分函数为:
fr(h⃗ ,t⃗ )=||(h⃗ −W⃗ Trh⃗ W⃗ r)+dr−(t⃗ −W⃗ Trt⃗ )||22
如果(h,r,t)是fact那么这个分数是比较低的(距离比较小),否则分数比较高(距离比较大)。
此外,在采负样本
(h′,r,t) 或
(h,r,t′) 的时候,TransH 为了降低错误,对于1-N 做了如下处理,以更大的概率替换头节点;同样的,对于N-1以更大的概率替换尾节点。
TransR —— 在TransE和TransH这两个模型中,实体和关系向量被映射到同一个向量空间。TansR把关系向量映射到不同的空间。与TransH相比,TransR把关系r映射到与它相关的空间而不是超平面。框架图如下所示:
TransR对每个关系r都分配了一个空间 Mr∈Rk×d 。头结点和尾结点可以表示为 h⃗ ,t⃗ ∈Rk ,关系可以表示为 r∈Rd 。首先把头结点和尾结点映射到relation空间,映射向量定义为:
h⃗ r=h⃗ Mrt⃗ r=t⃗ Mr
对应的打分函数是:
fr(h⃗ ,t⃗ )=||h⃗ r+r⃗ −t⃗ r||22||h⃗ ||2≤1,||t⃗ ||2≤1,||r⃗ ||2≤1,||h⃗ r||2≤1,||t⃗ r||2≤1
TransR /CTransR模型虽然效果比现有的模型好,但是模型参数较多,相比TransE、TransH模型而言,没有那么简洁高效。
TransD —— TransD可以说是TransR/CTransR的简化版本,它用两个向量来动态重构mapping矩阵。给定一个triplet(h,r,t),一共有两种向量 : 1. 代表 实体/关系 意义的向量:
h⃗ ,r⃗ ,t⃗ ; 2. 动态重构映射矩阵的向量:
h⃗ p,r⃗ p,t⃗ p ; 其中,
r⃗ ,r⃗ p∈Rm ,
h⃗ ,h⃗ p,t⃗ ,t⃗ p∈Rn 。映射矩阵通过映射向量动态重建。再将头结点和尾结点映射到关系r的空间,进行打分。TransD中没有很复杂的矩阵运算,取而代之的是向量运算,因而比TransR的复杂度要低。示意图如下:
在TransD中,映射矩阵是由关系和实体共同决定的:
Mrh=r⃗ ph⃗ Tp+Im×nMrt=r⃗ pt⃗ Tp+Im×n
其中 Im×n 是单位矩阵。那么映射向量为:
h⃗ ⊥=Mrhh⃗ t⃗ ⊥=Mrtt⃗
打分函数是:
fr(h⃗ ,t⃗ )=||h⃗ ⊥+r⃗ −t⃗ ⊥||22||h⃗ ||2≤1,||r⃗ ||2≤1,||t⃗ ||2≤1,||h⃗ ⊥||2≤1,||t⃗ ⊥||2≤1
TransD与TransR, TransH, TransR的关联:
TransE
当m=n(即:实体向量和关系向量的维度相等),并且映射向量( h⃗ p,r⃗ p,t⃗ p )设为0的时候,TransD就退化成TransE。
TransH
如果m=n(即:实体向量和关系向量的维度相等),那么实体的映射向量可以表示为:
h⃗ ⊥=Mrhh⃗ =h⃗ +h⃗ Tph⃗ r⃗ pt⃗ ⊥=Mrtt⃗ =t⃗ +t⃗ Tpt⃗ r⃗ p
从这里来看,TransD和TransH的不同是,TransH的映射向量只跟关系向量有关,TransD的映射向量与关系向量和实体向量都有关。 TransR/CTransR
相对于TransR,TransD的区别是:通过为每个实体和关系设置映射向量 h⃗ p ,对每个triplet动态重构两个映射矩阵。一般设置 m≥n ,映射向量可表示为:
h⃗ ⊥=Mrhh⃗ =h⃗ Tph⃗ r⃗ p+[h⃗ T,0⃗ T]Tt⃗ ⊥=Mrtt⃗ =t⃗ Tpt⃗ r⃗ p+[t⃗ T,0⃗ T]T
不同的是,TransD计算量小,可以应用到大规模网络。
参考:
Knowledge Graph Embedding: A Survey of Approaches and Applications
TransE: Translating Embeddings for Modeling Multi-relational Data
TransH:Knowledge Graph Embedding by Translating on Hyperplanes
TransR: Learning Entity and Relation Embeddings for Knowledge Graph Completion
TransD: Knowledge Graph Embedding via Dynamic Mapping Matrix