【GNN】R-GCN:GCN 在知識圖譜中的應用

關注公衆號跟蹤最新內容:阿澤的學習筆記

阿澤的學習筆記

今天學習的是阿姆斯特丹大學 Michael Schlichtkrull 大佬和 Thomas N. Kipf 大佬於 2017 年合作的一篇論文《Modeling Relational Data with Graph Convolutional Networks》,目前引用超 400 次,雖然這篇文章只是發到了 C 類會議,但論文中提出的 R-GCN 無疑開創了使用 GCN 框架去建模關係網絡的先河。(只發到 C 可能是因爲 R-GCN 表現不太好)

這篇論文主要有兩大貢獻:

  1. 證明了 GCN 可以應用於關係網絡中,特別是鏈接預測和實體分類中;
  2. 引入權值共享和係數約束的方法使得 R-GCN 可以應用於關係衆多的網絡中。

1.Introduction

存儲知識的知識庫常用於多種應用,包括問答、信息檢索等。但即使是最大的知識庫(如Yago、Wiki等)也存在很多缺失信息,這種不完整性會影響到下游應用。而預測知識庫中的缺失信息是統計關係學習(statistical relational learning,以下簡稱 SRL)的主要內容。

假設知識庫主要以三元組的形式(主語、謂語、賓語)進行存儲。比如說,Mikhail 在 Vaganova 學院上學,我們把 Mikhail 和 Vaganova 學院稱爲實體,受教育稱爲關係,每個實體會有自己的類型,這樣便構成一張知識網絡:

這篇論文主要考慮兩個任務,包括鏈接預測實體分類。在這種情況下,可以對很多缺失信息進行補全,比如說:知道 Mikhail 在 Vaganova 學院受過教育,我們便可以知道他居住在俄羅斯(RUS),並且有自己的 label (如圖中紅色部分)。

根據這種想法,作者設計了一個編碼器模型,並將其應用於這兩個任務中,簡單來說:

  • 對於實體分類來說,將在編碼器後面接一個 softmax 分類器用於預測節點的標籤;
  • 對於鏈路預測來說,可以後面接一個解碼器,將分類器視爲自編碼器,從而完成節點的預測。

2.R-GCN

2.1 RGCN

首先,目前的 GCN 可以視爲一個簡單可微的消息傳遞框架的特殊情況:
hil+1=σ(mMigm(hil,hjl)) h_i^{l+1} = \sigma \bigg( \sum_{m\in M_i} g_m(h_i^{l}, h_j^l ) \bigg) \\
其中,hilh_i^l 表示隱藏層 l 的節點 viv_igm(,)g_m(\cdot,\cdot) 表示消息傳入;σ()\sigma(\cdot) 表示激活函數。

寫的具體一點的話 gm(hi,hj)=Whjg_m(h_i,h_j) = Wh_j 就是那個經典的 GCN。基於這個模型作者定了一個簡單的前向傳播模型:
hil+1=σ(rRmNir1ci,rWrlhjl+W0lhil)) h_i^{l+1} = \sigma \bigg(\sum_{r\in R} \sum_{m\in N_i^r} \frac{1}{c_{i,r}} W_r^l h_j^{l}+ W_0^l h_i^l ) \bigg) \\
其中,NirN_i^r 表示節點 i 在關係 r 下的鄰居節點的集合;ci,rc_{i,r} 是一個標準化常量,可以實現指定也可以學習得到。

從上面這個公式中我們可以得到以下幾點信息:

  • R-GCN 的每層節點特徵都是由上一層節點特徵和節點的關係(邊)得到;
  • R-GCN 對節點的鄰居節點特徵和自身特徵進行加權求和得到新的特徵;
  • R-GCN 爲了保留節點自身的信息,會考慮自環。

與 GCN 不同的地方在於 R-GCN 會考慮邊的類型和方向

在實踐中,利用稀疏矩陣乘法可以有效地實現前向傳播,同時爲了避免了對鄰域的顯式求和,可以將多層堆疊起來,以便跨多個關係步驟實現依賴關係。

R-GCN 模型中單節點更新的計算圖如圖下所示,其中紅色節點爲將被更新的節點,藍色節點爲鄰居節點:

2.2 Regularization

爲了出現過擬合的問題,作者考慮了兩種正則化方法:

一種是基函數分解(basis decomposition)
Wrl=b=1BarblVbl W_{r}^{l}=\sum_{b=1}^{B} a_{r b}^{l} V_{b}^{l} \\
其實也就是 VblRdl+1×dlV_b^l \in \mathbb{R}^{d^{l+1}\times d^l} 和係數 arbla_{rb}^l 的線形組合。

另一種是塊分解(block diagonal decomposition)

Wrl=b=1BQbrl=diag(Q1rl,,QBrl) W_{r}^{l}=\bigoplus_{b=1}^{B} Q_{b r}^{l}=\operatorname{diag}\left(Q_{1 r}^{l}, \ldots, Q_{B r}^{l}\right) \\
WrlW_r^l 爲一塊對角矩陣,$Q_{br}^l\in \mathbb{R}{(d{l+1}/B) \times d^{l}/B} $ 。

基函數分解可以看作是不同關係類型之間權重共享的一種方式;而塊分解可以看作是對每個關係類型的權值矩陣的稀疏約束,其核心在於潛在的特徵可以被分解成一組變量,這些變量在組內的耦合比在組間的耦合更緊密。

兩種分解都減少了網絡的參數數量。同時,參數化也可以緩解對稀有關係的過度擬合,因爲稀有關係和常見關係之間共享參數更新。

2.3 Entity Classification

對於實體分類來說,只使用了堆疊的 R-GCN 並在最後一層疊加了一個 Softmax 層用於分類,並考慮交叉熵損失函數:
L=iYk=1KtiklnhikL \mathcal{L}=-\sum_{i \in \mathcal{Y}} \sum_{k=1}^{K} t_{i k} \ln h_{i k}^{L} \\
其中,y 爲有標籤的節點的集合;hikLh_{ik}^L 表示輸出層有標籤的第 i 個節點的第 k 個實體的預測值;tikt_{ik} 表示節點本身的標籤。

實體分類的架構如下圖所示:

2.4 Link Prediction

知識庫通常是一個有向有標籤的圖 G=(V,E,R)G=(V,E,R),V 表示節點,E 表示邊,R 爲關係。通常 E 是不完整,我們的目標就是預測缺失的邊。

鏈接預測其實是預測一個三元組(subject,relation,object),作者通過一個打分函數 f(s,r,o)f(s,r,o) 來判斷 (s,r,o)(s,r,o) 是否符合要求。

作者考慮使用 DistMult 分解作爲評分函數,每個關係 r 都和一個對角矩陣有關:
f(s,r,o)=esTRreo f(s,r,o) = e_s^T R_r e_o \\
考慮負採樣的訓練方式:對於觀測樣本,考慮 ω\omega 個負樣本,並利用交叉熵損失進行優化:
L=1(1+ω)E^(s,r,o,y)Tylogσ(f(s,r,o))+(1y)log(1σ(f(s,r,o))) \mathcal{L}=-\frac{1}{(1+\omega)|\hat{\mathcal{E}}|} \sum_{(s, r, o, y) \in T} y \log \sigma (f(s, r, o))+ (1-y) \log \big(1- \sigma (f(s, r, o))\big) \\
鏈接預測模型的架構圖如下所示:

3.Experiments

簡單看一下實驗。

首先是實體分類的準確性:

其次是鏈接預測的準確性:

在數據集 FB15k-237 數據集上的表現:

考慮 MRR 評分標準,不同度下的模型表現:

4.Conclusion

總結:R-GCN 構建了一個編碼器,並通過接入不同的層完成不同的建模問題,如接入 Softmax 層進行實體分類,接入解碼器進行鏈接預測,並在相應數據集中取得了不錯的成績。

5.Reference

  1. 《Modeling Relational Data with Graph Convolutional Networks》
  2. 《Github: relational-gcn》
  3. 《eswc2018_kipf_convolutional_networks》

關注公衆號跟蹤最新內容:阿澤的學習筆記

阿澤的學習筆記

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章