本文由斯坦福 Jure 組發表在 NeurIPS 2019 上,一作 Rex Ying 也是著名的 GraphSAGE 的作者。代碼和數據:
https://github.com/RexYing/gnn-model-explainer
引言
圖神經網絡(Graph Neural Network), 作爲深度學習領域最熱門的方向之一,相關論文在各大頂會層出不窮。但是,圖神經網絡的解釋性問題沒有得到較多的關注。圖神經網絡的解釋性是非常有必要的:1)提升了 GNN 的可信程度;2)在一些注重公平性,隱私性和安全性的決策應用,可以提升決策的透明度;3)可以更好的理解圖本身的特性。
雖然一些基于 Attention 機制的模型(如 Graph Attention Network)可以一定程度上對 GNN 進行解釋。但是,作者認爲它們有兩個問題:1)GAT 可以學習節點之間關系的權重,但是其只能實現對結構的進行解釋而無法通過特征的角度進行解釋;2)節點的 1-hop 鄰居和 2-hop 鄰居可能有重疊,GAT 會學習到同一對節點之間的不同權重。這時候到底該用那個無法抉擇。
因此,本文提出了 GNNExplainer,可以從網絡結構和節點屬性的角度來對任意圖神經網絡和任意圖挖掘任務生成解釋。GNNExplainer 旨在探尋與預測結果最相關的子圖結構來實現對結果的解釋,其中 Graph Mask 和 Feature Mask 可以分別對實現對結構和特征的篩選。
上圖給了一個如何對 GNN 預測的節點分類(Basketball 和 Sailing)的結果進行解釋。針對節點
及其 label 籃球,其鄰居中很多人都喜歡球類也有一些喜歡非球類, GNNExplainer 可以自動的找到鄰居中都喜歡球類的這些人。同樣的,針對節點
,GNNExplainer 也可以發現其好友中同樣喜歡水上/沙灘類運動的好友。
模型
作者首先歸納了 GNN 的三個步驟:1)MSG,構建節點之間需要傳遞的消息;2)AGG,收集節點相關的消息;3)UPDATE,更新節點表示。下圖解釋了 GNNExplainer 要做的事情:自動發現重要的消息和特征。
Multi-instance explanations through graph prototypes
上面都是對單個節點進行解釋,但是很多時候我們更關注:如何對一類節點的預測進行解釋?本文把這個叫做 multi-instance explanations,其主要包含兩步:
1. 給定節點類別 c,作者通過對該類的所有節點的 Embedding 進行平均得到了參考節點
2. 聚集鄰居矩陣得到 Graph Prototype 即:同類節點之間共享的圖模式。
實驗
作者在合成/真實數據集上驗證了 GNNExplainer 在多種任務上的解釋能力。
下圖是在合成數據集上的結果。可以看出相對于 Grad 和 Att,GNNExplainer 可以更好的抽取出與 Ground Truth 相似的結構。
作者隨後在真實數據集上,從結構和特征兩個方面對圖分類和節點分類任務進行了解釋。與合成數據集上類似,GNNExplainer 可以更好抽取出于 Ground Truth 相似的的結構。即使 Ground Truth 存在多個複雜結構的時候,GNNExplainer 依然可以抽取出最具有解釋性的結構。
除了從結構的角度對 GNN 進行解釋之外,GNNExplainer 也可以抽取出最重要的特征來實現更好的解釋。從下圖可以看出,在 molecule 中含有多種原子中,有部分原子對預測 mutagenicity 有重要作用,而 GNNExplainer 可以非常好的識別出來。Grad 的方法一定程度上可以識別特征的重要性,但是不夠明確。
總結
神經網絡包括圖神經網絡在很多領域都得到了應用也取得了很好的效果。但是如何對神經網絡的預測結果進行解釋是一個問題。很多工作嘗試利用注意力機制來對模型預測結果進行解釋。本文針對 GNN 的特點,從結構和特征的角度來對任意 GNN 在任意任務上的結果進行了解釋。