1. 程式人生 > 其它 >圖神經網路-開篇

圖神經網路-開篇

作為這次圖神經網路組隊學習的助教,即將結營之際,我將大佬的開源文件分享到這,具體更詳細的內容可見datawhale的GitHub中的組隊學習資料夾。

引言

作為開篇部分,我們將探討關於本次圖神經網路組隊學習的幾個問題:

  • 首先我們將討論為什麼我們要關注圖深度學習?具體地,為什麼我們要把現實世界的資料表示成圖,為什麼我們要把深度學習與圖連線起來,以及圖深度學習的挑戰是什麼?
  • 其次我們將討論此次組隊學習將涵蓋哪些內容?具體來說,我們將共同學習哪些話題以及這些話題是如何安排的
  • 第三,我們將討論如何更好地參與此組隊學習以及更好地理解圖神經網路的理論並掌握其應用

為什麼要在圖上進行深度學習?

在過去的深度學習應用中,我們接觸的資料形式主要是這四種:矩陣、張量、序列(sequence)和時間序列(time series)

。然而來自現實世界應用的資料更多地是圖的結構,如社交網路、交通網路、蛋白質與蛋白質相互作用網路、知識圖譜和大腦網路等。圖提供了一種通用的資料表示方法,眾多其他型別的資料也可以轉化為圖的形式。此外,大量的現實世界的問題可以作為圖上的一組小的計算任務來解決。推斷節點屬性、檢測異常節點(如垃圾郵件傳送者)、識別與疾病相關的基因、向病人推薦藥物等,都可以概括為節點分類問題。推薦、藥物副作用預測、藥物與目標的相互作用識別和知識圖譜的完成(knowledge graph completion)等,本質上都是邊預測問題

同一圖的節點存在連線關係,這表明節點不是獨立的。然而,傳統的機器學習技術假設樣本是獨立且同分布的,因此傳統機器學習方法不適用於圖計算任務。圖機器學習

研究如何構建節點表徵,節點表徵要求同時包含節點自身的資訊和節點鄰接的資訊,從而我們可以在節點表徵上應用傳統的分類技術實現節點分類。圖機器學習成功的關鍵在於如何為節點構建表徵。深度學習已經被證明在表徵學習中具有強大的能力,它大大推動了計算機視覺、語音識別和自然語言處理等各個領域的發展。因此,將深度學習與圖連線起來,利用神經網路來學習節點表徵,將帶來前所未有的機會。

然而,如何將神經網路應用於圖,這一問題面臨著巨大的挑戰。首先,傳統的深度學習是為規則且結構化的資料設計的,影象、文字、語音和時間序列等都是規則且結構化的資料。但圖是不規則的,節點是無序的,節點可以有不同的鄰居節點。其次,規則資料的結構資訊是簡單的,而圖的結構資訊是複雜的

,特別是在考慮到各種型別的複雜圖,它們的節點和邊可以關聯豐富的資訊,這些豐富的資訊無法被傳統的深度學習方法捕獲。

圖深度學習是一個新興的研究領域,它將深度學習技術與圖資料連線起來,推動了現實中的圖預測應用的發展。然而,此研究領域也面臨著前所未有的挑戰。

注:以上內容整理自“Deep Learning on Graphs: An Introduction”!!!

此組隊學習涵蓋的話題

此組隊學習由五個話題組成,每一話題都包含理論部分與實踐部分:

  • 話題一:
    • 我們將首先學習簡單圖論知識、瞭解常規的圖預測任務(見第2節);
    • 然後學習基於PyG包的圖資料的表示與使用(見第3節)。
  • 話題二:
    • 我們將首先學習實現圖神經網路的通用正規化,即訊息傳遞正規化
    • 其次學習PyG中的訊息傳遞(MessagePassing)基類的屬性、方法和執行流程
    • 最後學習如何自定義一個訊息傳遞圖神經網路(見第4節)。
  • 在話題三:
    • 圖計算應用中最基礎的任務是節點表徵(Node Representation)學習
    • 我們將以GCN和GAT(兩個最為經典的圖神經網路)為例,學習基於圖神經網路的節點表徵學習的一般過程;並且通過MLP、GCN和GAT三者在節點分類任務中的比較,學習圖神經網路為什麼強於普通的MLP神經網路,以及GCN和GAT的差別(見第5節)。
    • 此外,我們還將學習如何構造一個數據全部存於記憶體的資料集類(見第6-1節);
    • 並學習基於節點表徵學習的圖節點預測任務和邊預測任務的實踐(見第6-2節)。
  • 話題四:
    • 我們將首先學習在超大圖上進行節點表徵學習面臨著的挑戰
    • 接著學習應對挑戰的一種解決方案
    • 最後通過實踐學習超大圖節點預測任務(見第7節)。
  • 話題五:
    • 我們將首先學習基於圖神經網路的圖表徵學習的一般過程(見第8節);
    • 接著學習樣本按需獲取的資料集類的構造方法(見第9-1節);
    • 最後學習基於圖表徵學習的圖預測任務的實踐(見第9-2節)。

除了話題四和話題五都依賴於話題三之外,其餘話題都依賴於該話題自身的前一話題。

如何更好地學以及如何學得更好

此次組隊學習要求參與者掌握一定的深度學習知識,並具備使用Pytroch實現神經網路的能力。學習並掌握此次組隊學習涵蓋的話題,需要參與者認真研讀理論部分,並動手操作實踐部分。在實踐部分,我們將利用PyG庫構建圖資料集和圖神經網路模型。PyG是一個高度封裝的庫,在方便了我們構建圖神經網路的同時,也隱藏了很多程式碼執行細節。要掌握圖神經網路的應用,需要大家多多除錯程式碼,觀察並分析程式的執行流程。

各位小夥伴在學習過程中,如遇到困難或有疑惑,歡迎在群裡向助教們提問。同時我們也呼籲各位小夥伴對其他小夥伴提出的問題積極思考,並踴躍發表自己的看法!

參考資料