GAN的前身——VAE模型原理

GAN的前身——VAE模型

今天跟你們說一說VAE模型相關的原理,首先咱們從判別模型和生成模型定義開始提及:網絡

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

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

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

在圖像中,一般是輸入圖像具有的性質,輸出是性質對應的圖像。spa

生成式模型一般用於解決以下問題:3d

1.構建高維、複雜機率分佈,2.數據缺失,3.多模態輸出,4.真實輸出模型,5.將來數據預測,等系列問題code

VAEblog

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

那麼,問題就來了,潛在向量除了從已有圖像中編碼獲得,可否憑空創造出這些潛在的向量來呢? 咱們能夠這樣作,在編碼網絡中,增長一個約束,使得編碼網絡所生成的潛在向量大致上服從單位高斯分佈。那麼,解碼器通過訓練以後,能是可以解碼服從單位高斯分佈的解碼器了,因而咱們只須要從單位高斯分佈中菜樣出一個潛在向量,並將其傳到解碼器中便可。原理

 

在VAE中,假定認爲輸入數據的數據集D(顯示變量)的分佈徹底有一組隱變量z操控,而這組隱變量之間相互獨立並且服從高斯分佈,那麼VAE讓encoder去學習輸入數據的隱變量模型,也就是去學習這組隱變量的高斯機率分佈的參數均值和方差,而隱變量z就能夠從這組分佈參數的正態分佈中採樣獲得z~N,再經過decoder對z隱變量進行解碼來重構輸入,本質上是實現了連續的,平滑的潛在空間表示。

對於目標函數,偏差項精度與潛在變量在單位高斯分佈上的契合程度,包括兩部分的內容:一、生成偏差,用以衡量網絡在重構圖像精度的均方偏差,二、潛在偏差,用以衡量潛在變量在單位高斯分佈上契合程度的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遵循 編碼-解碼 的模式,能直接把生成的圖像同原始圖像進行對比,不足的是因爲它是直接均方偏差,其神經網絡傾向於生成模糊的圖像。

相關文章
相關標籤/搜索