GNN模型評估的一些陷阱

極驗發表於2019-12-18

GNN 的應用逐漸廣泛起來,各種 GNN 的變體以及結構也在不斷推出,在這篇文章中,我將總結和比較各種不同的 GNN 之間的概念性問題。當然,對不同的模型結構進行客觀的比較是很困難的事情,並且按照文獻中實驗的結果進行比較並不總是正確。本文儘量是想幫助大家發現一些雷區並提出一些解決方案,希望引起大家的注意和討論。

我要說的一些問題在文章:

https://arxiv.org/abs/1811.05868 

中也得到了解決,強烈推薦大家閱讀。

鄰域

要比較 GNNs 第一個難以達成一致的問題是,不同形式的層具有不同大小的鄰域,有的層只考慮節點的1階鄰居,而有的層考慮 K 階鄰居。比較流行的一些例子如下: 

1-hop 

GCN:https://arxiv.org/abs/1609.02907

GAT:https://arxiv.org/abs/1710.10903

GraphSage:https://arxiv.org/abs/1706.02216

GIN:https://arxiv.org/abs/1810.00826

K-hop

Cheby:https://arxiv.org/abs/1606.09375

ARMA:https://arxiv.org/abs/1901.01343

APPNP:https://arxiv.org/abs/1810.05997

SGC:https://arxiv.org/abs/1902.07153

公平的評估應該考慮到這些差異,並統一每個 GNN 具有相同的鄰域,但是設計在更大鄰域上操作的層表達能力更強。以 GCN 和 Cheby 為例:

2 層的 GCN 可以等效為 2層 K =1 的 Cheby 或者 1層 K=2 的 Cheby。在 GCN 的論文中,使用了 K=3 的 2 層 Cheby。他們是和 6 層 的 GCN 進行比較嗎?此外,方法之間的差異可能會影響 GCN 引數之間的差異,比如非線性和正則化的總量。例如,到達3 階鄰域的 GCN 可能具有3個 dropout 層,而 K = 3 的等效 Cheby 將只有 1 個。

另一個示例:SGC 可以使用恆定數量的引數到達任何鄰域,而其他方法則不能。

正則化和訓練

正則化是 GNN 非常重要的方面,因為開源的一些基準資料集都非常小,而大多數 GNN 都像瘋了似的過擬和(稍後會詳細介紹)。因此,模型的效能會因為正則化的方式而不同。通常,對於其他超引數也應是如此,因為學習率和批處理大小之類的東西可能是隱式正則化的一種形式。

不同文獻的正則化方式並不相同,所以很難說是模型的效能改進是由於實際的貢獻還是由於不同的正則化方案。

在文獻中經常會有:

  • 學習率

  • 高 L2 正則項

  • 節點特徵和鄰接矩陣的高 dropout rates 

  • 少量的訓練 epochs 

  • 低 patience

我們來看看其中的一些。首先我認為設定固定數量的訓練 epoch 是一種鍊金術,如果可能的話應該避免,因為這是特定於某一任務的。讓模型訓練收斂幾乎總是一種更好的方法,因為它較少依賴權重的初始化。如果驗證效能不指示測試效能,並且需要在沒有良好標準的情況下停止訓練,那可能是有問題。

我們比較容易忽略的第二個方面是 dropout。特別是,當將 dropout 應用於鄰接矩陣時,會很大的提高 GNN 的效能,因為GNN在每個訓練步驟中的噪聲都很大,因此具有很好的泛化性。當比較兩個不同的模型時,一個在鄰接矩陣上使用了 dropout ,另一個也應該使用。但在實際的情況中,卻不是如此。

最後,訓練中剩下的關鍵因素是學習率和權重。就價值而言,以我的經驗來說,對於訓練之後可以收斂的模型來說,尋找良好的學習率會得到意想不到的效果。

並行 Heads

Heads 是平行計算單元,它們以不同的權重執行相同的計算,然後合併結果以產生輸出。為了更好的瞭解這個過程,我們來比較兩種方法:GAT 和 ARMA

在 NLP 文獻中,並行的注意力 Heads 是相當普遍的,注意力的概念正是由此得來,因此在 GAT 中使用是很自然的。

在ARMA中,使用並行 stacks 的理論動機是,H 階 ARMA 過濾器可以透過求和 1 階ARMA 過濾器來計算。雖然在實踐中類似於  GAT中的 heads,但在這種情況下,具有並行 heads 是實現這種特殊圖過濾器的關鍵。

由於這些基本的語義差異,不得不考慮將帶有 H heads 的 GAT 和 H 階 ARMA 層進行比較是否公平。同樣擴充套件到其他模型,也不能保證具有並行 heads 必定會導致給定模型的任何實際改進。實際上,某些方法可能受益於更簡單的體系結構。因此,很難說單 head 與多 head 之間的比較是否公平。

資料集

最後,我們來說說資料集。如果我們測試模型的資料集不好,那麼就很難進行公平的評估。實際上很多用來評估 GNN 的資料集並沒有那麼好。

Cora, CiteSeer, PubMed 的圖基準資料集,統稱為 GNN 的 Iris 資料集,我們應該小心對待。很多論文中的實驗必須重複上百次才能得到顯著的結果,這其實是蠻糟糕的。原因有三點:時間、金錢和環境。特別是如果對超引數進行網格搜尋,那麼需要使用大量計算才能得到可靠結果的資料集是沒有意義的,如果我們認為這些資料集應該是簡單的資料集,那麼就更沒有意義了。

根據我自己的判斷,我覺得有一些更好的替代方案:對於節點分類任務,GraphSage 資料集(PPI 和 Reddit)是比引文網路更好的基準,儘管它們是歸納任務。對於圖級別的學習,QM9 有 134k 個小圖,它們的順序可變,經過幾次執行後,結果的不確定性會很小。雖然它是用於迴歸任務的資料集,但是我仍然覺得它比 PROTEINS 好的選擇。對於分類任務,還有一個資料集:

FilippoBianchi(https://github.com/FilippoMB/Benchmark_dataset_for_graph_classification)

總結

在準備我論文的時候,我會非常認真的思考上述問題。我不確定上述問題一定是正確的,但我認為這是在 GNN 領域中必須要進行的探討,並且這將推動 GNN 的發展。如果你還有一些見解,可以直接和我們分享。

探討

M

很有趣的一篇文章!我確實同意其中一些觀點,但並非全部。我們在的PPI實驗的結果高於97%,因為使用了巨大的 GAT 模型。Reddit太密集了,通常在標籤密集的環境中使用。QM9 很棒,但應該將其與 MEGNet 或 DimeNet 等分子模型進行比較。

D:是的,但是我認為這只是一部分問題:如果我不能可靠地將其用於實際問題,那麼超專業化模型就毫無意義。所以問題實際上是:一個巨大的 GAT 是否勝過一個龐大的GCN 集合?我想要考慮的是:如果來自不同科學領域的人想要使用 GNN 進行工作,該怎麼辦。他們應該使用什麼?我們是要他們對不同模型的實際效能進行公平的評估,還是隻是過擬合以取悅評論者?

M

當然。但是這些資料集(尤其是 QM9)是完全不同的。因此,不應該期望相同的模型在所有這些資料集上均能正常工作。並且,如果針對 QM9 調整了模型,則應與針對該資料集調整的其他模型進行比較,而不僅僅是忽略它們。

當然,我們都可以發表自己的見解,可以和我們一起分享和探討哦!

新的圖基準資料集:

http://ogb.stanford.edu/

原文連結:

https://danielegrattarola.github.io/posts/2019-12-13/pitfalls.html

相關文章