圖卷積(變分)自編碼器(GAE and VGAE)


    自編碼器是無監督學習領域中一個非常重要的工具。最近由於圖神經網絡的興起,圖自編碼器得到了廣泛的關注。筆者最近在做相關的工作,對科研工作中經常遇到的:圖自編碼器(GAE)和圖變分自編碼器(VGAE)進行了總結。如有不對之處,請多多指正。

自編碼器(AE)

    在解釋圖自編碼器之前,首先理解下什么是自編碼器。自編碼器的思路來源於傳統的PCA,其目的可以理解為非線性降維。我們知道在傳統的PCA中,學習器學得一個子空間矩陣,將原始數據投影到一個低維子空間,從未達到數據降維的目的。自編碼器則是利用神經網絡將數據逐層降維,每層神經網絡之間的激活函數就起到了將"線性"轉化為"非線性"的作用。自編碼器的網絡結構可以是對稱的也可以是非對稱的。我們下面以一個簡單的四層對稱的自編碼器為例,全文代碼見最后。
   (嚴格的自編碼器是只有一個隱藏層,但是我在這里做了個拓展,其最大的區別就是隱藏層以及神經元數量的多少,理解一個,其它的都就理解了。)

圖自編碼器(GAE)

    圖自編碼器和自編碼器最大的區別有兩點:一是圖自編碼器在encoder過程中使用了一個 \(n*n\) 的卷積核;另一個是圖自編碼器沒有數據解碼部分,轉而代之的是圖解碼(graph decoder),具體實現是前后鄰接矩陣的變化做loss。
   圖自編碼器可以像自編碼器那樣用來生成隱向量,也可以用來做鏈路預測(應用於推薦任務)。

變分自編碼器(VAE)


   變分自編碼是讓中間層Z服從一個分布。這樣我們想要生成一個新的樣本的時候,就可以直接在特定分布中隨機抽取一個樣本。另外,我初學時遇到的疑惑,就是中間層是怎么符合分布的。我的理解是:
      輸入樣本:\(\mathbf{X \in \mathcal{R}^{n * d}}\)
      中間層 :\(\mathbf{Z \in \mathcal{R}^{n * m}}\)
   所謂的正態分布是讓\(Z\)的每一行\(z_i\)符合正態分布,這樣才能隨機從正態分布中抽一個新的\(z_i\)出來。

變分圖自編碼器(VGAE)

    如果你理解了變分比編碼器和圖自編碼器,那么變分圖自編碼器你也就能理解了。第一個改動就是在VAE的基礎上把encoder過程換成了GCN的卷積過程,另一個改動就是把decoder過程換成了圖decoder過程。

   我在示例代碼中,將這四種方法應用到下游任務中:聚類,分類,可視化。數據集和下游任務的代碼見: https://github.com/zyx423/GAE-and-VGAE.git


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM