TransE算法的整理

不羁岁月 提交于 2019-12-10 22:09:00

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=th+r=t(头实体embedding加上关系embedding会等于尾实体embedding)
如果是一个错误的三元组,那么它们的embedding之间就不满足这种关系。

3.TransE的目标函数

目标是学得所有实体和关系的embedding。

TransE的直观含义,就是TransE基于实体和关系的分布式向量表示,将每个三元组实例(head,relation,tail)中的关系relation看做从实体head到实体tail的翻译。通过不断调整hhrrtt 使h+rh + r 尽可能与tt相等,理想情况下,一个正确的三元组的embedding之间会有h+r=th+r=t的关系,而错误的三元组之间不会有这个关系。

因此我们定义如下的势能函数,通过hhrr之和与t之差的二范数来表示这个三元组的势能。f(h,r,t)=h+rt2 f(h,r,t) = ||h+r-t||_2

二范数,即Euclid范数(欧几里得范数,常用计算向量长度),即向量元素绝对值的平方和再开方。
x2=i=1Nxi2 ||\textbf{x}||_2 =\sqrt{\sum_{i=1}^{N}x_i^2}

对于一个正确的三元组,我们希望势能越低越好,而对于一个错误的三元组,我们希望势能越高越好。这样我们就很容易给出目标函数了:L=(h,r,t)Δ(h,r,t)Δ[(fr(h,t)+γfr(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)]_+其中:

  • Δ\Delta 表示正确的三元组集合
  • Δ\Delta^{'}表示错误的三元组集合
  • γ\gamma 表示正负样本之间的间距,是一个常数,表示margin,通常取1
    [x]+[x]_+ 表示max(0,x)

对于上面说的错误的三元组 ,TransE采取的生成负例三元组的方法是,将正确的三元组的头实体、尾实体、关系三者之一随机替换为其他实体或关系,从而构成负例集合 ΔΔ′,这种方法称为均匀采样(与后面的伯努利采样相对比)。整体算法为:

显然,TransE模型在处理复杂关系建模(一对多、多对一、多对多关系)时会遇到困难,例如,对于一对多关系(美国,总统,奥巴马)和(美国,总统,特朗普),TransE模型会使得尾实体向量奥巴马和特朗普的表示非常相似。事实上,这是由于对于不同的关系rr,实体向量的表示总是相同的.

3.1注: 负样本(错误三元组)的产生

通常我们得到的知识库是三元组的集合,所有在知识库中出现了的三元组都被看作是正例,那我们如何产生负例呢?我们通常使用替换法来获取负例。

对于三元组(h,r,t)(h,r,t),我们随机用知识库中的某个实体hh′来替换hh,或者用某个实体tt′来替换tt,这样我们就得到了两个负例(h,r,t)(h′,r,t)(h,r,t)(h,r,t′)

为了避免出现生成的负例其实已经早就存在于知识库里的情况,我们可以对生成的负例进行过滤,如果它是知识库中的正例,那我们就不把它作为负例,而是重新生成一个负例。

TransH:

TransH:将知识嵌入到超平面,克服TransE模型的上述缺陷,将实体和关系嵌入到同一的向量空间,但实体在不同关系中有不同的表示。

TransH模型对于每一个关系rr,假设一个对应的超平面,关系rr落在该超平面上,其法向量为ωr\omega_r,且wr2=1\left\|w_{r}\right\|_{2}=1

类似于TransE模型的翻译在该超平面上进行,具体地,首先将头实体h和尾实体t投影到该超平面上得到hh{\perp}tt{\perp},如果我们限制ωr2=1||\omega_r||_2=1则有h=hwrThwrh_{\perp}=h-w_{r}^{T} h w_{r} t=twrThwrt_{\perp}=t-w_{r}^{T} h w_{r}
定义势能函数为:fr(h,t)=(hwrhwr)+dr(twrtwr)22f_{r}(\mathbf{h}, \mathbf{t})=\left\|\left(\mathbf{h}-\mathbf{w}_{r}^{\top} \mathbf{h} \mathbf{w}_{r}\right)+\mathbf{d}_{r}-\left(\mathbf{t}-\mathbf{w}_{r}^{\top} \mathbf{t} \mathbf{w}_{r}\right)\right\|_{2}^{2}

TransE与TransH的对比:

考虑之前总统的例子,也就是一个一对多的问题。将关系表示成超平面后,这种问题得到了解决。如下图所示,如果分别用tttt'表示两个总统,那么将三元组映射到超平面之后,tt_{\perp}tt_{\perp}'都能满足
<><美国,总统,*>这个三元组(如下图所示)。并且两个向量在向量空间还是不同的。多对一,多对多的情况也可以这样解决。

TransH的评价函数变为:

其中[]+[\quad]_+表示的就是TransE公式中的max0max(*,0),即对于中括号中的值,返回0和它之间的最大值。

上式还得满足三个限制。其中,

  • 限制(1)保证每个向量的模都小于1。
  • 限制(2)是drd_rωr\omega_r的投影长度除以drd_r的长度所得到的值要非常小,保证了drd_r确实在投影平面上。
  • 限制(3)规定投影平面的法向量的模为1,这样做是为了简化公式。否则这个公式的形式就会更为复杂。

值得一提的是,在本篇TransH论文中除了提出了TranH模型,另一贡献是提出了基于伯努利分布的采样方法。在原来的均匀采样中,容易将错误的负例引入到训练过程中来,例如,对于正例(美国,总统,奥巴马),随机替换奥巴马为罗斯福构成(美国,总统,罗斯福)作为负例,实际上由于罗斯福也是总统,这并不是一个负例。新的采样方法的动机是,对于一对多关系,我们以更大的概率来替换其头实体,对于多对一关系,我们以更大的概率来替换其尾实体。具体地,对于包含关系rr的所有三元组,我们定义两个统计量:

  • tph:tph: 平均每个头实体对应多少个尾实体
  • $hpt: $平均每个尾实体对应多少个头实体

进而,取伯努利分布的参数为p=tphtph+hptp=\frac{t p h}{t p h+h p t}即以概率pp替换三元组的头实体,以概率1p1−p替换三元组的尾实体。实际上, 反映了一对多关系的失衡程度。

虽然TransH模型使得同一实体在不同关系下通过投影有了不同的表示,但投影之后仍然处于原来的空间 Rn\mathbb{R}^n中,表示实体向量和关系向量均为nn维。换言之,TransH模型假设实体和关系处于相同的语义空间中,这在一定程度上限制了它的表示能力。下面的TransR模型改进了这一缺陷,提高了模型的表示能力

TransR&&CTransR:实体和关系分开嵌入

1 TransR

一个实体是多种属性的综合体,不同关系关注实体的不同属性。直觉上一些相似的实体在实体空间中应该彼此靠近,但是同样地,在一些特定的不同的方面在对应的关系空间中应该彼此远离。

在TransR中,模型将实体和关系嵌入到不同的空间中,在对应的关系空间中实现翻译。因此不同的关系应有不同的语义空间。

TransH模型是为每个关系假定一超平面,将实体投影到这个超平面上进行翻译;而TransR模型是为每个关系假定一语义空间 Rm\mathbb{R}^m,将实体映射到这个语义空间上进行翻译。这里mm表示关系向量的维度为 mm
TransR的基本思想如图1所示。对于每个元组hrt(h,r,t),首先将实体空间中的实体通过MrM_r向关系rr投影得到hrh_rtrt_r,然后使hr+rtrh_r+r≈t_r。特定的关系投影(彩色的圆圈表示)能够使得头/尾实体在这个关系下真实的靠近彼此,使得不具有此关系(彩色的三角形表示)的实体彼此远离。

TransR模型可描述为:

hr=hMr,tr=tMr\mathbf{h}_{r}=\mathbf{h} \mathbf{M}_{r}, \quad \mathbf{t}_{r}=\mathbf{t} \mathbf{M}_{r} fr(h,t)=hr+rtr22f_{r}(h, t)=\left\|\mathbf{h}_{r}+\mathbf{r}-\mathbf{t}_{r}\right\|_{2}^{2}

Reference

http://aiblog.top/2019/07/08/Trans%E7%B3%BB%E5%88%97%E6%A8%A1%E5%9E%8B%E8%AF%A6%E8%A7%A3/

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!