天天看點

GCNII《Simple and Deep Graph Convolutional Networks》閱讀筆記GCNII

GCNII

Chen M, Wei Z, Huang Z, et al. Simple and deep graph convolutional networks[C]//International Conference on Machine Learning. PMLR, 2020: 1725-1735.

本文主要是針對GNN模型的過平滑(over-smooth)問題展開研究與讨論,回顧之前的一些解決方案,并且借鑒ResNet設計了GCNII模型。

過平滑問題以及其相關工作

其實到現在為止,大部分GNN模型都是淺層的,可以稱得上深層模型的屈指可數——GCNII和DeeperGCN。之是以不能太深,是因為過平滑問題會導緻性能下降。

所謂過平滑,就是指當我們堆疊多個圖卷積層時,模型的性能不升反降的現象。至于為什麼會這樣,一種比較合理的解釋是:這些模型都可以看作是一些濾波器,而這些濾波器所模拟的lazy随機遊走會最終收斂到一個穩定的向量,因而導緻了無法區分出不同的節點。并且,高度節點由于從鄰居獲得更多的資訊,是以更容易出現過平滑問題。

而模型過淺,我們就無法從高階鄰居中提取資訊了。

當然,從GNN剛興起的時候大家就發現這個問題了,很多人都對此提出了各式各樣的解決方案,其中一些思路對于我們自己設計model是很有幫助的。

第一類大方向是沿着ResNet中的剩餘連接配接以及圖的正則化等方法進行擴充和思考。

  1. skip-connection。一般是把目前層的結果和上一層的結果進行連接配接/拼接,這樣,既可以保留之前的運算結果,又可以加速模型在訓練過程中的收斂速度。
  2. JKNet。儲存每一層的運算結果,最後統一對所有層的結果進行一個連接配接,可以減輕過平滑問題。
  3. DropEdge。訓練時随機丢棄途中的一些邊,是一種圖資料增強的方法。

第二類大方向是淺層模型中的深度傳播方法。

  1. SGC。
  2. APPNP。
  3. GDC。

第一類方法确實是模型深度有了小幅提升,但是無法更深,還是存在過平滑的問題;第二類方法根本就沒有加深模型深度,隻是每一層深度傳播去聚合更多的資訊,也失去了深層模型的非線性結構。

雖然如此,層數一多,仍然會有過平滑問題。

GCNII模型

GCNII(Graph Convolutional Network via Initial residual and Identity mapping),就是帶有初始剩餘連接配接和恒等映射的GCN。

PyG官方文檔:GCN2Conv。

X ′ = ( ( 1 − α ) P ^ X + α X ( 0 ) ) ( ( 1 − β ) I + β Θ ) \mathbf{X}^{\prime} = \left( (1 - \alpha) \mathbf{\hat{P}}\mathbf{X} + \alpha \mathbf{X^{(0)}}\right) \left( (1 - \beta) \mathbf{I} + \beta \mathbf{\Theta} \right) X′=((1−α)P^X+αX(0))((1−β)I+βΘ)

其中 P ^ = D ^ − 1 / 2 A ^ D ^ − 1 / 2 , β = log ⁡ ( θ ℓ + 1 ) \mathbf{\hat{P}} = \mathbf{\hat{D}}^{-1/2} \mathbf{\hat{A}} \mathbf{\hat{D}}^{-1/2},\beta = \log \left( \frac{\theta}{\ell} + 1 \right) P^=D^−1/2A^D^−1/2,β=log(ℓθ​+1)。

看名字也知道,GCNII就2個改進。

  1. 初始剩餘連接配接(Initial residual connection)。

    GCN中因為有self-loop的存在,其實也含有比較弱的剩餘連接配接。借鑒了APPNP,初始剩餘連接配接就是讓輸入X先經過一個FC層得到 X ( 0 ) X^{(0)} X(0),這個 X ( 0 ) X^{(0)} X(0)按比例連接配接到後面的其它層。一般另超參數 α \alpha α=0.1或0.2即可。

  2. 恒等映射(Identity mapping)。

    類比ResNet中的恒等映射,這裡按照比例把機關矩陣 I I I加到權重矩陣 Θ \Theta Θ上(注意均為方陣才行),然後比例系數 β \beta β的值随着層數的加深逐漸減小,代表着層數越深越接近恒等變換。恒等映射被證明在半監督學習當中很有用,可以從疊代收縮門檻值算法中找到很好的理論動機。

實驗

說實話,實驗幾乎沒有參考價值。。

估計是寫這篇文章的時候OGB資料集還沒出來,是以還是用的一些玩具資料集(Cora等)在實驗,根本就沒有意義。有一個點需要注意,實驗中嚴格區分了半監督節點分類和完全監督節點分類。半監督就是Cora等資料集的标準方法,完全監督就是按照60%、20%、20%來劃分的資料集。

後面作者又補做了OGB資料集的實驗。

ogbn-arxiv:https://github.com/chennnM/GCNII/tree/master/PyG/ogbn-arxiv

GCNII《Simple and Deep Graph Convolutional Networks》閱讀筆記GCNII

總結

最後,作者提出了未來方向:将GCNII與注意力(attention)機制相結合。我覺得這很合理,因為ogbn-arxiv排行榜前面的幾乎都用到了GAT,後面我也要重點去關注一下GAT。

總體來說,這篇文章特别是初始剩餘連接配接對我的啟發還是很大的(雖然也是借鑒人家APPNP的)。最近看到或者實際去實踐的一些改進政策似乎都和ResNet有着密不可分的關系,ResNet真的是經典啊,跨領域也能用得上!

繼續閱讀