知识图谱(知识表示)--Trans系列
- 基础知识
- TransE(Translating Embeddings for Modeling Multi-relational Data(2013))
- TransH(Knowledge Graph Embedding by Translating on Hyperplanes(2014))
- TransR(Learning Entity and Relation Embeddings forKnowledge Graph Completion(2015))
- TransD(Knowledge Graph Embedding via Dynamic Mapping Matrix(2015))
- TransSparse(Knowledge graph completion with adaptive sparse transfer matrix,2016)
Trans系列是知识表示学习的经典之作,思路以及实现不算复杂,当然效果也是见仁见智,是很有意思的一个系列。
基础知识
triple(三元组)是知识图谱的基础,在知识图谱中,通常是用一个三元组(前件h,关系r,后件t)来表示一条知识,前件通常为person、location、organization等实体,后件在前件基础之上还有属性等实体,要使用向量表示的话,可以使用one-hot向量(实际使用中通常是mulit-hot向量)来表示。但是问题也来了,one-hot向量维数太高,而且无法表示相近的实体或关系之间的相似程度。所以类比词向量的表示方法,也想使用分布式表示(distributed representation)来表示知识图谱中的实体和关系,通过学习获得它们的低维稠密表示。
trans系列就是词向量思想在知识表示学习领域上的应用
TransE(Translating Embeddings for Modeling Multi-relational Data(2013))
这是Trans系列的第一篇文章,模型的基本想法是前件的向量表示h与关系的向量表示r之和与后件的向量表示t越接近越好,即h+r≈t。这里的“接近”可以使用L1或L2范数(其他距离度量也可以)进行衡量。
要优化的目标函数使用带negative sampling的max margin损失函数,即L(y,y’)=max(0,margin−y+y’),其中y表示正样本的得分,y’表示负样本的得分。最小化这个损失函数可以使正样本的得分越来越高而负样本的得分越来越低,但是两个得分差距大到一定程度(margin)就足够了,再大的话得到的loss也只是0。在这里因为正负样本得分用的是距离,所以要加负号,即最终的损失函数为
L ( h , r , t ) = m a x ( 0 , d p o s − d n e g + m a r g i n ) L(h,r,t) = max(0, d_{pos} - d_{neg} + margin) L(h,r,t)=max(0,dpos−dneg+margin)
其 中 d = ∣ ∣ h + r + t ∣ ∣ 其中 d = ||h + r + t|| 其中d=∣∣h+r+t∣∣
为L1或者L2范数。论文中获得负样本并不是随机选取其他的三元组,其中还有一个trick,将正样本三元组中的前件或后件替换为一个随机的实体已获取负样本。
但是模型的简单也就带来了问题,它只适合处理一对一的关系,不适合一对多/多对一的关系。举个例子,有两个三元组(中国科学院大学,地点,北京)和(颐和园,地点,北京),使用TransE进行表示的话会得到中国科学院大学的表示向量和颐和园的表示向量很接近,甚至完全相同。但是它们的亲密度实际上可能没有这么大。
这个loss也限制了学习到向量的表示能力,后续有一些研究设计了更加合理的loss,取得了更好的效果
TransH(Knowledge Graph Embedding by Translating on Hyperplanes(2014))
TransH模型的目的就在于处理一对多/多对一的关系问题,而又不过分增加模型的复杂度和训练难度。模型的基本思想是针对每一个关系r,将前件h和后件t的向量表示投影到一个由向量wr确定的超平面得到向量h⊥和t⊥,在这个超平面上存在一个关系的表示向量r,与TransE一样通过训练使得h⊥ + r ≈ t⊥,因此每一个关系实际上是由向量wr和向量r共同表示的。
其中向量在超平面上的投影是这样计算的:
h ⊥ = h − w r T h w r h_{⊥} = h - w_{r}^{T}hw_{r} h