騰訊AI Lab聯合清華、港中文,萬字解讀圖深度學習歷史、最新進展與應用(7)
基于信息的方法
介紹了預測方法,我們再來看基于信息的方法。
優良的表征應該能將輸入中的大量信息保存下來。受此啟發,Vincent et al. 在 2010 年提出使用自動編碼器來進行表征學習,這意味著隱藏表征應該可以解碼到與其輸入一樣。
但自動編碼器資源消耗高,既需要編碼,也需要解碼,而在圖領域,如何解碼圖仍還是一個有待解決的問題。那么還有其它可以直接衡量表征與輸入之間的信息的方法嗎?有的,那就是互信息(mutual information)。
給定兩個隨機變量,互信息的定義是它們的邊界屬性和關節屬性的積之間的 KL 散度,這又可以進一步推導為熵減去條件熵。
互信息為什么可以計算信息關系?我們可以這樣看,如果 X 和 Y 互相獨立,且 p(X)p(Y)=p(X,Y),則互信息等于 0,這表明 X 和 Y 不相關。這是合理的,因為 X 和 Y 互相獨立。如果條件熵為 0,則 X 和 Y 確定是相關的,則互信息輸出為最大值。
Hjelm et al. 2019 證明執行自動編碼是計算互信息的重建誤差的一個下限。
計算互信息是很困難的,近些年方才出現一些可行的方法。這里有三種典型的方法(MINE、JSD MI 和 infoNCE MI),其基本思想是學習一個神經網絡來最大化互信息的一個替代函數。詳情請參閱各論文。
回到圖,我們能否使用互信息來實現圖的自監督學習?DGI 是這方面首個研究成果,其目標設定為最大化輸入的節點特征 X 和鄰接矩陣 A 與輸出表征 h_i 之間的互信息。DGI 使用了 JSD 估計器,其中包含正例項和負例項。
但直接計算互信息的難度不小,我們可能需要另一個 GNN 作為互信息的替代。DGI 使用了表征的讀出 s 來替代輸入。如下圖所示,原圖有兩個輸入,其中錯誤的圖是負例,然后我們用同樣的 GNN 得到它們的輸出,之后再執行讀出函數得到 s。s 可以替代原目標中的 X,A,得到替代目標函數。
DGI 證明這種操作不會導致信息損失,其還證明這種替換方式實際上就等同于真正的互信息。
不過 DGI 仍還有一些問題。第一是它需要讀出函數來計算互信息,而且這個讀出函數需要是單射式的,這并不容易保證。另外它還需要構建錯誤的圖來得到負例,因此效率不高。而在實驗中,DGI 需要為不同的任務使用不同的編碼器,這并不實用。
針對這些問題,清華大學、西安交通大學與騰訊 AI Lab合作提出了 GMI,其基本思想是不使用讀出函數和錯誤樣本,而是直接計算互信息。
在 GMI 中,首先分兩部分定義互信息。一是特征互信息,僅度量節點特征和表征之間的信息關系。二是拓撲互信息,這是預測的邊和原始鄰接矩陣之間的互信息。
很顯然,這一方法能同時考慮到邊和特征,而無需讀出函數或錯誤樣本。更重要的是,特征互信息還能進一步分解。
我們證明:特征互信息可以分解為局部互信息的加權和。而每個局部互信息計算的是每個節點及其表征之間的互信息。權重取決于不同的情況,將它們設置為與預測的邊一樣也不錯。然后我們可以使用 JSD 互信息估計器來計算特征互信息和邊互信息。
在節點分類任務上的實驗結果證明 GMI 有更優的表現,相關的代碼也已經發布:https://github.com/zpeng27/GMI
至于用于圖分類的基于信息的方法,可參看 ICLR 2020 論文《InfoGraph: Unsupervised and Semi-supervised Graph-Level Representation Learning via Mutual Information Maximization》,這里不再過多贅述。
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。