論文地址:https://arxiv.org/abs/1911.06455
實現代碼地址:https://github.com/ seongjunyun/Graph_Transformer_Networks
看分享之前可以把論文讀一遍,代碼看一看,這樣必定會事半功倍!
論文目的是通過構造GTN(Graph Transformer Networks),來學習到異構網絡中有效的節點表示。
其他現有方法(GNNs)的缺點:
-
對於異構圖,由於GNN只用於處理同構圖,因此效果不好。(什麼是異構圖呢?下面這張圖清楚的展示了異構圖:在一個圖中,節點類型數大於1,如author類型,paper類型,venue類型;邊的類型數大於1,如author-paper邊,paper-venue邊;這樣存在不同的節點類型和邊類型的圖就是異構圖)
-
一種簡單的處理方法就是忽略類型,缺點就是無法獲取到類型信息。
-
手動設計一個meta-path,例如,將異構圖轉化由meta-path定義的同構圖,然後使用GNN進行操作。方法的缺點是:對於每一個問題都需要單獨的手工設計meta-path;並且最終效果受到選擇meta-path的影響;meta-path的選擇需要對應領域知識。
整體框架
- 首先明確一條meta-path的表示:
- 模型構造
卷積層(劃紅線部分)
這裏通過卷積層可以將通道數爲n的A(圖中所示)轉化爲通道數爲m的Q。
代碼:
A 的size:
W的size:
訓練過程中某一次W的值如下圖所示,在下圖中可以看到,1*1的卷積核給A中每一種類型的邊賦予一個權值(或者說是分值),通過這種attention機制來判斷邊對於最終生成meta-path的影響程度。
GT層
在GT層中,使用了類似於stack的結構(你仔細讀論文就會看到)圖中一個紅色小方塊圈起來的就是一個卷積層,直觀上看就是一個stack的結構。
代碼
解決meta-path長度隨層數的增加而增加問題(通過eye函數,添加了一個單位矩陣,這樣就可以獲得任意長度的meta-path。這裏大家仔細看看論文和代碼理解):
GTN
代碼
gcn_conv:
實驗
將模型生成的meta-path同預定義的meta-path相比較:
meta-path有效性
本文的亮點
- 不需要領域知識,不需要手動設置meta-path,GTN通過候選鄰接矩陣來定義有效的meta-paths。
- 可擴展性強,GTN層之後不僅可以接GCN,還可以接其他網絡層來實現其他任務。
pdf版本我放在百度網盤了,需要的下載:
鏈接:
https://pan.baidu.com/s/1WB1Io4fEmIfujEJL6pYlCg
提取碼:ri5t
歡迎關注公衆號 :開文見章,只爭朝夕,共同進步。