雙線性模型(六)(CrossE、RotatE、TuckER)


這是最后一篇記錄雙線性模型的博文,記錄放假前草草看了的、做了屎一樣筆記的、而今全部忘了paper在講啥的 CrossE、RotatE、TuckER。

CrossE

【paper】 Interaction Embeddings for Prediction and Explanation in Knowledge Graphs
【簡介】 本文是浙大和蘇黎世大學的學者聯合發表於 WSDM 2019 上的工作,文章提出了 CrossE,模型的思想也沒有很高端,就是引入了一個矩陣C,用於計算實體和關系 crossover interaction,然后挖掘出可靠路徑用於為鏈接預測提供解釋。本文的重點有兩個,一個是建模了 crossover interaction,另一個是對鏈接預測進行了 explanation。

問題定義

crossover interaction

crossover interaction 指的是實體和關系的雙向(bi-directional)影響,包括從關系到實體的交互和從實體到關系的交互。

文章舉了個栗子,為了說明關系(isFatherOf)影響了 information of entities to be chosen for inference,這是從關系到實體的交互;同樣,實體信息也影響關系推斷路徑。

給定三元組(h,r,t),crossE分四步:
1.對頭實體 h 生成 interaction embedding \(h_I\)
2.對關系 r 生成 interaction embedding \(r_I\)
3.組合上面二者的 interaction embedding \(h_I\)\(r_I\)
4.比較組合 embedding 和尾實體 t 的相似性。

給出鏈接預測的解釋,就是找出從頭實體到尾實體的合理路徑和相似結構以支持路徑解釋。

評價指標有:1.Recall;2.Average Support。

CrossE 模型

首先通過 one-hot 向量查表找到頭尾實體和關系的 general embedding:

(1)頭實體的 interaction embedding

\(c_r\) depends on 關系 r。

(2)關系的 interaction embedding

頭實體的interaction embedding 與 r 做 Hadamard 積得到 r 的 interaction embedding。

(3)頭實體與關系組合


(4)相似性度量

上一步得到的頭實體與關系的組合表示與尾實體進行相似性度量:

整體的三元組打分函數為:

同時,為了對比 crossover interaction 的作用,文章還給出了沒有 interaction 的簡化版本:

Loss Function 采用 log-likelihood 的損失函數:

預測結果的解釋

鏈接預測的解釋,其實就是類比推理。對於預測出的三元組(X, isFatherOf, M),做出預測的原因有二:一是已有 premise (X, hasWife, Z) 和 (Z, hasChild, M);二是左側的 similar structure,存在這兩個 premise 的 S 和 X 之間存在 hasChild 的關系。和昨天看的四邊形的 ANALOGY 類比推理是一回事。

進行 explanation search 有兩步:

1.尋找從 h 到 t 的閉合路徑;
2.尋找 similar structure 作為 support。

實驗

鏈接預測正確率

實驗的效果根本就不是最優,不知道 introduction 里的 state-of-the-art 是怎么寫出來的=.=|


explanation

舉例展示了挖掘出的六種類比推理結構類型:

該模型沒有給出代碼。

【總結】 在這篇文章中學到/想到的一點是,如果方法/idea不是那么高端的話,可以通過多做實驗另辟蹊徑來彌補,如本文如果只做了 crossover interaction 的工作的話,就會顯得單薄和雞肋,但是因為加上了 explanation 這樣一個工作重點,就會顯得比較詳實。

RotatE

【paper】 RotatE: Knowledge Graph Embedding by Relational Rotation in Complex Space
【簡介】 本文是北大和加拿大的研究團隊發表在 ICLR 2019 上的文章,提出了 RotatE(Rotation Embedding),主要思想是將實體表示為復向量,關系視為從頭實體指向尾實體的旋轉(Rotation)。這個模型大概是看明白了的,感覺還是比較巧妙的。

問題定義

RotatE 的提出主要是為了建模三種關系:對稱/非對稱、反向關系、關系組合

這里的對稱關系指的就是自反關系,inverse 是對兩個關系來說的。TransE 可以建模 inverse 和 composition,無法表示 symmetry。

模型

RotatE 是復空間中的雙線性模型,希望 truth triplet 滿足:


RotatE 巧妙地利用了歐拉公式,將關系視為從頭實體向尾實體的旋轉。


RotatE 的距離函數為:

附錄中還給出了為什么 RotatE 可以建模這三種關系的證明:

文章還提出了一種 self-adversarial 的負采樣方法,為負樣本賦權重。

最終 loss 為:

實驗

pRotatE 是 RotatE 沒有模長(modulus)信息,只有相位(phase)信息的版本。

【code】 https://github.com/DeepGraphLearning/KnowledgeGraphEmbedding

TuckER

【paper】 TuckER: Tensor Factorization for Knowledge Graph Completion
【簡介】 這篇文章是英國愛丁堡大學的研究者發表於 ICML 2019 上的文章,提出了 TuckER,是一個線性的張量分解模型,對表示三元組事實的二值張量做 Tucker 分解。

背景知識

本模型基於 1966 年 Tucker 提出的 Tucker decomposition,它將一個張量分解為一個 core tensor 和一組矩陣相乘的形式,可以被視為一種高階 SVD 的形式,在矩陣是正交的和 core tensor 是“all-orthogonal(全正交)”的 special case 下。

文章聲稱 TuckER 是 fully expressive 的,這個詞也在很多文章中見過,這里解釋了它的含義:

對於給定的 golden triplet,一定有 embedding 各維度值的分配方法,使其與負樣本分開。

TuckER 可以視為各種 bilinear model (RESCAL、DistMult、ComplEx、SimplE)的通用情況。

Related Work 中介紹了幾大 bilinear 模型的方法和打分函數。

Tucker 分解:

一篇博客里介紹得很清楚,貼在這里好了:https://blog.csdn.net/qq_42397330/article/details/116290128

模型

TuckER 對三元組的打分函數:

文章說,TuckER 的優勢在於沒有將所有的知識編碼到 embedding 中,一些被儲存在 core tensor 中,通過 multi-task learning 在實體和關系中共享。(不太理解。。。)

將上式計算出的三元組得分輸入到 sigmoid 函數中,得到一個概率值,然后計算 loss(伯努利負 log-likelihood loss):

上面博客中的博主研讀了代碼:

在看代碼之前,我認為這個評分函數是對整個三元組的評分,實際上代碼中並不是這個意思。前向傳播計算輸出的是,一個矩陣,大小為(batch,len(entity)),輸入的是一個batch的頭實體和關系,相當於是在預測尾實體出現在每個位置的概率值。然后將這個概率值同目標位置組成的矩陣(正確位置為1)計算loss(可以理解為二分類問題)

理論分析

和 Rescal 的關系

Rescal 的打分函數是這樣的:

少了一個矩陣 B,關系矩陣就是 core tensor \(\mathcal{Z}\) 的 slice。

表示非對稱關系

對稱關系訓練出的矩陣是對稱的,非對稱關系的矩陣是非對稱的。

實驗

在四個數據集(FB15k、FB15k-237、WN18、WN18RR)上進行了實驗。

【code】 https://github.com/ibalazevic/TuckER

這個代碼是用 PyTorch 實現的,看起來很簡潔的樣子,有時間的話真想好好學習一下,試着跑一下,but我沒有。。。


【總結】 雙線性模型終於tmd看完了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM