GAN的前身——VAE模型原理


GAN的前身——VAE模型

今天跟大家說一說VAE模型相關的原理,首先我們從判別模型和生成模型定義開始說起:

判別式模型:已知觀察變量X和隱含變量z,它對p(z|X)進行建模,它根據輸入的觀察變量X得到隱含變量z出現的可能性。

在圖像模型中,比如根據原始圖像推測圖像具備的一些性質,例如根據數字圖像推測數字的名稱等等圖像分類問題。

生成式模型:與判別式模型相反,它對p(X|z)進行建模,輸入變量是隱含變量,輸出是觀察變量的概率。

在圖像中,通常是輸入圖像具備的性質,輸出是性質對應的圖像。

生成式模型通常用於解決如下問題:

1.構建高維、復雜概率分布,2.數據缺失,3.多模態輸出,4.真實輸出模型,5.未來數據預測,等系列問題

VAE

在經典的自編碼機中,編碼網絡把原始圖像編碼卷積成向量,解碼網絡則能夠將向量解碼成原始圖像,通過使用盡可能多的圖像來訓練網絡,如果保存了某張圖像的編碼向量,那么就能夠隨時用解碼組建來重建該圖像。

那么,問題就來了,潛在向量除了從已有圖像中編碼得到,能否憑空創造出這些潛在的向量來呢? 我們可以這樣做,在編碼網絡中,增加一個約束,使得編碼網絡所生成的潛在向量大體上服從單位高斯分布。那么,解碼器經過訓練之后,能是能夠解碼服從單位高斯分布的解碼器了,於是我們只需要從單位高斯分布中菜樣出一個潛在向量,並將其傳到解碼器中即可。

 

在VAE中,假定認為輸入數據的數據集D(顯示變量)的分布完全有一組隱變量z操控,而這組隱變量之間相互獨立而且服從高斯分布,那么VAE讓encoder去學習輸入數據的隱變量模型,也就是去學習這組隱變量的高斯概率分布的參數均值和方差,而隱變量z就可以從這組分布參數的正態分布中采樣得到z~N,再通過decoder對z隱變量進行解碼來重構輸入,本質上是實現了連續的,平滑的潛在空間表示。

對於目標函數,誤差項精度與潛在變量在單位高斯分布上的契合程度,包括兩部分的內容:1、生成誤差,用以衡量網絡在重構圖像精度的均方誤差,2、潛在誤差,用以衡量潛在變量在單位高斯分布上契合程度的KL散度,總的目標函數如下:

假設現在有一個樣本集中兩個概率分布p,q,其中p為真實分布,q為非真實分布,那么,按照真實分布p來衡量識別一個樣本所需的編碼長度的期望為:

如果采用錯誤的分布q來表示來自真實分布p的平均編碼長度,則應該是:

此時,就將H(p,q)稱之為交叉熵。

對於KL散度,又稱為相對熵,就是兩個概率分布P和Q差別的非對稱性度量。典型情況下,P表示數據的真實分布,Q表示數據的理論分布,那么D(P||Q)的計算如下:

KL散度不是對稱的,並不滿足距離的性質,即D(P||Q) != D(Q||P)。為了解決對稱問題,我們引入JS散度。

JS散度度量了兩個概率分布的相似度,基於KL散度的變體,解決了KL散度的非對稱的問題,一般的,JS散度是對稱的,其取值是0到1之間,計算如下:

明白了度量之后,在VAE模型中並沒有真正的用z~N來采樣得到z變量,因為采樣之后,無法進行求導。其做法是先采樣一個標准高斯分布(正態分布),然后通過變換得到z~N分布,這樣就能夠對參數進行正常的求導計算了:

 

 

 VAE遵循 編碼-解碼 的模式,能直接把生成的圖像同原始圖像進行對比,不足的是由於它是直接均方誤差,其神經網絡傾向於生成模糊的圖像。

 


免責聲明!

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



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