2019 年,紐約大學、亞馬遜雲端科技聯手推出圖神經網路框架 DGL (Deep Graph Library)。如今 DGL 1.0 正式發表! DGL 1.0 總結了過去三年學術界或工業界對圖深度學習和圖神經網路(GNN)技術的各類需求。從最先進模型的學術研究到將 GNN 擴展到工業級應用,DGL 1.0 為所有用戶提供全面且易用的解決方案,以更好的利用圖機器學習的優勢。
#DGL 1.0 為不同場景提供的解決方案。
DGL 1.0 採用分層和模組化的設計,以滿足各種使用者需求。本次發布的關鍵特性包括:
#DGL 1.0技術堆疊圖
#「https:/ /github.com/dmlc/dgl
此版本的亮點之一是引入了DGL-Sparse,這是一個全新的編程接口,使用了稀疏矩陣作為核心的程式設計抽象。 DGL-Sparse 不僅可以簡化現有的 GNN 模型(例如圖卷積網路)的開發,而且還適用於最新的模型,包括基於擴散的 GNN,超圖神經網路和圖 Transformer。
DGL 1.0 版本的發佈在外網引起了熱烈反響,深度學習三巨頭之一 Yann Lecun、新加坡國立大學副教授 Xavier Bresson 等學者都點讚並轉發。
#在接下來的文章中,作者概述了兩種主流的GNN 範式,即訊息傳遞視圖和矩陣視圖。這些範式可以幫助研究者更好地理解 GNN 的內部工作機制,而矩陣視角也是 DGL Sparse 開發的動機之一。
訊息傳遞視圖和矩陣視圖
電影《降臨》中有這麼一句話:「你所使用的語言決定了你的思考方式,並影響了你對事物的看法。」這句話也適合GNN。
###表示圖神經網路有兩種不同的範式。第一種稱為訊息傳遞視圖,從細粒度、局部的角度表達 GNN 模型,詳細描述如何沿邊交換訊息以及節點狀態如何進行對應的更新。第二種是矩陣視角,由於圖與稀疏鄰接矩陣具有代數等價性,許多研究人員選擇從粗粒度、全局的角度來表達 GNN 模型,強調涉及稀疏鄰接矩陣和特徵向量的操作。 #####################訊息傳遞視角揭示了 GNN 與 Weisfeiler Lehman (WL)圖同構測試之間的聯繫,後者也依賴於從鄰居聚合資訊。而矩陣視角則從代數角度來理解 GNN,引發了一些有趣的發現,例如過度平滑問題。
總之,這兩個觀點都是研究 GNN 不可或缺的工具,它們互相補充,幫助研究人員更好地理解和描述 GNN 模型的本質和特性。正是基於這個原因,DGL 1.0 發布的主要動機之一就是在現有的訊息傳遞介面基礎之上,增加矩陣視角的支援。
DGL Sparse:為圖機器學習設計的稀疏矩陣庫
DGL 1.0 版本中新增了一個名為DGL Sparse 的庫(dgl.sparse),它和DGL 中的消息傳遞介面一起,完善了對於全類型的圖神經網路模型的支援。 DGL Sparse 提供專門用於 圖機器學習的稀疏矩陣類別和操作,使得在矩陣視角下編寫 GNN 變得更加容易。在下一節中,作者示範多個 GNN 範例,展示它們在 DGL Sparse 中的數學公式和相應的程式碼實作。
圖卷積網路(Graph Convolutional Network)
GCN 是 GNN 建模的先驅之一。 GCN 可以同時用訊息傳遞視圖和矩陣視圖來表示。下面的程式碼比較了 DGL 中用這兩種方法實現的差異。
使用訊息傳遞API 實作GCN
使用DGL Sparse 實作GCN
#基於圖形擴散的GNN
圖擴散是沿邊傳播或平滑節點特徵或訊號的過程。 PageRank 等許多經典圖演算法都屬於這一類。一系列研究表明,將圖擴散與神經網路結合是增強模型預測有效且有效率的方法。下面的等式描述了其中比較有代表性的模型 APPNP 的核心計算。它可以直接在 DGL Sparse 中實現。
#超圖神經網路
超圖是圖的推廣,其中邊可以連接任意數量的節點(稱為超邊)。超圖在需要捕捉高階關係的場景中特別有用,例如電子商務平台中的共同購買行為,或引文網絡中的共同作者等。超圖的典型特徵是其稀疏的關聯矩陣,因此超圖神經網路 (HGNN) 通常使用稀疏矩陣定義。以下是超圖卷積網路(Feng et al., 2018)及其程式碼實作。
圖Transformer
###Transformer 模型已成為自然語言處理中最成功的模型架構。研究人員也開始將 Transformer 擴展到圖機器學習。 Dwivedi 等人開創性地提出將所有多頭注意力限制為圖中連接的節點對。透過 DGL Sparse 工具,只需 10 行程式碼即可輕鬆實現該模型。 ######
#DGL Sparse 的關鍵特性
##DGL Sparse 的關鍵特性
:許多GNN 模型會在邊上學習多個權重(如Graph Transformer 範例中所示範的多頭注意力向量)。為了適應這種情況,DGL Sparse 允許非零元素具有向量形狀,並擴展了常見的稀疏操作,例如稀疏 - 稠密 - 矩陣乘法(SpMM)等。可以參考 Graph Transformer 範例中的 bspmm 操作。 透過利用這些設計特性,與先前使用訊息傳遞介面的矩陣視圖模型的實作相比,DGL Sparse 將程式碼長度平均降低了2.7 倍。簡化的程式碼也
。此外DGL Sparse 與 PyTorch 相容,可輕鬆與 PyTorch 生態系統中的各種工具和套件整合。
開始使用 DGL 1.0DGL 1.0 已經在全平台發布,並且可以使用 pip 或 conda 輕鬆安裝。除了前面介紹的範例之外,DGL Sparse 的第一個版本還包括 5 個教學和 11 個端到端範例,所有教學都可以在 Google Colab 中直接體驗,而無需本機安裝。
#########想了解更多關於 DGL 1.0 的新功能,請參考作者的發布日誌。如果您在使用 DGL 的過程中遇到任何問題或有任何建議和回饋,也可以透過 Discuss 論壇或 Slack 聯絡 DGL 團隊。 ######以上是10行程式碼搞定圖Transformer,圖神經網路框架DGL迎來1.0版本的詳細內容。更多資訊請關注PHP中文網其他相關文章!