今天學習的是 Thomas N. Kipf 的 2016 年的工作《Variational Graph Auto-Encoders》,目前引用量爲 260 多。
VGAE 屬於圖自編碼器,是圖神經網絡細分類別的一大類。Kipf 同學也非常厲害,其影響力最大的一篇論文莫過於 2017 年提出的 GCN 模型。
VGAE 全稱爲 Variational Graph Auto-Encoders,翻譯過來就是變分圖自編碼器,從名字中我們也可以看出 VGAE 是應用於圖上的變分自編碼器,是一種無監督學習框架。
看到這可能不知道大家都沒有疑問,至少我會有以下幾點疑問:
- 自編碼器是利用編碼與解碼對數據進行壓縮,加上變分後的 VGAE 是什麼?
- 自編碼器是通過隱藏層節點數小於輸入層節點數實現數據壓縮,VGAE 如何實現?
- 自編碼器預測的目標是輸入,而 VGAE 要預測的是什麼?
1.Introduction
我們知道自編碼器的是通過減少隱藏層神經元個數來實現重構樣本,自編碼器爲了儘可能復現輸入數據,其隱藏層必須捕捉輸入數據的重要特徵,從而找到能夠代表原數據的主要成分。
變分圖自編碼器也具有類似的目的,其主要是爲圖中節點找尋合適的 Embedding 向量,並通過 Embedding 向量實現圖重構。其中獲取到的節點 Embedding 可以用於支撐下游任務。
2.VGAE
2.1 VAE
在介紹 VGAE 之前,我們先介紹下 VAE(Variational Auto-Encoders)。VAE 瞭解清楚後,VGAE 也算完成了 80%。
VAE 最早來源於 2014 年 Kingma 的一篇論文《Auto-Encoding Variational Bayes》。該論文目前引用數超 8300 次,作者 Kingma 和 Kipf 都來自於阿姆斯特丹大學。
VAE 是變分貝葉斯(Variational Bayesian)和神經網絡的結合。
簡單介紹下變分貝葉斯方法:我們知道統計模型由觀察變量 x、未知參數 和隱變量 z 組成,生成模型是通過隱變量來估計觀察變量:。但很多情況下,這個後驗概率並容易得到(因變量和參數都不知道),所以我們就需要通過其他的方式來近似估計這個後驗概率。貝葉斯統計學傳統的推斷方法是採用馬氏鏈蒙特卡洛(MCMC)採樣方法,通過抽取大量樣本給出後驗分佈的數值近似,但這種方法的計算代價昂貴。而變分貝葉斯是把原本的統計推斷問題轉換成優化問題(兩個分佈的距離),並利用一種分析方法來近似隱變量的後驗分佈,從而達到原本統計推斷的問題。
而 VAE 則是利用神經網絡學習來學習變分推導的參數,從而得到後驗推理的似然估計。下圖實線代表貝葉斯推斷統計的生成模型 ,虛線代表變分近似 。
這篇論文裏最重要的就是公式,爲了簡單起見,不進行公示推導。直接說結論:作者提出了 AEVB(Auto-Encoding Variational Bayesian)算法來讓 近似 ,同時把最大似然函數的下界作爲目標函數,從而避開了後驗概率的計算,並且將問題轉換爲最優化問題,同時可以利用隨機梯度下降來進行參數優化。
VAE 模型中,我們假設 這個後驗分佈服從正態分佈,並且對於不同樣本來說都是獨立的,即樣本的後驗分佈是獨立同分布的。可能大家會有個疑問:
- 爲什麼是服從正態分佈?
- 爲什麼要強調是各樣本分佈是獨立的?
對於第一個問題,這裏只是做一個假設,只要是一個神經網絡可以學到的分佈即可,只是服從正態分佈就是 VAE 算法,如果服從其他的分佈就是其他的算法;
對於第二個問題,如果我們學到的各變量的分佈都是一致的,如:
這樣的結構無法保證通過學到的分佈進行採樣得到的隱變量 能夠與真實樣本 一一對應,所以就無法保證學習效果了。
所以 VAE 的每個樣本都有自己的專屬正態分佈:
這樣,我們便能通過每個樣本的專屬分佈來還原出真實樣本。
這也是論文中最重要的一點:
VAE 通過構建兩個神經網絡來分別學習均值和方差 ,這樣我們便能得到樣本 的專屬均值和方差了,然後從專屬分佈中採樣出 ,然後通過生成器得到 ,並通過最小化重構誤差來進行約束 。
但隱變量是通過採樣得到的,而不是經過編碼器算出來的。這樣的重構過程中免不了受到噪聲的影響,噪聲會增加重構的難度,不過好在這個噪聲的強度可以通過方差反應,方差可以通過一個神經網絡得到計算,所以最終模型爲了更好的重構會盡量讓模型的方差爲零,而方差爲零時,就不存在隨機性了,這樣模型最終會是一組均值,便退化成了普通的 AutoEncoder。
爲了防止噪聲爲零不再起作用,VAE 會讓所有的後驗分佈都向標準正態分佈看齊,衡量兩個分佈的距離,我們有 KL 散度:
其中,d 爲隱變量的維度。
變分自編碼中的變分是指變分法,用於對泛函 求極值。
我們將約束兩個分佈的 KL 散度加入到損失函數中,則有:
簡單來說,VAE 的本質就是利用兩個編碼器分別計算均值和方差,然後利用解碼器來重構真實樣本,模型結構大致如下:
2.2 VGAE
我們再來看一下變分圖自編碼,先來看下框架:
其中,X 爲節點的特徵矩陣,A 爲鄰接矩陣,先利用後驗概率得到隱變量 Z,再用隱變量重構鄰接矩陣 A。
VGAE 的編碼器是一個兩層的圖卷積網絡:
其中,後驗概率和 VAE 的解決方案一致:
其中, 是特徵向量的均值; 是節點向量的方差。
兩層卷積神經網絡定義爲:
其中, 和 共享第一層參數 ,不共享第二層參數 ; 是對稱標準化鄰接矩陣。
VGAE 的解碼器則是利用隱變量的內積來重構鄰接矩陣:
其中,.
損失函數也是包括兩部分:
其中, 表示
2.3 GAE
除了變分自編碼器外,作者也提出了非概率模型的圖自編碼器(Graph Auto Encoder),公式如下:
其中,。
此時的損失函數只包括重構損失。
3.Experiment
簡單看一下實驗部分,主要是邊預測問題,我們也可以看到 VGAE 是預測鄰接矩陣的。
打星號的是不使用節點的特徵。
4.Conclusion
總結:VGAE 利用神經網絡學習後驗分佈從而實現編碼過程,同時利用重構誤差和 KL 散度進行參數優化,從而得到節點的隱變量作爲節點的 Embeding。
5.Reference
- 《Variational Graph Auto-Encoders》
- 《Auto-Encoding Variational Bayes》
- 《變分自編碼器(一):原來是這麼一回事》
關注公衆號跟蹤最新內容:阿澤的學習筆記。