TransE算法

TransE算法中存在一个设定,它将关系看作是实体间的平移向量,也就是说对于一个三元组(h,r,t)对应的向量lh,lr,lt,希望

l h+l r =l t

这源于Mikolov等人在2013年提出的word2vec词表示学习模型,他们发现词向量空间存在着平移不变现象,如
C(king)C(queen)C(man)C(woman) C ( k i n g ) − C ( q u e e n ) ≈ C ( m a n ) − C ( w o m a n )

其中,C(w)就是word2vec学习到的词向量表示。我们可以看到,词向量可以获取词之间的某种隐含关系。

因此TransE中,对于给定一个由三元组 (h,r,t) 组成的训练集S,其中h,t属于实体集合E,r属于关系集合L,模型学习实体和关系的向量嵌入,通过不断的调整h,r,t,使得尽量接近上面提到的平移设定。每个元组有一个energy等于相似性度量 d(h+l,t),d代表曼哈顿距离或者欧氏距离。也就是说,当一个三元组的energy越小时,它越符合我们的期望,即lh+lr=lt。我们的目标就是降低正确三元组的energy。在训练集中有如下目标函数:

1 (1)

其中[x] +表示x大于0时取原数值,小于0时取0, γ γ 是一个边际参数,它是采用支持向量机(SVM)的思想,最大化正确三元组与错误三元组的距离,因此还需要构造错误三元组:
(2)

如公式(2)所示,通过随机选择实体替换头实体或者尾实体来构成错误的训练三元组。相比错误的元组,损失函数(1)更有利于降低正确元组的energy增加错误元组的energy。

优化方法选用随机梯度下降法(minibatch模型),对h,t,t有一些附加约束,实体嵌入的欧式距离值为1(对关系嵌入没有约束)。此约束可以有效地收敛。

所有实体按照算法提出的随机方式进行初始化。算法的每次迭代,都要先归一化实体嵌入向量。然后,从训练集中选取一部分元组为样例充当minibatch的训练元组。对每个这样的元组,取样一个错误元组。然后通过一定的学习率的梯度步骤更新参数。
算法的流程如下:
这里写图片描述

参考文献
Bordes A, Usunier N, Garcia-Duran A, et al. Translating Embeddings for Modeling Multi-relational Data[C]// International Conference on Neural Information Processing Systems. Curran Associates Inc. 2013:2787-2795.

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值