在上一篇文章中,我們探討了如何使用PyTorch來構建圖形對象,本篇專注於圖神經網絡(GNN)中的一個核心概念 — — 訊息傳遞(message passing)。我們先簡單回顧卷積神經網絡(CNN),它與 CNN 有些相似處,通過對CNN的理解,我們將更快地理解GNN所應用的關鍵技術概念。
還沒有看到上篇的可以點以下連結:
【邁向圖神經網絡GNN】Part1: 圖數據的基本元素與應用
【邁向圖神經網絡GNN】Part2: 使用PyTorch構建圖形結構的概念與實作
本篇文章引用: Graph Neural Network Tutorial 圖神經網路教學 (2022/01/28)
感謝周大的分享!!!那我們就開始吧!
在卷積神經網絡(CNN)中,卷積操作主要是處理圖像數據。以一個圖片中的像素值“6”為例,卷積操作會考慮該像素及其周圍的八個鄰近像素(即3x3的鄰域)。這些像素的值會根據一個稱為卷積核的矩陣加權,然後將加權後的值相加,最終合成為單一的輸出值。
這個過程允許卷積層捕捉到局部特徵,如邊緣、角落或紋理等。通過這種方式,卷積層能夠學習從局部像素配置中抽象出有用的視覺特徵,這對於深度學習模型的圖像識別和分類非常關鍵。
那其實在 GNN 中重要的概念 message passing 可視為 CNN convolution 概念的一種形式,不同的地方在於原卷積的概念從歐幾里得數據(例如:圖像)擴展到非歐幾里得數據(如:graph),而透過局部區域聚合成訊息並產生新的特徵,和GNN 中把鄰居特徵傳遞聚合更新節點的行為。
在圖神經網絡(GNN)中的訊息傳遞機制可類比於卷積神經網絡(CNN)中的卷積操作。訊息傳遞的機制(message passing)主要有兩個步驟:
以節點A為例,節點A的鄰居 — — 節點B、C、和D,與節點 A 相連的 3 個點,會將 message 傳遞給 A ,傳遞過去後, A 就會將傳遞的特徵通過一個權重匯總更新,這就是 node update 。
此外, graph 上的每個 node 都會進行 message passing ,通過一輪的 message passing 後就是一次完整的傳遞,這行為讓節點可以從鄰居獲得特徵並反映在自己身上,更新自己。
一樣以 node A 為例,先訂一個傳遞與更新的權重:
2. node update :
那這樣就完成了 message passing 的過程了~
---------------
在不同的資料型態與場景可以選擇不同的 message agg 的方法,那以 message 傳遞的過程中資訊保留的程度應該是: add > mean > max
多數的場景下, 其對於模型成效表現應該也是 add > mean > max
今天分享的 message passing 機制也是 GNN 中核心且重要的概念,它使得 GNN 能夠有效處理複雜的圖結構數據,透過這樣的機制,節點可以收集來自鄰居的訊息,並根據定義的規則更新自己的特徵,在這個過程中,確保模型預測前,可以考量的”關係”,也就是從鄰居來的特徵。同時也有一小部分提及到 agg 的常見方法,那下一篇將說明使用 torch 來實作 message passing 機制,下篇見!