TransE算法介绍

Translating Embeddings for Modeling Multi-relational Data

一个简单的python版本的复现:  复现代码

TransE 算法是一种用于表示图结构中节点及关系的嵌入表示的算法,可以广泛应用于后续各类基于图谱的任务,如基于知识图谱的推荐算法CFKG利用transE对图谱中的entity及relation进行embedding用于后续的推荐任务。同时TransE算法也是后续改进版的TransD,TransH系列算法的基础。

在知识图谱中,一条内容可以表示为一个不可逆的三元组(sub,rel,obj),其中sub和obj用节点表示,均为entity,rel利用边进行表示,为relation(例如(Beijing, is capital of, China),在此三元组中Beijing和China均为entity用图谱中结点表示, is capital of是一种relation,用图谱中的边表示)。

(题外话:嵌入的目的是将以上的entity和relation利用向量进行表示。当然给图中每个结点一个编号1->n来表示,给每个边一个编号(n+1) -> m来表示 ,这样m个编号也可以唯一表示图中所有内容,这也是一种embedding,但是存在的问题是这样的方式很难携带更多的信息来表示这些结点和边之间的关系,例如上例中的Beijing和China应该有很近的关系,但在这种顺序编号表示方法中他们可能会差的很大。这对后续利用一些基于距离的模型而言会造成很多困扰。因此需要更有效的方法来对图谱中的内容进行嵌入表示。)

在TransE算法中,其用相同长度的向量来表示每一个结点和关系,因此entity和relation之间可以进行各种向量运算。

该算法为实现以上目的,核心的优化目标h + l \approx t,即对于(sub + rel) 得到的向量尽可能等于obj向量

该算法比较简单,具体步骤如上所示:

其中1-5行的初始化,主要参考了Xavier Initialization,因此选择了

uniform(-\frac{6}{\sqrt{k}},\frac{6}{\sqrt{k}})

这样一个分布进行初始化,关于该初始化分布的取值可以参考Xavier Initialization的论文有相关证明

 

第6行是随机采样一个minibatch用于改embedding的训练。

 

第7-11行是对该采样后的minibatch S_batch构造"负样本"(corrupted triplet),构造过程是对于一个给定的triplet(h, l, t),保持其h和l或l和t不变,将原triplet中的t或h替换为随机选择的一个entity t‘或h’,即构造后的corrupted triplet为(h', l, t) 或(h, l, t') ,注意,不要同时改变h和t,针对每个triplet仅生成一个corrupted triplet(h', l, t) 或(h, l, t')

 

第12行是优化训练过程,论文使用了SGD,使优化目标函数(或称loss)尽可能的小,对于优化函数

[\gamma + d(\emph{\textbf{h}} + \emph{\textbf{l}}, \emph{\textbf{t}} )-d(\emph{\textbf{h'}}+ \emph{\textbf{l}}, \emph{\textbf{h'}} )]_{+}

第一个距离d(h+l,t)是正样本之间的距离,应当尽可能的小,第二个d(h'+l, t')是假样本之间的距离,因此应该尽可能的大,而\gamma是一个超参数,为了让整体优化函数可以大于零

优化函数中的d可以采用L1距离或L2距离,\gamma是一个超参数,为了让整体优化函数可以大于零,对于不同的距离,其求导如下:

 

L1 距离:

\frac{\partial (\gamma +|h + l - t| -|h' + l - t'|)}{\partial h} = \left\{ \begin{array}{rcl} 1 & & h + l -t > 0\\ -1 & & h + l - t < 0\\ \end{array} \right.

\frac{\partial (\gamma +|h + l - t| -|h' + l - t'|)}{\partial t} = \left\{ \begin{array}{rcl} -1 & & h + l -t > 0\\ 1 & & h + l - t < 0\\ \end{array} \right.

\frac{\partial (\gamma +|h + l - t| -|h' + l - t'|)}{\partial l} = \left\{ \begin{array}{rcl} 2 & & h + l -t > 0, h' + l - t' < 0\\ 0 & & h + l - t < 0, h' + l - t' <0\\ 0 & & h + l - t > 0, h' + l - t' >0 \\ -2 & & h + l - t < 0, h'+l-t'>0\\ \end{array} \right.

\frac{\partial (\gamma +|h + l - t| -|h' + l - t'|)}{\partial h'} = \left\{ \begin{array}{rcl} 1 & & h' + l -t' > 0\\ -1 & & h' + l - t' < 0\\ \end{array} \right.

\frac{\partial (\gamma +|h + l - t| -|h' + l - t'|)}{\partial t'} = \left\{ \begin{array}{rcl} -1 & & h' + l -t' > 0\\ 1 & & h' + l - t' < 0\\ \end{array} \right.

 

L2距离:

\frac{\partial (\gamma +(h + l - t)^2 -(h' + l - t')^2)}{\partial h} = -2 (t-h-l)

......

\frac{\partial (\gamma +(h + l - t)^2 -(h' + l - t')^2)}{\partial l} = -2 (t-h-l) + 2(t' - h' - l)

根据以上求导结果利用随机梯度下降的方法可以对优化目标函数[\gamma + d(\emph{\textbf{h}} + \emph{\textbf{l}}, \emph{\textbf{t}} )-d(\emph{\textbf{h'}}+ \emph{\textbf{l}}, \emph{\textbf{h'}} )]_{+}进行优化。

 

 

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值