前言
GNN/GCN在非歐數據中的應用具有極大的挖掘價值。通常,GNN的應用分爲兩種:1,節點分類;2,圖分類。
節點分類可以用在點雲分割,社交網絡節點分類,推薦算法等等。
圖分類可以用在姿態估計,蛋白質分類等等,當然,也可以用在圖像分類。
對於節點分類而言,圖結構在forward階段是不會改變的,改變的只是節點的隱藏層屬性。如下:
對於圖分類而言,圖結構在前傳的時候會downsize,最後聚合成一個點的feature再做MLP:
截圖來自論文:https://arxiv.org/abs/1901.00596
圖分類所用的downsize便是本文的主角graph pooling。--終於引出來了..
Graph Pooling
GNN/GCN 最先火的應用是在Node classification,然後先富帶動後富,Graph classification也越來越多人研究。所以,Graph Pooling的研究其實是起步比較晚的。
Pooling就是池化操作,熟悉CNN的朋友都知道Pooling只是對特徵圖的downsampling。不熟悉CNN的朋友請按ctrl+w。對圖像的Pooling非常簡單,只需給定步長和池化類型就能做。但是Graph pooling,會受限於非歐的數據結構,而不能簡單地操作。
簡而言之,graph pooling就是要對graph進行合理化的downsize。
目前有三大類方法進行graph pooling:
1. Hard rule
hard rule很簡單,因爲Graph structure是已知的,可以預先規定池化節點:
如圖,咱們預先規定[1,2,3,5]節點,[6,7]節點和[4]節點合併,得到新的a,b,c節點。這便是硬規定下的池化方法。比較好理解。
2. Graph coarsening
圖粗略化是現在的主流可學習池化方法之一。
代表論文:DiffPool
論文鏈接:https://arxiv.org/abs/1806.08804
這種方法是hard rule的trainable版本,先對節點進行聚類,然後合成一個超級節點,以達到池化效果。
思想流程大概是:soft clustering -> super node -> coarsening
3. Node selection
節點選擇就是選擇一些重要節點去代替原圖:
代表論文:self-attention graph pooling
論文鏈接:https://arxiv.org/pdf/1904.08082.pdf
這個self-attention類似於分析節點的重要性,方法類似節點分類的操作。