TransH 算法详解

TransH 算法详解


算法背景

transE算法存在的问题

在我的上一篇博客中,提到了TransE算法。其在知识表示的引用中因为其简单,高效的特性而广受欢迎。但是其也存在一定的缺陷。例如在处理自反关系,以及一对多、多对一、多对多关系时存在一些不足。

通过上一篇博客容易知道,TransE算法的核心思想是对于一个三元组 ( h , r , t ) ∈ Δ (h, r, t) \in \Delta (h,r,t)Δ( Δ \Delta Δ 表示正确的三元组集合 Δ ′ \Delta ' Δ表示不正确的三元组集合,所以 ( h , r , t ) ∈ Δ (h, r, t) \in \Delta (h,r,t)Δ表示这个三元组 ( h , r , t ) (h, r, t) (h,r,t)是正确的),那么应该有 h + r = d h+r = d h+r=d。于是可以从TransE模型中得到两个结论:

  1. 如果 ( h , r , t ) ∈ Δ (h,r,t) \in \Delta (h,r,t)Δ 并且 ( t , r , h ) ∈ Δ (t,r,h) \in \Delta (t,r,h)Δ ,即 关系r 是一个自反的映射,那么可以知道 r = 0 r = 0 r=0并且 h = t h = t h=t
  2. 如果 ∀ i ∈ { 0 , 1 , 2 , . . . , m } , ( h i , r , t ) ∈ Δ \forall i \in \{0,1,2,...,m\}, (h_i,r,t) \in \Delta i{0,1,2,...,m},(hi,r,t)Δ, 也就是说 r 是一个 m - 1的映射,那么 h 0 = . . . . = h m h_0 = .... = h_m h0=....=hm。 相似的,如果 ∀ i ∈ { 0 , 1 , 2 , . . . , m } , ( h , r , t i ) ∈ Δ \forall i \in \{0,1,2,...,m\}, (h,r,t_i) \in \Delta i{0,1,2,...,m},(h,r,ti)Δ, 也就是说 r 是一个 m - 1的映射,那么 t 0 = . . . . = t m t_0 = .... = t_m t0=....=tm

从上述结果可以发现,transE算法在处理自反关系,以及多对一、一对多、多对多关系中,会使得一些不同的实体具有相同或者相似的向量。其根本原因在于,出现在多个关系中的同一个实体的表示是相同的

解决方法

为了解决TransE在面对自反关系,以及多对一、一对多、多对多关系的不足。2014年Wang Z, Zhang J, Feng J, et al.提出了transH模型,其核心思想是对每一个关系定义一个超平面 W r W_r Wr,和一个关系向量 d r d_r dr h ⊥ , t ⊥ h_{\perp },t_{\perp } h,t h , t h,t h,t W r W_r Wr上的投影,这里要求正确的三元组需要满足 h r + d r = t r h_r + d_r = t_r hr+dr=tr。这样能够使得同一个实体在不同关系中的意义不同,同时不同实体,在同一关系中的意义,也可以相同

算法描述

几何含义

在这里插入图片描述

如上图所示, 对于正确的三元组 ( h , r , t ) ∈ Δ (h, r, t) \in \Delta (h,r,t)Δ 来说,其所需要满足的关系如图所示。那么对于一个实体 h " h" h" 如果满足 ( h " , r , t ) ∈ Δ (h", r, t) \in \Delta (h",r,t)Δ,在transE中是需要 h " = h h" = h h"=h,而在transH算法中则将约束放宽到 h , h " h,h" h,h" W r W_r Wr上的投影相同就行了,也就能将 h " , h h",h h",h区分开来,从而具有不同的表示。

目标函数

于是我们定义在transE中的 d ( h + r , t ) d(h+r,t) d(h+r,t)为:
d ( h + r , t ) = f r ( h , t ) = ∣ ∣ h ⊥ + d r − t ⊥ ∣ ∣ 2 2 d(h+r,t) = f_r(h,t) = || h_{\perp} + d_r - t_{\perp}||_2 ^2 d(h+r,t)=fr(h,t)=h+drt22

对于平面 W r W_r Wr我们可以用法向量来表示,我们不妨假设 w r w_r wr为平面 W r W_r Wr的法向量,并加约束条件 ∣ ∣ w r ∣ ∣ 2 2 = 1 ||w_r||_2 ^2 = 1 wr22=1, 所以我们知道 h h h w r w_r wr上的投影为
h w r = w T h w h_{w_r} = w^T h w hwr=wThw,这是因为 w T h = ∣ w ∣ ∣ h ∣ c o s θ w^Th=|w||h|cos\theta wTh=whcosθ表示 h h h w w w方向上投影的长度(带正负号),乘以 w w w h h h w w w上的投影,所以可以知道:
h ⊥ = h − h w r = h − w T h w h_{\perp} = h - h_{w_r} = h - w^T h w h=hhwr=hwThw

如下图所示

在这里插入图片描述

相似的可以知道

t ⊥ = t − t w r = t − w r T t w r t_{\perp} = t - t_{w_r} = t - w_r ^T t w_r t=ttwr=twrTtwr

所以

f r ( h , t ) = ∣ ∣ h − w r T h w r + d r − t + w r T t w r ∣ ∣ 2 2 f_r(h,t) = || h - w_r^T h w_r + d_r - t + w_r^T t w_r||_2 ^2 fr(h,t)=hwrThwr+drt+wrTtwr22

所以得到目标函数

min ⁡ ∑ ( h , r , t ) ∈ S ∑ ( h ′ , r , t ′ ) ∈ S ′ [ γ + f r ( h , t ) − f r ( h ′ , t ′ ) ] + \min {\sum _ {(h,r,t) \in S} \sum _{(h', r, t') \in S'} [\gamma + f_r(h , t) - f_r(h',t')]_+} min(h,r,t)S(h,r,t)S[γ+fr(h,t)fr(h,t)]+

梯度

定义:
l = [ γ + f r ( h , t ) − f r ( h ′ , t ′ ) ] + = [ γ + ( h − w r T h w r + d r − t + w r T t w r ) 2 − ( h ′ − w r T h ′ w r + d r − t ′ + w r T t ′ w r ) 2 ] + l = [\gamma + f_r(h , t) - f_r(h',t')]_+ = [\gamma + (h - w_r^T h w_r + d_r - t + w_r^T t w_r) ^ 2 - (h' - w_r^T h' w_r + d_r - t' + w_r^T t' w_r)^2]_+ l=[γ+fr(h,t)fr(h,t)]+=[γ+(hwrThwr+drt+wrTtwr)2(hwrThwr+drt+wrTtwr)2]+

于是有:
∂ l ∂ h = { 2 ( h − w r T h w r + d r − t + w r T t w r ) ⋅ ( i ^ − ( w i 2 ) ⃗ ) , if  l &gt; 0 ; 0 , if  l &lt; = 0 \frac{\partial l}{\partial h} = \begin{cases} 2(h - w_r^T h w_r + d_r - t + w_r^T t w_r)\cdot(\hat i - \vec{(w_i ^2)} ), &amp; \text{if } l &gt; 0;\\ 0, &amp;\text{if } l &lt;= 0 \end{cases} hl={2(hwrThwr+drt+wrTtwr)(i^(wi2) ),0,if l>0;if l<=0

∂ l ∂ t = { 2 ( h − w r T h w r + d r − t + w r T t w r ) ⋅ ( i ^ − ( w i 2 ) ⃗ ) , if  l &gt; 0 ; 0 , if  l &lt; = 0 \frac{\partial l}{\partial t} = \begin{cases} 2(h - w_r^T h w_r + d_r - t + w_r^T t w_r)\cdot(\hat i - \vec{(w_i ^2)} ), &amp; \text{if } l &gt; 0;\\ 0, &amp;\text{if } l &lt;= 0 \end{cases} tl={2(hwrThwr+drt+wrTtwr)(i^(wi2) ),0,if l>0;if l<=0

∂ l ∂ h ′ = { 2 ( h ′ − w r T h ′ w r + d r − t ′ + w r T t ′ w r ) ⋅ ( i ^ − ( w i 2 ) ⃗ ) , if  l &gt; 0 ; 0 , if  l &lt; = 0 \frac{\partial l}{\partial h&#x27;} = \begin{cases} 2(h&#x27; - w_r^T h&#x27; w_r + d_r - t&#x27; + w_r^T t&#x27; w_r)\cdot(\hat i - \vec{(w_i ^2)} ), &amp; \text{if } l &gt; 0;\\ 0, &amp;\text{if } l &lt;= 0 \end{cases} hl={2(hwrThwr+drt+wrTtwr)(i^(wi2) ),0,if l>0;if l<=0

∂ l ∂ t ′ = { 2 ( h ′ − w r T h ′ w r + d r − t ′ + w r T t ′ w r ) ⋅ ( i ^ − ( w i 2 ) ⃗ ) , if  l &gt; 0 ; 0 , if  l &lt; = 0 \frac{\partial l}{\partial t&#x27;} = \begin{cases} 2(h&#x27; - w_r^T h&#x27; w_r + d_r - t&#x27; + w_r^T t&#x27; w_r)\cdot(\hat i - \vec{(w_i ^2)} ), &amp; \text{if } l &gt; 0;\\ 0, &amp;\text{if } l &lt;= 0 \end{cases} tl={2(hwrThwr+drt+wrTtwr)(i^(wi2) ),0,if l>0;if l<=0

∂ l ∂ w r = { 2 ( h − w r T h w r + d r − t + w r T t w r ) ⋅ ( w T t − w T h ) ( t − h ) − 2 ( h ′ − w r T h ′ w r + d r − t ′ + w r T t ′ w r ) ⋅ ( w T t ′ − w T h ′ ) ( t ′ − h ′ ) , if  l &gt; 0 ; 0 , if  l &lt; = 0 \frac{\partial l}{\partial w_r} = \begin{cases} 2(h - w_r^T h w_r + d_r - t + w_r^T t w_r)\cdot(w^Tt -w^Th)(t - h) - \\ 2(h&#x27; - w_r^T h&#x27; w_r + d_r - t&#x27; + w_r^T t&#x27; w_r)\cdot(w^Tt&#x27; -w^Th&#x27;)(t&#x27; - h&#x27;), &amp; \text{if } l &gt; 0;\\ 0, &amp;\text{if } l &lt;= 0 \end{cases} wrl=2(hwrThwr+drt+wrTtwr)(wTtwTh)(th)2(hwrThwr+drt+wrTtwr)(wTtwTh)(th),0,if l>0;if l<=0

其中 i ^ \hat i i^ 是单位向量;
( w i 2 ) ⃗ = ( w 1 2 , w 2 2 , . . . ) \vec{(w_i ^2) }= (w_1^2, w_2^2,...) (wi2) =(w12,w22,...)也是一个向量。

用到的知识有 链式求导法则和向量的求导法则。 自己算的不确定算的对不对 希望大佬们帮忙指正,谢谢!

参考文献或博客

Wang Z, Zhang J, Feng J, et al. Knowledge Graph Embedding by Translating on Hyperplanes[C]//AAAI. 2014, 14: 1112-1119.

矩阵论:向量求导/微分和矩阵微分

TransE算法详解

TransH 是一种用于知识图谱嵌入学习的算法,它是由王垚等人在 2014 年提出的。TransH 算法主要思想是将实体和关系都嵌入到一个低维的空间中,并通过一定的方式计算它们之间的关系。该算法在处理一些复杂的知识图谱任务时表现良好。 TransH 算法的核心思想是将关系表示为一个超平面,即每个关系都有一个对应的超平面来刻画它。而实体则表示为在该超平面上的点。这样做的好处是可以将关系的语义进行更好的刻画,而不仅仅是简单地将实体和关系嵌入到同一个向量空间中。具体来说,TransH 算法将每个实体和关系都表示为一个向量,然后通过一定的方式计算它们之间的关系。 具体来说,对于一个三元组 $(h,r,t)$,其中 $h$ 表示头实体,$r$ 表示关系,$t$ 表示尾实体,TransH 算法的计算方式如下: 1. 对于一个头实体 $h$,将其表示为一个向量 $\textbf{h}$。 2. 对于一个关系 $r$,将其表示为一个超平面 $\textbf{r}$。 3. 对于一个尾实体 $t$,将其表示为一个向量 $\textbf{t}$。 4. 利用向量 $\textbf{h}$ 和超平面 $\textbf{r}$ 计算出一个向量 $\textbf{h}_r$,表示头实体 $h$ 在关系 $r$ 下的嵌入向量,具体计算方式为 $\textbf{h}_r = \textbf{h} - \textbf{r}^\top\textbf{h}\textbf{r}$。 5. 利用向量 $\textbf{t}$ 和超平面 $\textbf{r}$ 计算出一个向量 $\textbf{t}_r$,表示尾实体 $t$ 在关系 $r$ 下的嵌入向量,具体计算方式为 $\textbf{t}_r = \textbf{t} - \textbf{r}^\top\textbf{t}\textbf{r}$。 6. 计算两个向量 $\textbf{h}_r$ 和 $\textbf{t}_r$ 的相似度得分,得分越高表示两个实体越可能存在该关系,具体计算方式为 $\text{score}(h,r,t) = -\|\textbf{h}_r + \textbf{r} - \textbf{t}_r\|_2^2$。 TransH 算法的优点在于它可以更好地刻画关系的语义,从而提高知识图谱的表示效果。同时,TransH 算法也可以处理一些复杂的关系,例如多对多关系和自反关系等。缺点是计算量较大,同时在一些简单的任务上可能表现不如其他算法
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值