什麼是異構圖?
傳統同構圖(Homogeneous Graph)資料中只存在一種節點和邊,因此在構建圖神經網路時所有節點共享同樣的模型引數並且擁有同樣維度的特徵空間。而異構圖(Heterogeneous Graph)中可以存在不只一種節點和邊,因此允許不同型別的節點擁有不同維度的特徵或屬性。
這一特點使得異構圖的應用十分廣泛。事實上,如果用圖來描述我們和周圍事物的關係就會發現所產生的圖都是天然異構的。比如我今天看了電影《流浪地球》,那“我”作為觀眾和電影《流浪地球》之間就建立了“看了”這一關係。異構圖可以用來描述這種互動關係的集合。這個圖分“觀眾”和“電影”兩類節點,以及“看了”這一類邊。“我”作為觀眾,和電影所具有的屬性一定是不同的,需要用不同的模型或者不同的特徵維度來表達。這張圖就天然具有了異構性。
再比如我去豆瓣上給《流浪地球》評了8分,那“我”和《流浪地球》之間就又建立了“評分”這一關係。“評分”和“看了”的屬性也一定是不同的,如前者包含評分分數,後者則包含票價等。
因此,很多用於機器學習的資料都可以用異構圖來建模,而需要解決的任務也可以透過學習圖上的點和邊,或是整張圖的表示來解決。這裡舉幾個例子。
推薦系統
圖一:使用異構圖建模推薦系統。
(圖源:https://peterxugo.github.io/2017/09/28/推薦系統/)
常見的推薦系統資料由使用者和商品的互動資訊組成。這些互動資訊可以用圖來表示(圖一)。由於使用者節點可能包含使用者的年齡、職業等個人資訊,而商品節點則包含內容、價格等商品特有的資訊,所以該圖是一個異構圖。
推薦系統可能感興趣的內容包括:
- 判斷某個客戶是否會觀看某部電影,以及在什麼樣的促銷下會購票。這個問題可以轉化成連結預測(Link Prediction)問題:判斷兩個點之間是否會有連邊。
- 判斷某個客戶是否存在惡意刷分,或者某部電影是否遭到惡意刷分。根據標註是否存在,這個問題可以轉化成半監督節點分類(Semi-supervised Node Classification)或者無監督的異常檢測(Anomaly Detection)問題。
學術網路
學術網路的圖結構更復雜一些。它可以包含“論文”、“作者”、“會議”和“機構”等節點型別。每個作者會隸屬於某些機構,發表某些論文,而每篇論文又會被發表在某個會議上,也會引用其它的論文。每個節點同樣可以有自己的特徵——如論文可以用摘要當作特徵等。同樣,這些關係可以表示成一張異構圖(圖二)。
圖二:學術網路
(圖源:Dong et al., KDD 2017)
同樣,連結預測和節點分類問題也適用於學術網路中。例如預測某個作者的研究領域或所屬的研究團隊、一篇論文或者一個作者的影響力等等。
知識圖譜
知識圖譜由於包含不同種類的節點和邊,是一張天然的異構圖。如下圖,“人物”、“職業”和“榮譽”等都可以作為節點型別,而節點之間的關係也有“就職”、“獲得榮譽”等多種類別。
圖嵌入學習在知識圖譜上也是一個很重要的任務。它的目標是對每一個節點和每一類關係學習一個高維向量表示。此外,知識圖譜補全、基於知識圖譜的推理以及將知識圖譜與其他系統結合(比如推薦系統)等也是重要的任務。
有哪些針對異構圖的圖神經網路?
針對異構圖設計圖神經網路還是個非常新的方向。雖然論文不多,但已經在一些場景中取得了很不錯的效果。這裡簡單介紹兩個模型。
Relational Graph Convolutional Network (RGCN)
文章連結:https://arxiv.org/abs/1703.06103
RGCN是一個在異構圖上學習節點表示的早期工作。與Graph Convolutional Network(GCN)類似,它仍然基於訊息傳遞(Message Passing)。但與GCN不同,每條邊上的訊息透過每類邊獨有的線性變換得到。
RGCN可以用於節點分類和連結預測等任務。
Graph Convolutional Matrix Completion (GCMC)
文章連結:https://arxiv.org/abs/1706.02263
GCMC是在異構圖上做產品推薦任務的一個嘗試。它在一個由觀眾和電影組成的二分圖上訓練。觀眾和電影有各自的特徵,而且每一條邊上有對應的觀眾對電影的評分。GCMC將每一種評分視為一類邊。
圖構建完成後,每個節點透過訊息傳遞的形式,彙總從自己鄰居傳遞來的訊息,去更新自己的表示。與RGCN不同的是,GCMC只進行一層訊息傳遞:
訊息同樣是由源節點的原表示透過線性變換得到。與RGCN類似,每類邊都有自己線性變換的引數矩陣。不同之處在於多關係累和函式accum有各種靈活選擇。
GCMC算出兩類點的最終表示之後,再透過softmax得出某個互動下每種評分的機率:
除了以上模型外,今年WWW還有諸如Heterogeneous Graph Attention Network (HAN),Knowledge Graph Convolution Networks for Recommender Systems (KGCN) 等關於異構圖的好工作。此外,在網路嵌入(network embedding)方向還有如metapath2vec等經典的工作。
- Heterogeneous Graph Attention Network (WWW’19)
- Knowledge Graph Convolution Networks for Recommender Systems (WWW’19)
- HetGNN: Heterogeneous Graph Neural Network (KDD’19)
- Metapath-guided Heterogeneous Graph Neural Network for Intent Recommendation (KDD’19)
- KGAT: Knowledge Graph Attention Network for Recommendation (KDD’19)
- metapath2vec: Scalable Representation Learning for Heterogeneous Networks (KDD’17)
想學習異構圖神經網路怎麼辦?
DGL剛剛釋出了0.4新版本,全面上線對於異構圖的支援,復現並開源了相關異構圖神經網路的程式碼:
在效能上,新的API也帶來了顯著加速:- GCMC:DGL的實現相比原作者實現在MovieLens-100K上有5倍加速,在MovieLens-1M上有22倍加速。DGL的記憶體最佳化支援在一塊GPU上對MovieLens-10M進行訓練(原實現需要從CPU動態載入資料),從而將原本需要24小時的訓練時間縮短到了1個多小時。
- RGCN:使用全新的異構圖介面重新實現了RGCN。新的實現大大減少了記憶體開銷。原實現在AM資料集上(邊數>5M)由於記憶體開銷太大,只能在CPU上計算,而DGL能使用GPU進行加速並獲得了291倍的速度提升!
- HAN:提供了靈活的介面可以將一個異構圖透過元路徑(metapath)轉變成同構圖。
- Metapath2vec:新的元路徑取樣實現比原作者的實現快兩倍。
此外,DGL也釋出了訓練知識圖譜嵌入(Knowledge Graph Embedding)專用包DGL-KE,在許多經典的圖嵌入模型上都獲得了效能提升。比如,在單GPU上,DGL-KE能在7分鐘內使用經典的TransE模型訓練出FB15K的圖嵌入。相比GraphVite(v0.1.0)在4塊GPU上需要14分鐘。
DGL-KE首個版本釋出了TransE, ComplEx和Distmult模型,支援CPU訓練、GPU訓練、CPU和GPU混合訓練以及單機多程式訓練。DGL團隊在未來也會發布更多模型和訓練方式。
參考連結
- DGL異構圖教程:https://docs.dgl.ai/tutorials/hetero/1_basics.html
- DGL v0.4 更新筆記:https://github.com/dmlc/dgl/releases
- DGL-KE程式碼及使用說明:https://github.com/dmlc/dgl/tree/master/apps/kg