EigenPool

Paper : Graph Convolutional Networks with EigenPooling
Code :

摘要

作者提出了EigenPool用來進行圖的層次性池化操作,相比於DIFFPOOL,EigenPool 主要解決的是面對層次化聚類過程中,如何將合併成一個超級節點的子圖的結構信息保留下來的問題,DIFFPOOL採用的是簡單的加和,而EigenPool用子圖上的信號在該子圖上的圖傅里葉變換來代表結構信息與屬性信息的整合輸出,具有如下幾個特點

  • 非參數化池化過程
  • 硬簇聚類矩陣,減少合併後超級節點之間信息傳遞的計算量

與此相伴的有若干個缺點:聚類過程無法進行學習,硬簇聚類可能會對準確率有所損失。總的來說,本文有以下4個貢獻點

  • 引入了EigenPool 層
  • 對EigenPool 的理論分析
  • 應用EigenPool 到GCN中,提出了EigenGCN
  • EigenPool實驗效果的評估

EigenPool

EigenPool算法分爲兩部分,1)圖坍縮,將圖分爲一組子圖,並通過將子圖視爲超節點來形成粗化圖; 2)使用EigenPooling將原始圖信號轉換爲在粗化圖上定義的信號。

在這裏插入圖片描述
EigenPool 採用譜聚類的方法得到圖坍縮的結果,譜聚類的思想是讓切圖後不同的子圖間邊權重和儘可能的低,而子圖內的邊權重和儘可能的高,從而達到聚類的目的。經典的譜聚類算法流程如下

  1. 計算拉普拉斯矩陣 L=DARn×nL=D-A\in \mathbb{R}^{n\times n}
  2. 構建正則化後的拉普拉斯矩陣 L=D12LD12L = D^{-\frac{1}{2}}LD^{-\frac{1}{2}}
  3. 計算L的特徵值,取最小的k個特徵值,並計算對應的特徵向量 u1,u2,...,ukRnu_{1},u_{2},...,u_{k}\in \mathbb{R}^{n}
  4. 將上面的 kk 個列向量組成矩陣U=u1u2...ukRn×kU= u_{1}||u_{2}||...||u_{k} \in \mathbb{R}^{n\times k}
  5. 對矩陣 UU 按行標準化
  6. yiRky_{i}\in \mathbb R^kUU 的第i行的向量
  7. 使用k-means算法將新樣本點 Y={y1,y2,...,yn}Y=\left \{ y{_{1}},y{_{2}},...,y{_{n}} \right \} 聚類成簇C1,C2,...,CkC_{1},C_{2},...,C_{k}
  8. 輸出簇 A1,A2,...,AkA{_{1}},A{_{2}},...,A{_{k}},其中,Ai={jyjCi}A{_{i}}=\left \{ j|y{_{j}} \in C{_{i}}\right \}.

採樣算子:採樣算子描述的是原圖與子圖之間節點關係的映射,假設原圖節點個數爲 NN,子圖節點個數爲 NkN_k,子圖 k 中節點集合爲 τk\tau^{k},採樣算子 C(k){0,1}N×NkC^{(k)} \in \{0,1\}^{N\times N_k} 定義爲

Cij(k)={1τj(k)=vi0otherwise C_{ij}^{(k)} = \left\{\begin{matrix} 1 & \tau^{(k)}_{j} = v_i \\ 0 & \text{otherwise} \end{matrix}\right.

給定原圖中某信號 xRN×d\text x \in \mathbb R^{N\times d},在子圖 k 上進行降採樣

x(k)=(C(k))Tx \text x^{(k)} = (C^{(k)})^\text T\text x

同理,在子圖 k 上的圖信號在原圖上升採樣

x=C(k)x(k) \text x' = C^{(k)}\text x^{(k)}

對鄰接矩陣進行降採樣可以採取相似的形式

A(k)=(C(k))TAC(k) A^{(k)} = (C^{(k)})^\text T A C^{(k)}

子圖內鄰接矩陣包含了所有坍縮掉的邊

Aint=kC(k)A(C(k))T A_\text{int} = \sum_k C^{(k)} A (C^{(k)})^\text T

子圖間鄰接矩陣包含了所有超級節點之間的邊

Aext=AAint A_\text{ext} = A-A_\text {int}

假定簇分配矩陣表示爲 SS,那麼坍縮後的鄰接矩陣定義爲

Acoar=STAextS A_\text{coar} = S^\text T A_\text{ext} S

假定 L(k)L^{(k)} 表示子圖 k 上的拉普拉斯矩陣,特徵值 u1(k)...uNk(k)RNku_1^{(k)}...u_{N_k}^{(k)}\in \mathbb R^{N_k},使用升採樣將特徵值映射到原圖中

ul(k)=C(k)ul(k)RNsubject to l=1...Nk \\\overline u_{l}^{(k)} = C^{(k)} u_{l}^{(k)} \in \mathbb R^{N} \\\text{subject to } l=1...N_k

將所有子圖中第 ll 個特徵向量拼接起來構成矩陣

Θl=[ul(1)...ul(K)]RN×K \Theta_l = [\overline u_{l}^{(1)}...\overline u_{l}^{(K)}] \in \mathbb R^{N\times K}

如果某子圖特徵向量個數不足 ll 個,補零。

假定池化層的輸入 XRN×dX \in \mathbb R^{N\times d} 表示節點上的特徵表示,那麼在 Θl\Theta_l 上的池化操作定義爲

Xl=ΘlTXRK×d X_l = \Theta_l^\text T X \in \mathbb R^{K\times d}

池化輸出定義爲

Xpool=[X0...Xmax(Nk)] X_\text{pool} = [X_0...X_{\max(N_k)}]

也可以只是用前 HH 個來進行輸出,即

Xcoar=[X0...XH] X_\text{coar} = [X_0...X_H]

理論分析

局部視角

使用前H個係數而丟棄其他意味着我們將更多的注意力放在圖形信號的“平滑”部分,這在許多應用中很常見,例如信號去噪和壓縮。通過使用前H個係數,我們可以保留大多數信息,同時降低計算成本。

全局視角

下式中,不失一般性,假定 XRN×1X\in \mathbb R^{N\times 1}

特性1:完美重構

  • 池化操作可以看作是濾波器,當使用max(Nk)\max (N_{k})個濾波器時,可以從濾波後的信號中完美重構輸入圖信號。
    l=1max(Nk)ΘlXl=X \sum_{l=1}^{\max(N_k)}\Theta_lX_l = X

特性2:能量/信息保留

  • 當選擇max(Nk)max(N_k)個濾波器時,改變後的信號保留所有能量。
    X22=l=1max(Nk)Xl22 ||X||^2_2 = \sum_{l=1}^{\max(N_k)}||X_l||_2^2

特性3:近似能量保留

  • 當選擇濾波器時個數時。 實際上,我們只需要 Hmax(Nk)H≪ \max(N_k) 的濾波器就可以進行有效的計算。 即使使用H個濾波器,濾波後的信號仍保留了大部分能量/信息。
    x22x22=l=1max(H)Xl22l=1max(Nk)Xl22 \frac{||x'||^2_2}{||x||^2_2} = \frac{\sum_{l=1}^{\max(H)}||X_l||_2^2}{\sum_{l=1}^{\max(N_k)}||X_l||_2^2}

特性4:節點順序具有排列不變性

實驗

作者主要從兩個角度進行實驗,一個是相比其他pool算法對準確率的提升,另一個是超參數H的影響。

在這裏插入圖片描述

其中,EigenGCN後面的數字表示H的大小,對比實驗中,作者得到如下若干結論

  • DIFFPOOL與EigenPool顯著超過其他不使用層次化聚類的結果
  • EigenPool對網絡的準確率有顯著改進
  • 更大的H可以保留更多的信息,但是也可能會引入更多的噪聲
  • EigenPool達到了SOTA的準確率

下圖是真實數據集上,H的大小對保留能量比率的影響

在這裏插入圖片描述

總結

EigenPool的提出告訴我們對傳統算法的研究永遠不過時,EigenPool使用的是圖論中的GFT進行變換和操作,與DIFFPOOL算法相比有更強的理論依據,因此個人認爲該篇paper相比DIFFPOOL具有更高的價值。不過有一個缺點在於沒有對時間代價的分析,EigenPool的兩步處理可能比較耗時。

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