Auto encoder簡介, Variational Autoencoder, 以及Variational Graph Autoencoder詳細介紹


1. 傳統的Auto-Encoders

 

 

 傳統的自動編碼機是一個神經網絡,它包含一個編碼層和一個解碼層。編碼層將一個點X作為輸入,將他轉換成一個低維的特征 embedding Z。 解碼是將低維的特征表示Z返回成一個重新構建的原始輸入 X-hat,盡量使X-hat跟X相似。

下面是手寫數字識別的例子:

 

損失函數:

 

為什么我們要將輸入轉化成一個低維的特征?

以圖象為例子,將圖像存在低維空間可以節省很多存儲空間。對於計算也可以節省計算消耗。

通過加入噪音,增加樣本。

 

 。 

 

2. Variational Autoencoders

為什么我們需要Variational Autoencoders?

Variational Avtoencoder的最大好處是特能夠通過原始數據產生新的數據。而傳統的Auto encoder只能夠通過原始數據產生相似的數據。

 

 主要思想:

它先學習所有的樣本的分布,然后根據這個分布隨機產生新的樣本。

 

Encoder 以一個點X作為輸入,產生均值  和 。 用 是因為它有正有負。 在得到均值和方差后,我們試着讓均值為0方差為1, 因此最終的分布將會接近 N(0,1). 

 

 

最后我們產生新的embedding Z 從均值和標准差上, , ,根據潛在變量Z, 我們可以通過譯碼產生新的X-hat。

損失函數:

這個損失函數分為兩部分。 

第一部分表示產生的新的數據與輸入的數據的差別,差別越大,損失函數越大。 

 第二部分表示調節。他表示近似與真實后驗的KL散度,也就是輸出分布 (qφ(z|x))與真實后驗 p(z)的差別。

 

 

3. Variational Graph Autoencoders

 

 

 結構框架

 

 輸入是一個鄰接矩陣和一個特征矩陣,產生潛變量Z, 最后輸出是一個新的鄰接矩陣。

第一個gcn層產生一個新的低維得特征矩陣。

 

第二層GCN產生

 

 

將兩層合並,得到均值和標准差,

 

然后我們產生Z,

 

 解碼是通過潛在變量Z的內積,輸出是一個新的鄰接矩陣,

, sigmoid函數。

 

總之,編碼是:

 

解碼是:

 

損失函數:

 

使用內積解碼是因為鄰接矩陣每一行代表一個個體,內積可以計算兩個向量的cosine相似性, 對於衡量兩個向量的距離很有效。

 


免責聲明!

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



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