讓所有人都能快速使用圖機器學(xué)習(xí)。
2019 年,紐約大學(xué)、亞馬遜云科技聯(lián)手推出圖神經(jīng)網(wǎng)絡(luò)框架 DGL (Deep Graph Library)。如今 DGL 1.0 正式發(fā)布!DGL 1.0 總結(jié)了過去三年學(xué)術(shù)界或工業(yè)界對圖深度學(xué)習(xí)和圖神經(jīng)網(wǎng)絡(luò)(GNN)技術(shù)的各類需求。從最先進模型的學(xué)術(shù)研究到將 GNN 擴展到工業(yè)級應(yīng)用,DGL 1.0 為所有用戶提供全面且易用的解決方案,以更好的利用圖機器學(xué)習(xí)的優(yōu)勢。
DGL 1.0 為不同場景提供的解決方案。
DGL 1.0 采用分層和模塊化的設(shè)計,以滿足各種用戶需求。本次發(fā)布的關(guān)鍵特性包括:
- 100 多個開箱即用的 GNN 模型示例,15 多個在 Open Graph Benchmark(OGB)上排名靠前的基準模型;
- 150 多個 GNN 常用模塊,包括 GNN 層、數(shù)據(jù)集、圖數(shù)據(jù)轉(zhuǎn)換模塊、圖采樣器等,可用于構(gòu)建新的模型架構(gòu)或基于 GNN 的解決方案;
- 靈活高效的消息傳遞和稀疏矩陣抽象,用于開發(fā)新的 GNN 模塊;
- 多 GPU 和分布式訓(xùn)練能力,支持在百億規(guī)模的圖上進行訓(xùn)練。
DGL 1.0 技術(shù)棧圖
地址:https://github.com/dmlc/dgl
此版本的亮點之一是引入了 DGL-Sparse,這是一個全新的編程接口,使用了稀疏矩陣作為核心的編程抽象。DGL-Sparse 不僅可以簡化現(xiàn)有的 GNN 模型(例如圖卷積網(wǎng)絡(luò))的開發(fā),而且還適用于最新的模型,包括基于擴散的 GNN,超圖神經(jīng)網(wǎng)絡(luò)和圖 Transformer。
DGL 1.0 版本的發(fā)布在外網(wǎng)引起了熱烈反響,深度學(xué)習(xí)三巨頭之一 Yann Lecun、新加坡國立大學(xué)副教授 Xavier Bresson 等學(xué)者都點贊并轉(zhuǎn)發(fā)。
在接下來的文章中,作者概述了兩種主流的 GNN 范式,即消息傳遞視圖和矩陣視圖。這些范式可以幫助研究人員更好地理解 GNN 的內(nèi)部工作機制,而矩陣視角也是 DGL Sparse 開發(fā)的動機之一。
消息傳遞視圖和矩陣視圖
電影《降臨》中有這么一句話:「你所使用的語言決定了你的思維方式,并影響了你對事物的看法。」這句話也適合 GNN。
表示圖神經(jīng)網(wǎng)絡(luò)有兩種不同的范式。第一種稱為消息傳遞視圖,從細粒度、局部的角度表達 GNN 模型,詳細描述如何沿邊交換消息以及節(jié)點狀態(tài)如何進行相應(yīng)的更新。第二種是矩陣視角,由于圖與稀疏鄰接矩陣具有代數(shù)等價性,許多研究人員選擇從粗粒度、全局的角度來表達 GNN 模型,強調(diào)涉及稀疏鄰接矩陣和特征向量的操作。
消息傳遞視角揭示了 GNN 與 Weisfeiler Lehman (WL)圖同構(gòu)測試之間的聯(lián)系,后者也依賴于從鄰居聚合信息。而矩陣視角則從代數(shù)角度來理解 GNN,引發(fā)了一些有趣的發(fā)現(xiàn),比如過度平滑問題。
總之,這兩種視角都是研究 GNN 不可或缺的工具,它們互相補充,幫助研究人員更好地理解和描述 GNN 模型的本質(zhì)和特性。正是基于這個原因,DGL 1.0 發(fā)布的主要動機之一就是在已有的消息傳遞接口基礎(chǔ)之上,增加對于矩陣視角的支持。
DGL Sparse:為圖機器學(xué)習(xí)設(shè)計的稀疏矩陣庫
DGL 1.0 版本中新增了一個名為 DGL Sparse 的庫(dgl.sparse),它和 DGL 中的消息傳遞接口一起,完善了對于全類型的圖神經(jīng)網(wǎng)絡(luò)模型的支持。DGL Sparse 提供專門用于 圖機器學(xué)習(xí)的稀疏矩陣類和操作,使得在矩陣視角下編寫 GNN 變得更加容易。在下一節(jié)中,作者演示多個 GNN 示例,展示它們在 DGL Sparse 中的數(shù)學(xué)公式和相應(yīng)的代碼實現(xiàn)。
圖卷積網(wǎng)絡(luò)(Graph Convolutional Network)
GCN 是 GNN 建模的先驅(qū)之一。GCN 可以同時用消息傳遞視圖和矩陣視圖來表示。下面的代碼比較了 DGL 中用這兩種方法實現(xiàn)的區(qū)別。
使用消息傳遞 API 實現(xiàn) GCN
使用 DGL Sparse 實現(xiàn) GCN
基于圖擴散的 GNN
圖擴散是沿邊傳播或平滑節(jié)點特征或信號的過程。PageRank 等許多經(jīng)典圖算法都屬于這一類。一系列研究表明,將圖擴散與神經(jīng)網(wǎng)絡(luò)相結(jié)合是增強模型預(yù)測有效且高效的方法。下面的等式描述了其中比較有代表性的模型 APPNP 的核心計算。它可以直接在 DGL Sparse 中實現(xiàn)。
超圖神經(jīng)網(wǎng)絡(luò)
超圖是圖的推廣,其中邊可以連接任意數(shù)量的節(jié)點(稱為超邊)。超圖在需要捕獲高階關(guān)系的場景中特別有用,例如電子商務(wù)平臺中的共同購買行為,或引文網(wǎng)絡(luò)中的共同作者等。超圖的典型特征是其稀疏的關(guān)聯(lián)矩陣,因此超圖神經(jīng)網(wǎng)絡(luò) (HGNN) 通常使用稀疏矩陣定義。以下是超圖卷積網(wǎng)絡(luò)(Feng et al., 2018)和其代碼實現(xiàn)。
圖 Transformer
Transformer 模型已經(jīng)成為自然語言處理中最成功的模型架構(gòu)。研究人員也開始將 Transformer 擴展到圖機器學(xué)習(xí)。Dwivedi 等人開創(chuàng)性地提出將所有多頭注意力限制為圖中連接的節(jié)點對。通過 DGL Sparse 工具,只需 10 行代碼即可輕松實現(xiàn)該模型。
DGL Sparse 的關(guān)鍵特性
相比 scipy.sparse 或 torch.sparse 等稀疏矩陣庫,DGL Sparse 的整體設(shè)計是為圖機器學(xué)習(xí)服務(wù),其中包括了以下關(guān)鍵特性:
- 自動稀疏格式選擇:DGL Sparse 的設(shè)計讓用戶不必為了選擇正確的數(shù)據(jù)結(jié)構(gòu)存儲稀疏矩陣(也稱為稀疏格式)而煩惱。用戶只需要記住 dgl.sparse.spmatrix 創(chuàng)建稀疏矩陣,而 DGL 在內(nèi)部則會根據(jù)調(diào)用的算子來自動選擇最優(yōu)格式;
- 標量或矢量非零元素:很多 GNN 模型會在邊上學(xué)習(xí)多個權(quán)重(如 Graph Transformer 示例中演示的多頭注意力向量)。為了適應(yīng)這種情況,DGL Sparse 允許非零元素具有向量形狀,并擴展了常見的稀疏操作,例如稀疏 - 稠密 - 矩陣乘法(SpMM)等??梢詤⒖?Graph Transformer 示例中的 bspmm 操作。
通過利用這些設(shè)計特性,與之前使用消息傳遞接口的矩陣視圖模型的實現(xiàn)相比,DGL Sparse 將代碼長度平均降低了 2.7 倍。簡化的代碼還使框架的開銷減少 43%。此外DGL Sparse 與 PyTorch 兼容,可以輕松與 PyTorch 生態(tài)系統(tǒng)中的各種工具和包集成。
開始使用 DGL 1.0
DGL 1.0 已經(jīng)在全平臺發(fā)布,并可以使用 pip 或 conda 輕松安裝。除了前面介紹的示例之外,DGL Sparse 的第一個版本還包括 5 個教程和 11 個端到端示例,所有教程都可以在 Google Colab 中直接體驗,無需本地安裝。
想了解更多關(guān)于 DGL 1.0 的新功能,請參閱作者的發(fā)布日志。如果您在使用 DGL 的過程中遇到任何問題或者有任何建議和反饋,也可以通過 Discuss 論壇或者 Slack 聯(lián)系到 DGL 團隊。
原文鏈接:https://www.dgl.ai/release/2023/02/20/release.html
-
gpu
+關(guān)注
關(guān)注
28文章
4678瀏覽量
128616 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1201瀏覽量
24622 -
GNN
+關(guān)注
關(guān)注
1文章
31瀏覽量
6325
發(fā)布評論請先 登錄
相關(guān)推薦
評論