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相似性, 對於衡量兩個向量的距離很有效。