Github熱門圖深度學習源碼與框架
新智元推薦
來源:專知(ID: Quan_Zhuanzhi)
【新智元導讀】圖深度學習是當前深度學習領域最熱門的方向之一,圖神經網路(GNN)不僅在理論上有所創新,在工業界中也真實的應用。本文介紹 Github 上熱門的圖神經網路源碼及框架,方便研究人員和工程師上手圖深度學習。
近兩年來,圖卷積、圖注意力網路等圖神經網路在學術界、工業界都有廣泛的應用。雖然大多數圖神經網路理論包含複雜的公式推導,但最終產出的網路結構(公式)缺一般比較簡單,但這並不意味著圖神經網路的實現會很簡單。
導致圖神經網路實現複雜的原因主要有以下幾個:
以圖卷積網路為例,它的原版依賴完整鄰接矩陣和全部節點作為輸入,對內存、顯存和計算效率都造成了限制。好在目前有一些理論如 FaskGCN 可以通過 mini-batch 等方式來進行數據切分從而解決這個問題。
雖然利用稀疏矩陣可以一定程度上緩解上述問題,但依然不能處理大規模的數據。另外,由於多層網路結構的複雜,一般在實現時要同時實現稀疏版和非稀疏版的組件。
對圖結構數據的預處理比較麻煩。例如在處理異構網路時,有時需要對每種類型的節點進行獨立地編號、為每種關係獨立建立子圖等,才能將圖數據轉換為深度學習模型可用的數值化數據,並且任何一個細節可能都會影響演算法的效率(如鄰節點列表的數據結構使用 list 和 set 會導致不同的採樣效率和查詢效率)。
需要一些基於圖的額外操作,例如 Random Walk、有類型約束的 Random Walk(Meta-path)等,由於圖結構的複雜性,這些操作在單機上的實現都比較費力,更不用說在大規模分散式上。
圖深度學習研究者和工業界在 Github 上開源了一些優秀的圖神經網路的實現其框架,都從一定程度上去解決了上述的問題,非常值得我們借鑒。下面我們列出一些優秀的 Github 倉庫:
DeepWalk / LINE
鏈接:
DeepWalk: https://github.com/phanein/deepwalk
LINE: https://github.com/tangjianpku/LINE
簡介:
雖然 DeepWalk 和 LINE 屬於網路表示學習中的演算法,與現在端到端的圖神經網路有一定的區別,但目前一些圖神經網路應用(如社交網路、引用網路節點分類)依然使用 DeepWalk/LINE 來作為預訓練演算法,無監督地為節點獲得初始特徵表示。另外,DeepWalk 項目中的 Random Walk 也可以被直接拿來用作圖神經網路的數據採樣操作。
圖卷積網路 GCN TensorFlow/PyTorch 版
鏈接:
TensorFlow: https://github.com/tkipf/gcn
PyTorch: https://github.com/tkipf/pygcn
簡介:
GCN 論文作者提供的源碼,該源碼提供了大量關於稀疏矩陣的代碼。例如如何構建稀疏的變換矩陣(這部分代碼被其他許多項目復用)、如何將稀疏 CSR 矩陣變換為 TensorFlow/PyTorch 的稀疏 Tensor,以及如何構建兼容稀疏和非稀疏的全連接層等,幾乎是圖神經網路必讀的源碼之一了。
快速圖卷積網路 FastGCN TensorFlow 版
鏈接:
https://github.com/matenure/FastGCN
簡介:
FastGCN 作者提供的源碼,基於採樣的方式構建 mini-match 來訓練 GCN,解決了 GCN 不能處理大規模數據的問題。
圖注意力網路 GAT TensorFlow 版
鏈接:
https://github.com/PetarV-/GAT
簡介:
GAT 論文作者提供的源碼。源碼中關於 mask 的實現、以及稀疏版 GAT 的實現值得借鑒。
Mini-batch 版圖注意力網路 DeepInf
鏈接:
https://github.com/xptree/DeepInf
簡介:
DeepInf 論文其實是 GAT 的一個應用,但其基於 Random Walk 採樣子圖構建 mini-batch 的方法解決了 GAT 在大規模網路上應用的問題。
DeepMind 開源的圖神經網路框架 Graph Nets
鏈接:
https://github.com/deepmind/graph_nets
簡介:
基於 TensorFlow 和 Sonnet。上面的項目更側重於節點特徵的計算,而 graph_nets 同時包含節點和邊的計算,可用於一些高級任務,如最短路徑、物理場景模擬等。
工業級分散式圖神經網路框架 Euler
鏈接:
https://github.com/alibaba/euler
簡介:
Euler 是阿里巴巴開源的大規模分散式的圖學習框架,配合 TensorFlow 或者阿里開源的 XDL 等深度學習工具,它支持用戶在數十億點數百億邊的複雜異構圖上進行模型訓練。
(本文轉載自專知,ID:Quan_Zhuanzhi)
TAG:新智元 |