DIFFPOOL | 利用可微分池化層構建層級圖神經網絡

Ying, Zhitao, et al. "Hierarchical graph representation learning with differentiable pooling." Advances in neural information processing systems. 2018.

閱讀更多,歡迎關注公衆號:論文收割機(paper_reader)
因爲排版問題,很多圖片和公式無法直接顯示,歡迎關注我們的公衆號點擊目錄來閱讀原文。

引言


 

現有的圖神經網絡大多數是平面化的(flat)學習方式,也就是所有網絡信息的傳播(propagation)都可以想象成將網絡鋪開,在同一個網絡平面上點與點之間通過邊來進行信息傳播。

 

比如我們介紹過的graphsage模型,是直接從周圍的鄰居節點中aggregate信息。

 

 

而計算機視覺中的卷積神經網絡CNN,在學習圖片信息時,往往是層級化(hierarchical)地抽取信息,先是從local的pixel中卷積,最終輸出一個對全圖的信息表達。

 

這種層級化的深度學習架構就能夠啓發我們,當學習整個圖(graph)的embedding,或者對整個圖進行分類時,也應該考慮層級化的學習方式。比如,當學習一個分子圖(molecular graph)時,我們可以通過層級化的學習方式來同時捕捉到local的信息和global的信息。

 

但是與圖像不同,graph並沒有辦法直接對像素進行aggregation,從而能夠設計對應的pooling方式。因爲graph中的點是依靠邊來連接,在空間上具有複雜的拓撲結構,任意的輸入鄰接矩陣來進行pooling,只會丟失更多的local信息。

 

因此,針對graph上的pooling層,我們首先需要找到每個節點在空間上的對應位置,也就是找到節點在pooling時屬於哪一個cluster。所以,pooling的時候需要同時學習一個可以cluster分類的指標,能夠依據node embedding將每個節點對應的cluster找到。

 

DIFFPOOL結構


 

DIFFPOOL結構是在graph中做池化操作的神經網絡層,能夠與任意的GNN結構組合來學習網絡信息,GNN模型是將圖的特徵X和鄰接矩陣A作爲輸入,最後輸出每個節點的embedding。

 

 

Z仍然是具有相同數量n的節點,以及d維的embedding的矩陣。

經過pooling層後,由於節點信息被聚集到cluster中,所以只留下cluster的embedding,所以將得到一個新的更小的圖結構,具有m個cluster。所以新的圖的鄰接矩陣以及特徵矩陣分別是:

          

此時的m<n。

 

通過L次操作之後,最終的信息都被pooling到一個cluster中,用一個embedding來表示整個graph的信息。如下圖所示

 

所以每層的pooling都是將上一層的特徵和鄰接矩陣作爲輸入,並對應輸出pooling之後的特徵和鄰接矩陣:

 

因此graph pooling中最關鍵的就是如何將每個節點找到其對應的cluster,這就需要學習一個賦值矩陣(assignment matrix)。該賦值矩陣將上一層GNN輸出的embedding信息變成Pooling層輸出的特徵矩陣和鄰接矩陣:

 

因此最關鍵的地方就是在於通過一個具有pooling結構的圖神經網絡,學習到從上一層輸出到下一層的賦值矩陣:

 

該賦值矩陣其實本質上也是定義在圖結構上的矩陣,因此可以將該賦值矩陣也通過圖神經網絡的結構來實現:

除了學習賦值矩陣之外,在優化該目標函數時,除了最終的圖分類(graph classification)之外,還需要來考慮相鄰的點應該儘可能被賦值到同樣的cluster中,因此再加上邊對應的regularization

 

另一個優化目標是該賦值矩陣應該儘可能地將節點分配到某一個cluster而不是每個cluster上都有對應的值,因此通過熵最小來減小無序度:

其中H是熵函數(entropy)。

 

實驗


 

實驗回答了以下三個問題:

  1. 如何比較本文提出的DIFFPOOL與其他的pooling方法?

  2. DIFFPOOL與現有的GNN結合之後,如何與現有的一些,如GNN和kernel-based的圖分類的方法進行對比?

  3. DIFFPOOL如何計算出有意義並且可解釋的cluster賦值矩陣?

 

 

實驗中採用了三種類型的數據集:蛋白質分類,社交網絡,以及科學協作圖。前兩個問題都比較好問答,通過將DIFFPOOL層與現有的graphsage框結合,提升了圖分類的表現。

 

 

而第三個問題則需要對DIFFPOOL進行內部計算的分析:

  • 層級cluster結構,通過對每層中的賦值矩陣中的argmax的計算,得到將每個node分配到下一層中的一個cluster中,通過visualization展示了計算中community的性質能夠被很好的保存。

  • 稀疏圖和密集圖的學習。與聚類算法相似,DIFFPOOL能夠將稠密子圖學到同一個cluster中。同時,在稀疏圖的結構中,一些樹狀結構或者路徑結構的信息,也能夠被DIFFPOOL聚集到同一個cluster中。

  • 相似表示的節點被聚類到同一cluster。與普通聚類或者CNN中pooling不同的是,DIFFPOOL的聚類對具有相似特徵的節點以及相似neighbor結構的節點的敏感度更高,因爲學習的賦值矩陣是通過節點特徵學習到的聚類函數,因此即使節點在原圖結構上沒有連接,但是還是會被學習進同一個cluster中。

 

  • 對最大聚類數的敏感度。當預設的cluster數量很多,雖然會學到更復雜的層級結構,但是也將引入更多的參數,並且也會引入更多noise,從而使模型變得更加低效。但是DIFFPOOL能夠通過end-to-end的學習,來使用合適數量的cluster,因爲雖然定義的cluster很多,但是有的cluster上的值很小,所以儘管設置了很多的cluster數量,但是實際聚類的cluster數量並不多。

 

總結


 

DIFFPOOL通過定義了新的層級化Pooling層來抽取圖的信息,比較關鍵的點在於通過學習賦值矩陣將不同的節點分配到不同的cluster中,同時結合了邊預測的regularization,以及最小化熵值,來共同優化學習卷積參數。

 

該DIFFPOOL層能夠被結合進現有的GNN網絡結構中,從而學習到更豐富的層級化網絡信息。

閱讀更多,歡迎關注公衆號:論文收割機(paper_reader)
因爲排版問題,很多圖片和公式無法直接顯示,歡迎關注我們的公衆號點擊目錄來閱讀原文。

相關文章:

 

閱讀原文

 

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