TransE
1 TransE的作用
TransE 作用就是把三元组翻译成embedding词向量的方法
三元组,也就是(头实体,关系,尾实体)的形式,头实体和尾实体统称为实体。为了简化起见,我们用(h,r,t)来表示三元组。其中
h表示头实体
r表示关系
t表示尾实体
我们的目标是将知识库中所有的实体、关系表示成一个低维的向量。我们把三元组(h,r,t)对应的向量表示为(h,r,t)。
h 表示头实体对应的向量
r 表示关系对应的向量
t 表示尾实体对应的向量
这样,“姚明”这个实体就不再是一个孤立的符号了,而是一个低维的稠密的向量。它看起来就像下面这样:
[0.01, 0.04, 0.8, 0.32, 0.09, 0.18]
上面这个向量的维度是6维,真实情况下向量的维度会比这个大,但具体取多大并没有一个统一的标准,一般取为50~200左右。
2 TransE的基本思想
TransE模型认为一个正确的三元组的embedding向量 ( h , r , t ) (h,r,t) (h,r,t)会满足公式: h + r = t h+r=t h+r=t(头实体embedding加上关系embedding会等于尾实体embedding)
如果是一个错误的三元组,那么它们的embedding之间就不满足这种关系。
3.TransE的目标函数
目标是学得所有实体和关系的embedding。
TransE的直观含义,就是TransE基于实体和关系的分布式向量表示,将每个三元组实例(head,relation,tail)中的关系relation看做从实体head到实体tail的翻译。通过不断调整 h h h、 r r r和 t t t 使 h + r h + r h+r 尽可能与 t t t相等,理想情况下,一个正确的三元组的embedding之间会有 h + r = t h+r=t h+r=t的关系,而错误的三元组之间不会有这个关系。
因此我们定义如下的势能函数,通过 h h h和 r r r之和与t之差的二范数来表示这个三元组的势能。 f ( h , r , t ) = ∣ ∣ h + r − t ∣ ∣ 2 f(h,r,t) = ||h+r-t||_2 f(h,r,t)=∣∣h+r−t∣∣2
二范数,即Euclid范数(欧几里得范数,常用计算向量长度),即向量元素绝对值的平方和再开方。
∣ ∣ x ∣ ∣ 2 = ∑ i = 1 N x i 2 ||\textbf{x}||_2 =\sqrt{\sum_{i=1}^{N}x_i^2} ∣∣x∣∣2=i=1∑Nxi2
对于一个正确的三元组,我们希望势能越低越好,而对于一个错误的三元组,我们希望势能越高越好。这样我们就很容易给出目标函数了: L = ∑ ( h , r , t ) ∈ Δ ∑ ( h ′ , r ′ , t ′ ) ∈ Δ ′ [ ( f r ( h , t ) + γ − f r ′ ( h ′ , t ′ ) ) ] + L=\sum_{(h, r, t) \in \Delta}\sum_{(h^{\prime}, r^{\prime}, t^{\prime}) \in \Delta^{\prime}} [ \left(f_{r}(h, t)+\gamma-f_{r^{\prime}}\left(h^{\prime}, t^{\prime}\right)\right)]_+ L=(h,r,t)∈Δ∑