知识图谱——TransE模型原理
知識圖譜——TransE模型原理
1 TransE模型介紹
1.1 TransE模型引入
在我們之前的文章中,提到了知識圖譜補全任務的前提任務是知識表示學習,在知識表示學習中,最為經典的模型就是TransE模型,TransE模型的核心作用就是將知識圖譜中的三元組翻譯成embedding向量。
1.2 TransE模型思想
為了后面便于表示,我們先設定一些符號
在TransE模型中,有這樣一個假設:
t=h+rt=h+rt=h+r
也就是說,正常情況下的尾實體向量=頭實體向量+關系向量。用圖的方式描述如下:
如果一個三元組不滿足上述的的關系,我們就可以認為這是一個錯誤的三元組。
1.3 TransE模型的目標函數
首先,我們先來介紹兩個數學概念:
L1范數
也稱為曼哈頓距離,對于一個向量X而言,其L1范數的計算公式為:
∣∣X∣∣L1=∑i=1n∣xi∣||X||_{L1}=∑_{i=1}^n|x_i|∣∣X∣∣L1?=i=1∑n?∣xi?∣
其中,xix_ixi?表示向量X的第i個屬性值,這里我們取的是絕對值。并且,使用L1范數可以衡量兩個向量之間的差異性,也就是兩個向量的距離。
DistanceL1(X1,X2)=∑i=1n∣X1i?X2i∣Distance_{L1}(X_1,X_2)=∑_{i=1}^n|X_{1i}-X_{2i}|DistanceL1?(X1?,X2?)=i=1∑n?∣X1i??X2i?∣
L2范數
也稱為歐式距離,對于一個向量X而言,其L2范數的計算公式為:
∣∣X∣∣L2=∑i=1nXi2||X||_{L2}=\sqrt{∑_{i=1}^nX_i^2}∣∣X∣∣L2?=i=1∑n?Xi2??
同樣,L2范數也可以用來衡量兩個向量之間的差距:
DistanceL2(X1,X2)=∑i=1n(X1i?X2i)2Distance_{L2}(X_1,X_2)=∑_{i=1}^n(X_{1i}-X_{2i})^2DistanceL2?(X1?,X2?)=i=1∑n?(X1i??X2i?)2
根據我們上面介紹的Trans中的假設,我們可以知道,對于一個三元組而言,頭實體向量和關系向量之和與尾實體向量越接近,那么說明該三元組越接近一個正確的三元組,差距越大,那么說明這個三元組越不正常。那么我們可以選擇L1或者L2范數來衡量三個向量的差距。而我們的目標就是使得爭取的三元組的距離越小越好,錯誤的三元組距離越大越好,也就是其相反數越小越好。數學化的表示就是:
min∑(h,r,t)∈G∑(h′,r′,t′)∈G′[γ+distance(h+r,t)?distance(h′+r′,t′)]+min∑_{(h,r,t)∈G}∑_{(h',r',t')∈G'}[γ+distance(h+r,t)-distance(h'+r',t')]_+min(h,r,t)∈G∑?(h′,r′,t′)∈G′∑?[γ+distance(h+r,t)?distance(h′+r′,t′)]+?
其中:
(h,r,t)(h,r,t)(h,r,t):表示正確的三元組
(h′,r′,t′)(h',r',t')(h′,r′,t′): 表示錯誤的三三元組
γγγ :表示正樣本和負樣本之間的間距,一個常數
[x]+[x]_+[x]+?:表示max(0,x)
我們來簡單的解釋以下目標函數,我們的目標是讓正例的距離最小,也就是min(distance(h+r,t))min(distance(h+r,t))min(distance(h+r,t)),讓負例的相反數最小也就是(min(?distance(h′+r′,t′)))(min(-distance(h'+r',t')))(min(?distance(h′+r′,t′))),對于每一個正樣本和負樣本求和,再增加一個常數的間距,就是整體距離的最小值。也就是我們的目標函數。
1.4 目標函數的數學推導
這里,我們采用歐氏距離作為distance函數,則目標函數可以改寫為:
min∑(h,r,t)∈G∑(h′,r′,t′)∈G′[γ+(h+r?t)2?(h′+r′?t′)2]+min∑_{(h,r,t)∈G}∑_{(h',r',t')∈G'}[γ+(h+r-t)^2-(h'+r'-t')^2]_+min(h,r,t)∈G∑?(h′,r′,t′)∈G′∑?[γ+(h+r?t)2?(h′+r′?t′)2]+?
則對于損失函數loss就有:
Loss=∑(h,r,t)∈G∑(h′,r′,t′)∈G′[γ+(h+r?t)2?(h′+r?t′)2]+Loss = ∑_{(h,r,t)∈G}∑_{(h',r',t')∈G'}[γ+(h+r-t)^2-(h'+r-t')^2]_+Loss=(h,r,t)∈G∑?(h′,r′,t′)∈G′∑?[γ+(h+r?t)2?(h′+r?t′)2]+?
在損失函數中,我們知道所有的參數包括{h,r,t,h′,r,t′h,r,t,h',r,t'h,r,t,h′,r,t′}。下面,我們來逐個進行梯度推導:
?Loss?hi=∑(h,r,t)∈G∑(h′,r,t′)∈G′?[γ+(h+r?t)2?(h′+r?t′)2]+?hi\frac{?Loss}{?h_i}= ∑_{(h_,r,t)∈G}∑_{(h',r,t')∈G'}\frac{?[γ+(h+r-t)^2-(h'+r-t')^2]_+}{?h_i}?hi??Loss?=(h,?r,t)∈G∑?(h′,r,t′)∈G′∑??hi??[γ+(h+r?t)2?(h′+r?t′)2]+??
在整個求和的過程中,只針對包含hih_ihi?的項求導:
?[γ+(hi+r?t)2?(h′+r?t′)2]+?hi\frac{?[γ+(h_i+r-t)^2-(h'+r-t')^2]_+}{?h_i}?hi??[γ+(hi?+r?t)2?(h′+r?t′)2]+??
有:
?[γ+(hi+r?t)2?(h′+r?t′)2]+?hi={2(hi+r?t)γ+(h+r?t)2?(h′+r?t′)2>00γ+(h+r?t)2?(h′+r?t′)2<=0\frac{?[γ+(h_i+r-t)^2-(h'+r-t')^2]_+}{?h_i}= \begin{cases} 2(h_i+r-t)&&γ+(h+r-t)^2-(h'+r-t')^2>0\\ 0 &&γ+(h+r-t)^2-(h'+r-t')^2<=0 \end{cases}?hi??[γ+(hi?+r?t)2?(h′+r?t′)2]+??={2(hi?+r?t)0??γ+(h+r?t)2?(h′+r?t′)2>0γ+(h+r?t)2?(h′+r?t′)2<=0?
則原式變為:
?Loss?hi=∑(hi,r,t)∈G∑(h′,r,t′)∈G′{2(hi+r?t)γ+(hi+r?t)2?(h′+r?t′)2>00γ+(hi+r?t)2?(h′+r?t′)2<=0\frac{?Loss}{?h_i}= ∑_{(h_i,r,t)∈G}∑_{(h',r,t')∈G'} \begin{cases} 2(h_i+r-t)&&γ+(h_i+r-t)^2-(h'+r-t')^2>0\\ 0 &&γ+(h_i+r-t)^2-(h'+r-t')^2<=0 \end{cases} ?hi??Loss?=(hi?,r,t)∈G∑?(h′,r,t′)∈G′∑?{2(hi?+r?t)0??γ+(hi?+r?t)2?(h′+r?t′)2>0γ+(hi?+r?t)2?(h′+r?t′)2<=0?
同理對于ti,hi′,ti′t_i,h_i',t_i'ti?,hi′?,ti′?有:
?Loss?ti=∑(h,r,ti)∈G∑(h′,r,t′)∈G′{?2(h+r?ti)γ+(h+r?ti)2?(h′+r?t′)2>00γ+(h+r?ti)2?(h′+r?t′)2<=0\frac{?Loss}{?t_i}= ∑_{(h,r,t_i)∈G}∑_{(h',r,t')∈G'} \begin{cases} -2(h+r-t_i)&&γ+(h+r-t_i)^2-(h'+r-t')^2>0\\ 0 &&γ+(h+r-t_i)^2-(h'+r-t')^2<=0 \end{cases} ?ti??Loss?=(h,r,ti?)∈G∑?(h′,r,t′)∈G′∑?{?2(h+r?ti?)0??γ+(h+r?ti?)2?(h′+r?t′)2>0γ+(h+r?ti?)2?(h′+r?t′)2<=0?
?Loss?hi′=∑(h,r,t)∈G∑(hi′,r,t′)∈G′{?2(h′+r?t′)γ+(h+r?t)2?(hi′+r?t′)2>00γ+(h+r?t)2?(hi′+r?t′)2<=0\frac{?Loss}{?h_i'}= ∑_{(h,r,t)∈G}∑_{(h_i',r,t')∈G'} \begin{cases} -2(h'+r-t')&&γ+(h+r-t)^2-(h_i'+r-t')^2>0\\ 0 &&γ+(h+r-t)^2-(h_i'+r-t')^2<=0 \end{cases} ?hi′??Loss?=(h,r,t)∈G∑?(hi′?,r,t′)∈G′∑?{?2(h′+r?t′)0??γ+(h+r?t)2?(hi′?+r?t′)2>0γ+(h+r?t)2?(hi′?+r?t′)2<=0?
?Loss?ti′=∑(h,r,t)∈G∑(h′,r,ti′)∈G′{2(h′+r?t′)γ+(h+r?t)2?(h′+r?ti′)2>00γ+(h+r?t)2?(h′+r?ti′)2<=0\frac{?Loss}{?t_i'}= ∑_{(h,r,t)∈G}∑_{(h',r,t_i')∈G'} \begin{cases} 2(h'+r-t')&&γ+(h+r-t)^2-(h'+r-t_i')^2>0\\ 0 &&γ+(h+r-t)^2-(h'+r-t_i')^2<=0 \end{cases} ?ti′??Loss?=(h,r,t)∈G∑?(h′,r,ti′?)∈G′∑?{2(h′+r?t′)0??γ+(h+r?t)2?(h′+r?ti′?)2>0γ+(h+r?t)2?(h′+r?ti′?)2<=0?
最后對于rir_iri?,γ有:
?Loss?ri=∑(h,ri,t)∈G∑(h′,ri,t′)∈G′{2(h+ri?t)?2(h′+ri?t′)γ+(h+ri?t)2?(h′+ri?t′)2>00γ+(h+ri?t)2?(h′+ri?t′)2<=0\frac{?Loss}{?r_i}=∑_{(h,r_i,t)∈G}∑_{(h',r_i,t')∈G'} \begin{cases} 2(h+r_i-t)-2(h'+r_i-t')&&γ+(h+r_i-t)^2-(h'+r_i-t')^2>0\\ 0 &&γ+(h+r_i-t)^2-(h'+r_i-t')^2<=0 \end{cases} ?ri??Loss?=(h,ri?,t)∈G∑?(h′,ri?,t′)∈G′∑?{2(h+ri??t)?2(h′+ri??t′)0??γ+(h+ri??t)2?(h′+ri??t′)2>0γ+(h+ri??t)2?(h′+ri??t′)2<=0?
?Loss?γ=∑(h,r,t)∈G∑(h′,r′,t′)∈G′{1γ+(h+r?t)2?(h′+r?t′)2>00γ+(h+r?t)2?(h′+r?t′)2<=0\frac{?Loss}{?γ}= ∑_{(h,r,t)∈G}∑_{(h',r',t')∈G'} \begin{cases} 1&&γ+(h+r-t)^2-(h'+r-t')^2>0\\ 0 &&γ+(h+r-t)^2-(h'+r-t')^2<=0 \end{cases} ?γ?Loss?=(h,r,t)∈G∑?(h′,r′,t′)∈G′∑?{10??γ+(h+r?t)2?(h′+r?t′)2>0γ+(h+r?t)2?(h′+r?t′)2<=0?
1.5 如何產生負樣本
在我們之前算法描述中,我們提到了負樣本的問題,對于一個知識圖譜而言,其中保存的全部都是正樣本時肯定的了。那么,我們應該如何獲取負樣本呢?
具體的可以通過隨機替換頭實體的方式來實現一個錯誤的三元組,或者采用隨機替換一個錯誤的尾實體的方式來形成一個錯誤的三元組。
同時,為了避免,我們在替換形成的三元組也存在于知識圖譜中,我們需要在替換之后進行過濾。
2 參考文章
總結
以上是生活随笔為你收集整理的知识图谱——TransE模型原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 知识图谱表示学习-TransE算法
- 下一篇: TransE,知识图谱嵌入(KGE)论文