GNN教程:Weisfeiler-Leman算法!

來源:Datawhale

本文約1800字,建議閱讀7分鐘

本文介紹了作爲分析GNN表達能力基礎的Weisfeiler-Leman算法。


一、引言

GNN模型現在正處於學術研究的熱點話題,那麼我們不經想問,GNN模型到底有多強呢?

我們的目的是分析GNN的表達能力,我們需要一個模型作爲衡量標準。比如說如果我們想衡量GBDT的分類能力的話,通常情況下我們會使用同樣的數據集,採用不同的分類模型如LR, RF, SVM等做對比。對於GNN模型,我們採用的對比模型叫做Weisfeiler-Leman,其常被用做圖同構測試(Graph Isomorphism Test),圖同構測試即給定兩個圖,返回他們的拓撲結構是否相同。

圖同構問題是一個非常難的問題,目前爲止還沒有多項式算法能夠解決它,而Weisfeiler-Leman算法是一個多項式算法在大多數case上能夠奏效,所以在這裏我們用它來衡量GNN的表達能力,這篇博文詳細介紹了Weisfeiler-Leman算法,作爲我們分析GNN表達能力的基礎。

二、Weisfeiler-Leman 算法介紹

2.1 動機

Graph 的相似性問題是指判斷給定兩個 Graph 是否同構。如果兩個圖中對應節點的特徵信息(attribute)和結構信息(structure)都相同,則稱這兩個圖同構。因此我們需要一種高效的計算方法能夠將圖的特徵信息及結構位置信息(鄰居信息)隱射到一個數值,我們稱這個數值爲節點的ID(Identification)。最後,兩個圖的相似度問題可以轉化爲兩個圖節點集合ID的 Jaccard 相似度問題。

2.2 Weisfeiler-Leman 算法思路

一般地,圖中的每個節點都具有特徵(attribute)和結構(structure)兩種信息,需要從這兩方面入手,來計算幾點ID。很自然地,特徵信息(attribute)即節點自帶的Embedding,而結構信息可以通過節點的鄰居來刻畫,舉個例子,如果兩個節點Embedding相同,並且他們連接了Embedding完全相同的鄰居,我們是無法區分這兩個節點的,因此這兩個節點ID相同。由此,可以想到,我們可以通過 hashing 來高效判斷是否兩個節點ID一致。1維的Weisfeiler-Lehman正是這樣做的。如果設   表示節點   的特徵信息(attribute),那麼 Weisfeiler-Leman 算法的更新函數可表示爲:

在上式中, 表示鄰居Embedding的聚合函數,可以簡單的將鄰居Embedding排序後拼接起來(concatenate)。看到這裏,有的讀者可能產生了疑問,這個式子不是和之前GraphSAEG的跟新公式一樣嗎,那是不是意味着GraphSAGE具有和Weisfeiler-Leman算法相同的能力?確實這個式子在GraphSAGE中 表示鄰居節點的聚合(比如求和、Pooling等方式),而 在GraphSAGE中是一個單層的感知機。這些差別實際上導致了GraphSAGE並沒有完全的Weisfeiler-Leman算法的能力,在後一篇博文中我們會詳細說明它。

下面我們通過一個形象的例子來說明Weisfeiler-Leman算法具體是如何操作的。


2.3 Weisfeiler-Leman 算法圖形舉例說明

給定兩個圖 和 ,其中每個節點的Embedding爲這個節點的標籤(實際應用中,有些時候我們拿不到節點的標籤,這時可以對節點都標上一個相同的標籤如"1",這個時候我們將完全用節點位於圖中的結構信息來區分節點,因爲他們的Embedding都相同)

如何比較   和  的相似性問題呢?Weisfeiler-lehman 算法的思路如下:

  1. 對鄰居節點標籤信息進行聚合,以獲得一個帶標籤的字符串(整理默認採用升序排序的方法進行排序)。

第一步的結果,這裏需要注意,圖中利用逗號將兩部分進行分開,第一部分是該節點的ID,第二部分是該節點的鄰居節點ID按升序排序的結構(eg:對於節點 5,他的鄰居節點爲2,3,4,所以他的結果爲"5,234")

  1. 爲了能夠生成一個一一對應的字典,我們將每個節點的字符串hash處理後得到節點的新ID。

  1. 將哈希處理過的ID重新賦值給相應的結點,以完成第一次迭代。

第一次迭代的結果爲:

這樣即可以獲得圖中每個節點ID。接下去,可以採用 Jaccard 公式計算  和  的相似度。如果兩個圖同構的話,在迭代過程中 和 將會相同。

至此Weisfeiler-Leman算法就介紹完了,作爲下一篇博文的引文,我們簡要地分析一下Weisfeiler-Leman算法和GCN逐層更新公式的關係。

三、Weisfeiler-Leman 算法與 GCN 間的轉換

GCN逐層更新公式爲:

簡單來說,GCN的逐層更新公式對Weisfeiler-Leman算法做了兩點近似:

  • 用單層感知機近似 函數,上式中 即爲單層感知機模型;

  • 用加權平均替代鄰居信息拼接,上式中 表示節點 的Embedding聚合到節點 時需要進行的歸一化因子。

通過與 Weisfeiler-Lehman 算法的類比,我們可以理解即使是具有隨機權重的未經訓練的 GCN 模型也可以看做是圖中節點的強大特徵提取器。

四、後話

即使GCN、GraphSAGE、GAT和Weifeiler-Leman算法如此之像,但正如我們分析的那樣,他們都做了一些近似,將 近似爲單層感知機會導致一部分的精度損失,因爲單層感知機不是單射函數。拼接鄰居方式的近似引入了另一層精度損失,因爲比如求和,pooling等鄰居聚合方式可能作用於不同的鄰居集合下而得到相同的結果,所以不管是哪個模型,都沒有達到目前Weisfeiler-Leman算法在圖同構問題上的能力。在下一篇博文中我們將會詳細分析這些近似方法帶來的損失,並給出如何解決這些問題的方法。

參考資料:

[1] SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS
[2] Weisfeiler-Lehman Graph Kernels
[3]《Graph learning》 圖傳播算法(下)

編輯:黃繼彥

校對:汪雨晴

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章