PaperReading-TransH《Knowledge Graph Embedding by Translating on Hyperplanes》

本文記錄了有關閱讀TransH《Knowledge Graph Embedding by Translating on Hyperplanes》的相關內容,如果有同學在做相關的工作,可以與我聯繫[email protected]

背景

TransH 論文是在基於TransE進行改進的,TransE算法中將每個關係認爲是在實體空間中對於三元組的翻譯,具體意思就是說在向量空間中,關係向量負責將頭實體向量翻譯成尾實體向量,這也是所有的Trans算法的思路。
但是在TransE算法中無法解決自反關係、多對一關係、一對多關係。

一對多關係就是一個頭實體和很多個尾實體有用一樣的關係。
例如:周星馳-主演-功夫,周星馳-主演-長江七號
按照TransE的方法,是利用主演將周星馳翻譯到功夫和長江七號上。
如果存在一個知識圖譜使得每個三元組的勢能差值都是0,
那麼意味着從周星馳利用關係翻譯到功夫的勢能差是0
也意味着從周星馳利用關係翻譯到長江七號的勢能差也是0
換句話說,就是功夫和長江七號的向量是一樣的。這顯然是不對的。

在這裏插入圖片描述

論文中已經對這個問題解釋的很清楚了
在這裏插入圖片描述

思路

爲了解決上面的提到的TransE的問題,TransH的做法是在向量空間中給每個關係畫出了一個超平面,將頭實體或者尾實體的向量在超平面上映射之後,在超平面上利用映射之後的頭實體向量和尾實體向量進行翻譯。具體的也就是下圖所示
在這裏插入圖片描述
這麼做的結果是對於同樣的一對多關係,周星馳-主演-功夫,周星馳-主演-長江七號,功夫和長江七號會在主演這關係所在的超平面上是一樣的,但是這兩個實體在向量空間中可以不一樣,那麼功夫和長江七號在向量空間中就可以區別開,這樣就解決了一對多關係的問題。

方法

基於以上的思路,TransH算法需要對實體做一個向量,對關係做兩個向量(一個超平面的法向量來表示超平面,一個在超平面上的翻譯向量),然後對每個正例三元組的頭尾實體在超平面上做投影,得到投影之後的向量。
在這裏插入圖片描述

其中W就是關係的超平面法向量,法向量的模長必須是1.這個映射公式也很好理解。
頭實體向量hh,頭實體在關係超平面上的投影向量是hrh^r,關係的超平面的法向量是w,關係在超平面上的翻譯向量是d,那麼投影的向量和實體向量和法向量的關係就是下圖所示的
在這裏插入圖片描述
h=hr+xwh=h^r+xw,我們的目的就是求出這個X,那麼就可以利用向量差來求出我們要的這個hr=hxwh^r=h-xw。而且hw=wrsin(θ)=xh·w=|w||r|·sin(\theta)=x
那麼我們要求的hr=hxw=hhwwh^r=h-xw=h-h·w·w

現在我們已經得到了頭尾實體在關係超平面上的投影向量,那麼利用這個投影向量在超平面上進行翻譯就可以了,在超平面上的翻譯和TransE算法是一樣的。

損失函數

TransE算法的損失函數採用的就是正負例的勢能差值,目的是使得正例三元組的勢能差值儘量小,使得負例的勢能差值儘量大,兩個樣本之間的差距最大是margin就可以了,比這個差距還要大並沒有更多的獎勵。
但是在TransH的l損失函數中增加了叫軟約束的條件,利用這個方法約束了三個條件

  • 關係法向量模長必須是1
  • 實體向量模長必須是1
  • 關係法向量和關係翻譯向量必須正交(翻譯向量在法向量所對應的超平面上)
    在這裏插入圖片描述
    具體的損失函數的定義方法是
    在這裏插入圖片描述

利用兩個超參數來控制軟約束的能力。

但是在很多開源的代碼中的損失函數並沒有軟約束的,都是按照TransE寫的,
發郵件給作者也沒有回覆,如果有同學手裏有TransH的原生代碼
或者知道其他的開源作者這麼做的理由給的
還麻煩您郵件和我聯繫 [email protected]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章