每日最新頭條.有趣資訊

LeCun推薦:最新PyTorch圖神經網絡庫,速度快15倍

新智元報導

來源:GitHub、arXiv

編輯:肖琴

【新智元導讀】德國研究者提出最新幾何深度學習擴展庫 PyTorch Geometric (PyG),具有快速、易用的優勢,使得實現圖神經網絡變得非常容易。作者開源了他們的方法,並提供教程和實例。

過去十年來,深度學習方法(例如卷積神經網絡和遞歸神經網絡)在許多領域取得了前所未有的成就,例如計算機視覺和語音識別。

研究者主要將深度學習方法應用於歐氏結構數據 (Euclidean domains),但在許多重要的應用領域,如生物學、物理學、網絡科學、推薦系統和計算機圖形學,可能不得不處理非歐式結構的數據,比如圖和流形。

直到最近,深度學習在這些特定領域的採用一直很滯後,主要是因為數據的非歐氏結構性質使得基本操作(例如卷積)的定義相當困難。在這個意義上,幾何深度學習將深度學習技術擴展到了圖/流形結構數據。

圖神經網絡 (GNN)是近年發展起來的一個很有前景的深度學習方向,也是一種強大的圖、點雲和流形表示學習方法

然而,實現 GNN 具有挑戰性,因為需要在高度稀疏且不規則、不同大小的數據上實現高 GPU 吞吐量。

近日,德國多特蒙德工業大學的研究者兩位 Matthias Fey 和 Jan E. Lenssen,提出了一個基於 PyTorch 的幾何深度學習擴展庫 PyTorch Geometric (PyG),為 GNN 的研究和應用再添利器。

論文:

https://arxiv.org/pdf/1903.02428.pdf

Yann Lecun 也熱情推薦了這個工作,稱讚它是一個快速、美觀的 PyTorch 庫,用於幾何深度學習 (圖和其他不規則結構的神經網絡)。

作者聲稱,PyG 甚至比幾個月前 NYU、AWS 聯合開發的圖神經網絡庫 DGL(Deep Graph Library) 快了 15 倍!

作者在論文中寫道:“這是一個 PyTorch 的幾何深度學習擴展庫,它利用專用的 CUDA 內核實現了高性能。它遵循一個簡單的消息傳遞 API,將最近提出的大多數卷積和池化層捆綁到一個統一的框架中。所有實現的方法都支持 CPU 和 GPU 計算,並遵循一個不可變的數據流範式,該範式支持圖結構隨時間的動態變化。”

PyG 已經在 MIT 許可下發布,可以在 GitHub 上獲取。裡面有完整的文檔說明,並提供了作為起點的教程和示例。

地址:

https://github.com/rusty1s/pytorch_geometric

PyTorch Geometry:基於 PyTorch 的幾何深度學習擴展庫

PyTorch Geometry 包含了各種針對圖形和其他不規則結構的深度學習方法,也稱為幾何深度學習,來自於許多已發表的論文。

此外,它還包含一個易於使用的 mini-batch 加載器、多 GPU 支持、大量通用基準數據集和有用的轉換,既可以學習任意圖形,也可以學習 3D 網格或點雲。

在 PyG 中 , 我們用一個節點特徵矩陣

所有面向用戶的 API,據加載例程、多 GPU 支持、數據增強或模型實例化都很大程度上受到 PyTorch 的啟發,以便使它們盡可能保持熟悉。

Neighborhood Aggregation:將卷積算子推廣到不規則域通常表示為一個鄰域聚合(neighborhood aggregation),或 message passing scheme (Gilmer et al., 2017)。

其中,表示一個可微分的置換不變函數,例如 sum, mean or max,而和表示可微分函數,例如 MLP。

在實踐中,這可以通過收集和散布節點特性並利用 broadcasting 進行和的element-wise 計算來實現,如圖 1 所示。雖然處理的是不規則結構的輸入,但這種方案可以通過 GPU 大大加速。

幾乎所有最近提出的鄰域聚合函數可以利用這個接口,已經集成到 PyG 的方法包括 (但不限於):

對於任意圖形學習,我們已經實現了:

GCN(Kipf & Welling, 2017) 和它的簡化版本SGC(Wu et al., 2019)

spectral chebyshev 和ARMAfilter convolutionss (Defferrard et al., 2016; Bianchi et al., 2019)

GraphSAGE(Hamilton et al., 2017)

attention-based operatorsGAT(Veli?kovi? et al., 2018) 及 AGNN (Thekumparampil et al., 2018),

Graph Isomorphism Network (GIN) from Xu et al. (2019)

Approximate Personalized Propagation of Neural Predictions (APPNP) operator (Klicpera et al., 2019)

對於學習具有多維邊緣特徵的點雲,流形和圖,我們提供了:

Schlichtkrull et al. (2018) 的 relationalGCNoperator

PointNet++(Qi et al., 2017)

PointCNN(Li et al., 2018)

kernel-based methodsMPNN(Gilmer et al., 2017),

MoNet(Monti et al., 2017)

SplineCNN(Fey et al., 2018)

以及邊緣卷積算子EdgeCNN(Wang et al., 2018b).

實驗評估

我們通過對同類評估場景進行綜合比較研究,評估了利用 PyG 所實現方法的正確性。所有使用過的數據集的描述和統計可以在論文附錄中找到。

對於所有的實驗,我們都盡可能地遵循各自原始論文的超參數設置,GitHub 存儲庫中提供了複製所有實驗的代碼。

我們對多個數據模型對進行了多次實驗,並報告了在單個 NVIDIA GTX 1080 Ti 上獲得的整個訓練過程的運行情況 (表 4)。與 Deep Graph Library (DGL)(Wang et al., 2018a) 相比,PyG 訓練模型的速度快了 15 倍

安裝、教程&示例

PyTorch Geometric 使實現圖卷積網絡變得非常容易 (請參閱 GitHub 上的教程)。

例如,這就是實現一個邊緣卷積層 (edge convolution layer) 所需的全部代碼:

此外,與其他深度圖神經網絡庫相比,PyTorch Geometric 的速度更快:

安裝

確保至少安裝了 PyTorch 1.0.0,並驗證cuda/bin和cuda/include分別位於$PATH和$cpathrespecific,例如:

然後運行:

運行示例

paper:

https://arxiv.org/pdf/1903.02428.pdf

GitHub:

https://github.com/rusty1s/pytorch_geometric

獲得更多的PTT最新消息
按讚加入粉絲團