圖神經網絡 GNN 的可解釋性問題與解釋方法最新進展
前言
本文是一篇稍有深度的教程,假設讀者具備圖神經網絡的基礎知識和一點計算化學的知識。如果你想爲本文做好準備,我在下面列出了一些有用的文章。
譯註:計算化學(computational chemistry),是理論化學的一個分支,主要目的是利用有效的數學近似以及電腦進程計算分子的性質,例如總能量、偶極矩、四極矩、振動頻率、反應活性等,並用以解釋一些具體的化學問題。計算化學這個名詞有時也用來表示計算機科學與化學的交叉學科。
- 《 圖卷積網絡簡介 》(Introduction to Graph Convolutional Networks)
- 《 關於圖卷積網絡的進階教程 》(More Advanced Tutorial on Graph Convolutional Networks)
- 《 化學信息學導論 》(Introduction to Cheminformatics)
- 《 分子指紋 》(Molecular Fingerprints)
本文最初發表於 TowardsDataScience 博客,經原作者 Kacper Kubara 授權,InfoQ 中文站翻譯並分享。
什麼是圖神經網絡
卷積神經網絡(Convolutional Neural Network,CNN)和圖神經網絡(Graph Neural Network,GNN)的主要區別是什麼?
簡單來說,就是 輸入數據 。
你可能還記得,CNN 所需的輸入是一個固定大小的向量或矩陣。然而,某些類型的數據自然是用圖表示的,如分子、引用網絡或社交媒體連接網絡都可以用圖數據來表示。在過去 GNN 還沒有普及的時候,圖數據往往需要經過這樣的轉換,纔可以直接提供給 CNN 作爲輸入。例如,分子結構仍被轉換爲固定大小的指紋,每個位表示是否存在某種分子子結構 [1] 。這是一種將分子數據插入 CNN 的好方法,但它會不會導致信息損失呢?
GNN 利用圖數據,省去了數據預處理步驟,充分利用了數據中包含的信息。現在,有許多不同的 GNN 架構,其背後的理論也很快變得複雜起來。然而,GNN 可以分爲兩類:空間方法(Spatial approach)和譜方法(Spectral approach)。空間方法更爲直觀,因爲它將池化和卷積操作(如 CNN)重新定義到圖域。譜方法從一個稍有不同的角度來處理這個問題,因爲它側重於處理被定義爲使用傅里葉變換(Fourier transform)的圖網絡的信號。
如果你想了解更多信息,可以閱讀 Thomas Kipf 寫的 博文 ,這篇博文深入介紹了 GCN。另一篇值得閱讀的有趣論文是《 MoleculeNet:分子機器學習的基準 》[2] ,它很好地介紹了 GNN,並描述了流行的 GNN 架構。
當前 GNN 可解釋性問題
在撰寫本文時,對 GNN 解釋方法有貢獻的論文屈指可數。儘管如此,這仍然是一個非常重要的主題,最近變得越來越流行。
GNN 的流行要比標準神經網絡晚得多。雖然這一領域有很多有趣的研究,但還不是很成熟。GNN 的庫和工具目前仍然處於“實驗階段”,我們現在真正需要的是,讓更多的人使用它來發現 Bug 和錯誤,並轉向生產就緒的模型。
創建生產就緒的模型的一種方法是更好地理解它們所做的預測。可以使用不同的解釋方法來完成。我們已經看到了許多應用於 CNN 的有趣的可解釋性方法,例如梯度歸因(Gradient attribution)、顯著性映射(Saliency maps)或類激活映射(Class activation mapping)等。那麼,爲什麼不將它們重新用於 GNN 呢?
事實上,這就是目前正在發生的事情。最初用於 CNN 的解釋性方法正在重新設計並應用於 GNN。雖然無需重新發明輪子,但我們仍然必須通過重新定義數學操作來調整這些方法,使它們適用於圖數據。這裏的主要問題是,關於這一主題的研究還相當新,第一篇論文發表於 2019 年。然而,隨着時間的推移,它將會變得越來越流行,目前幾乎還沒有什麼有趣的可解釋性方法可用於 GNN 模型。
在本文中,我們將研究新的圖解釋方法,並瞭解如何將它們應用於 GNN 模型。
第一次嘗試:可視化節點激活
2015 年,Duvenaud 等人 [3] 發表了關於 GNN 解釋技術的開創性論文。該論文主要貢獻是提出了一種新的 神經圖指紋模型 ,同時也爲這種結構創造了一種解釋方法。該模型背後的主要思想是直接從圖數據本身創建可區分的指紋。爲實現這一點,作者不得不重新定義圖的池化和平滑操作。這些操作然後被用來創建一個單層。
如圖 4 所示,這些層疊加 n 次以產生向量輸出。層深度也與相鄰節點的半徑相對應,從這些節點收集和彙集節點特徵(在本例中爲和函數)。這是因爲,對於每一層,池化操作都從鄰近節點收集信息,如圖 1 所示。對於更深的層,池化操作的傳播會延伸到更遠的鄰近節點。與正常的指紋相反,這種方法是可區分的,這使得反向傳播可以以類似 CNN 的方式更新其權值。
除了 GNN 模型之外,他們還創建了一個簡單的方法,可以顯示節點激活及其鄰近的節點。遺憾的是,這種方法在論文中沒有很好地解釋,因此有必要查看它們的 代碼實現 以理解其底層機制。然而,他們在分子數據上運行它來預測溶解度,它突出了部分對溶解度預測有交稿預測能力的分子。
到底是怎麼工作的呢?爲計算節點激活量,我們需要進行以下計算。對於每個分子,讓我們通過每一層向前傳遞數據,類似於在一個典型 CNN 網絡中對圖像的處理。然後,我們用 softmax()
函數提取每個指紋位各層的貢獻。然後,我們就能夠將一個節點(原子)與它周圍對特定指紋位貢獻最大的鄰居(取決於層深)關聯起來。
這種方法相對簡單,但沒有留下很好的文檔記錄。但該論文所做的初步工作是相當有前途的,研究人員隨後進行了更爲詳細的嘗試,將 CNN 的解釋方法轉化爲圖域。
如果你想進一步瞭解它,可以參閱他們的 論文 、 代碼倉庫 或我在這個 Github 問題 底部對方法的詳細解釋。
卷積神經網絡的重用方法
敏感度分析 (Sensitive Analysis)、 類激活映射 或 激發反向傳播 (Excitation Backpropagation)都是已經成功應用於 CNN 的解釋技術的示例。目前針對可解釋 GNN 的研究試圖將這種方法轉換成圖域。這一領域的大部分工作都是在這些論文 [4][5] 中完成的。
本文不再着重於這些方法的數學解釋,我將爲你提供這些方法的直觀解釋,並簡要討論這些方法的結果。
歸納 CNN 的解釋方法
爲了重用 CNN 的解釋方法,讓我們將 CNN 輸入的數據(即圖像)視爲一個格子形狀的圖。圖 6 說明了這個想法。
如果我們牢記圖像的圖推廣,我們可以說 CNN 解釋方法不怎麼關注邊緣(像素之間的連接),而是關注節點(像素值)。這裏的問題是,圖數據中的邊緣包含了很多有用的信息 [4][5] ,而不是以網格狀的順序。
哪些方法已經轉換爲圖域?
到目前爲止,文獻已經討論過以下解釋方法:
- 敏感度分析(Sensitivity Analysis)[4]
- 引導反向傳播 (Guided Backpropagation)[4]
- 層次相關傳播 (Layer-wise Relevance Propagation)[4]
- 基於梯度的熱圖 (Gradient-based heatmaps)[5]
- 類激活映射(Class Activation Maps)[5]
- 梯度加權類激活映射(Gradient-weighted Class Activation Mapping (Grad-CAM))[5]
- 激發反向傳播 (Excitation Backpropagation)[5]
請注意,其中兩篇論文 [4][5] 的作者並未提供這些方法的開源實現,因此目前尚無法使用它們。
模型無關方法:GNNExplainer
本文的代碼倉庫可以在 這裏 找到。
不用擔心,實際上有一個 GNN 解釋工具可以供你使用!
GNNExplainer 是一種模型無關的開源 GNN 解釋方法。它也是一個相當通用的,因爲它可以應用於節點分類、圖分類和邊預測。這是創建圖特定解釋方法的首次嘗試,由斯坦福大學的研究人員提出 [6] 。
它是如何工作的?
作者聲稱,重用之前應用於 CNN 的解釋方法是一種糟糕的方法,因爲它們未能納入關係信息,而關係信息是圖數據的本質。此外,基於梯度的方法對於離散輸入並不是特別有效,而 GNN 通常就是這種情況(例如, 鄰接矩陣 是二進制矩陣)。
爲了克服這些問題,他們創建了一種與模型無關的方法,該方法可以找到輸入數據的子圖,這些子圖以最重要的方式影響 GNN 的預測。說得更具體一些,子圖的選擇是爲了最大化與模型預測的互信息(Mutual information)。下圖顯示了 GNNExplainer 如何處理由體育活動組成的圖數據的一個示例。
作者提出的一個非常重要的假設是 GNN 模型的公式。模型的架構或多或少是任意的,但它需要實現 3 個關鍵計算:
- 相鄰節點間的神經信息計算。
- 來自節點鄰域的消息聚合。
- 聚合消息的非線性變換及節點表示。
這些所需的計算在某種程度上是有限制的,但大多數現代 GNN 架構無論如何,都是基於消息傳遞架構的。[6]
論文給出了 GNNExplainer 的數學定義和優化框架的描述。然而,我會省去一些細節,向你展示一些可以通過 GNNExplainer 獲得的有趣結果。
GNNExplainer 在實踐中的應用
爲比較結果,他們使用了 3 種不同的解釋方法: GNNExplainer , 基於梯度的方法 (Gradient-based method,GRAD)和 圖注意力模型 (Graph attention model,GAT)。在本文前面部分提到了 GRAD,但 GAT 模型需要一些解釋。這是另一個 GNN 架構,它學習邊的注意力權重,這將幫助我們確定圖網絡中哪些邊對節點分類實際上很重要。這可以作爲另一種解釋技術使用,但它只適用於這個特定的模型,而且它不解釋節點特性,這與 GNNExplainer 相反。
首先讓我們看一下應用於合成數據集的解釋方法的性能。圖 8 顯示了在兩個不同的數據集上運行的實驗。
BA-Shapes 數據集基於 Barabasi-Albert (BA) 圖,它是一種圖網絡,我們可以通過改變它的一些參數來自由調整大小。在這個基礎圖上,我們將附加一些小的房屋結構圖(motifs),這些圖在圖 8 中顯示爲真相(Ground Truth)。此房屋結構的節點有 3 個不同的標籤:頂部、中部和底部。這些節點標籤只是表示節點在房子中的位置。因此,對於一個類房屋的節點,我們有 1 個頂部節點、2 箇中部節點和 2 個底部節點。還有一個額外的標籤,表示該節點不屬於類房屋圖結構。總體而言,我們有 4 個標籤和一個 BA 圖,其中包含 300 個節點和 80 個類房屋結構,這些結構被添加到 BA 圖的隨機節點中。我們還通過添加 0.1N 個隨機邊來增加一些隨機性。
BA-Community是兩個 BA-Shapes 數據集的聯合,因此總共有 8 個不同的標籤(每個 BA-Shapes 數據集有 4 個標籤)和兩倍的節點。
讓我們來看一看結果。
結果似乎很有希望。GNNExplainer 似乎以最準確的方式解釋了結果,因爲所選擇的子圖與真相相同。Grad 和 Att 方法未能提供類似的解釋。
如圖 9 所示,該實驗也是在真實數據集上進行的。這一次的任務是對整個圖網絡進行分類,而不是對單個節點進行分類。
Mutag是一個由分子組成的數據集,這些分子是根據對某類細菌的誘變效應進行分類的。數據集有很多不同的標籤,它包含 4337 個分子圖。
Reddit-Binary是一個代表 Reddit 中在線討論主題的數據集。在這個圖網絡中,用戶用節點表示,邊表示對另一個用戶評論的響應。根據用戶交互的類型,有兩種可能的標籤,它可以是問答互動,也可以是在線討論互動。總的來說,它包含 2000 個圖。
對於 Mutag 數據集,GNNExplainer 正確識別已知具有致突變性的化學基團(如 NO2、NH2)。GNNExplainer 還解釋了歸類爲 Reddit-Binary 數據集在線討論分類圖。這種類型的交互通常可以用樹狀的模式表示(查看真相)。
參考文獻
- [1] 《 再論分子哈希指紋 》( Revisiting Molecular Hashed Fingerprints )
- [2] 《 MoleculeNet:分子機器學習的基準 》( MoleculeNet: A Benchmark for Molecular Machine Learning )
- [3] 《 用於學習分子指紋的圖卷積網絡 》(Convolutional Networks on Graphs for Learning Molecular Fingerprints)
- [4] 《 圖卷積網絡的可解釋性技術 》(Explainability Techniques for Graph Convolutional Networks)
- [5] 《 圖卷積神經網絡的可解釋性方法 》(Explainability Methods for Graph Convolutional Neural Networks)
- [6] 《 GNNExplainer:生成圖神經網絡的解釋 》(GNNExplainer: Generating Explanations for Graph Neural Networks)
- 代碼倉庫: https://github.com/RexYing/gnn-model-explainer
作者介紹:
Kacper Kubara,南安普頓大學(University of Southampton)即將畢業的學生,電子工程專業,同時也是 IT 創新中心的研究助理。在業餘時間喜歡擺弄數據或調試深度學習模型。喜歡徒步旅行。
原文鏈接:
https://towardsdatascience.com/towards-explainable-graph-neural-networks-45f5e3912dd0