GNNExplainer: Generating Explanations for Graph Neural Networks 個人總結
寫在前面:爲方便閱讀,儘量使用中文總結,對於翻譯無把握或專有詞彙,在中文後附上原文字段。此外,水平有限,對文章理解有偏差部分懇請大家海涵, 指正。
0. 原作信息
@inproceedings{ying2019gnnexplainer,
title={Gnnexplainer: Generating explanations for graph neural networks},
author={Ying, Zhitao and Bourgeois, Dylan and You, Jiaxuan and Zitnik, Marinka and Leskovec, Jure},
booktitle={Advances in Neural Information Processing Systems},
pages={9240--9251},
year={2019}
}
1. Contribution 本文貢獻
-
提出第一款通用,模型無關的(model-agnostic)對於GNN模型的解釋器GNNEXPLAINER
-
形式化描述GNNEXPLAINER爲最大化互信息的優化任務
-
抽取重要的子圖結構及節點特徵子集,作爲模型解釋。
2. Background 背景信息
對於非圖結構的神經網絡,解釋方法主要有如下兩個方向:
- 爲整個網絡構建簡單的代替模型
常爲模型無關的(model-agnostic),在待解釋樣本點的局部建立可信的估計。
E.g., 線性模型如LIME,規則集合如ANN_DT
- 識別模型計算過程中的重要層面
E.g. 關注特徵梯度(feature gradients)等。
對於圖神經網絡設計解釋方法,除去節點特徵外,還需要結合考慮圖的結構特徵。
3. Problem Formulation 問題定義
3.1 GNN回顧
抽象GNN基本操作如下:
給定GNN模型 , 對於 層節點的特徵表達求取,共經過如下3步。
-
與其鄰居節點進行信息傳遞:
-
聚合鄰居節點信息:
-
結合自身節點上層表達,生成本層節點表達
3.2 GNNEXPLAINER: Problem formulation
對於節點,其經過圖神經網絡後得到的embedding,由其對應的鄰居節點及特徵決定,分別計鄰居組成的子圖結構爲,特徵集合爲,
則節點的預測輸出爲
解釋器GNNEXPLAINER目標,即是提取出具備解釋性的子圖、特徵子集
具象化表示爲下圖:
4. GNNEXPLAINER
一系列公式推導,說明如何提取子圖、子特徵。
4.1 單一樣本的解釋 Single-instance explanations
設節點的子圖爲,有,對應的有特徵子集
我們想選取解釋性的子圖,則通過最大化互信息實現:
對於上式,由於GNN模型已經確定,故是常數。
展開第二項條件熵,,爲了求解一個緊緻解,我們約束,可以理解爲降噪,濾去無效鄰居。
因而,我們得到:
基於Jensen不等式,假設爲凸函數,我們能得到上界:
有意思的地方來了,作者大意是:效果很好,原理就別糾結了直接用就是。
顯然,GNN是不滿足凸函數假設的,但工作中發現基於上述目標函數,結合正則項,對於所學的局部最優解已經有較好的解釋能力。
對於期望 ,通過一個掩碼來實現, where 。即,實際解釋器要學習的,即是掩碼M。
進一步,一般我們希望瞭解“此樣本爲何被預測爲某一個類別”,而不是對全局模型的理解。故進一步修改目標函數爲:
4.2 節點特徵選擇 Node feature information
同理,也使用掩碼實現。
for
綜上,對於整個解釋器,要優化的目標函數即是:
此外,paper中提到使用reparametrization的trick來學習參數掩碼。
除卻上述目標函數外,解釋器還加入若干正則項限制,如
- element-wise entropy,鼓勵掩碼離散
- 懲罰過多非零項的掩碼
4.3 樣本子集的解釋 Multi-instance explanations through graph prototypes
未完全看懂。
除了對於單個樣本的解釋,GNNEXPLAINER也能對樣本子集進行解釋,如給出某類樣本的解釋。
實現思路,個人理解爲“想辦法將問題轉化爲單樣本的解釋。故需要設計算法實現代表節點的創建及響應的鄰接矩陣生成”。
基本步驟有2:
- 選擇參考節點(可通過對節點子集embeddings求平均實現)
- 創建對應的鄰接矩陣
5. Experiments 實驗
實驗設計、呈現都很巧妙,值得分析學習。
5.1 數據集
-
人工合成數據集
-
現實數據集
- MUTAG,化學分子數據集
- REDDIT-BINARY,論壇討論數據集。用戶爲節點,用戶間評論爲邊。
5.2 Baselines
做一個遷移當baselines。
- GRAD,基於梯度。
- ATT,使用GAT中的注意力權重。
5.3 Results 結果
-
定量
- -
定性
-1. One More Thing
個人思考:
對於單樣本的輸出解釋,若是做一個模型無關的解釋器,如下兩個步驟的設計是關鍵:
-
採樣。
對於GNN這樣基於消息傳遞的模型,每個節點的輸出肯定受其鄰居節點的影響。如何有效採樣,構建子圖,值得考量。
-
目標函數設計。
如何設計一個目標函數?本篇工作使用最大化互信息,還可以設計別的嗎,如何優化?
擴展閱讀:
- LIME
- GraphLIME
參考資料:
略去了文章中關於平均場部分,相關數據知識補充在此: