VAE變分自動編碼器

2022-06-28 07:15:07 字數 679 閱讀 2108

它本質上就是在我們常規的自編碼器的基礎上,對encoder的結果(在vae中對應著計算均值的網路)加上了「高斯雜訊」,使得結果decoder能夠對雜訊有魯棒性;而那個額外的kl loss(目的是讓均值為0,方差為1),事實上就是相當於對encoder的乙個正則項,希望encoder出來的東西均有零均值。

那另外乙個encoder(對應著計算方差的網路)的作用呢?它是用來動態調節雜訊的強度的。直覺上來想,當decoder還沒有訓練好時(重構誤差遠大於kl loss),就會適當降低雜訊(kl loss增加),使得擬合起來容易一些(重構誤差開始下降);反之,如果decoder訓練得還不錯時(重構誤差小於kl loss),這時候雜訊就會增加(kl loss減少),使得擬合更加困難了(重構誤差又開始增加),這時候decoder就要想辦法提高它的生成能力了。

重構的過程是希望沒雜訊的,而kl loss則希望有高斯雜訊的,兩者是對立的。所以,vae跟gan一樣,內部其實是包含了乙個對抗的過程,只不過它們兩者是混合起來,共同進化的。從這個角度看,vae的思想似乎還高明一些,因為在gan中,造假者在進化時,鑑別者是安然不動的,反之亦然。當然,這只是乙個側面,不能說明vae就比gan好。gan真正高明的地方是:它連度量都直接訓練出來了,而且這個度量往往比我們人工想的要好(然而gan本身也有各種問題,這就不展開了)。

變分自編碼器VAE

auto encoding variational bayes git antixk pytorch vae a collection of variational autoencoders vae in pytorch.1 原文作者在深度學習上的實戰理論指導 2 具體原理框圖如下 vae主要由編碼...

自動編碼器

自動編碼器基本概念 自動編碼器 autoencoder 是神經網路的一種,一般來講自動編碼器包括兩部分 編碼器和解碼器,編碼器和解碼器相互串聯合作,實現資料的降維或特徵學習,現在也廣泛用於生成模型中.在深度學習中,autoencoder可用於在訓練階段開始前,確定權重矩陣的初始值.左側為encode...

CVAE(條件變分自動編碼器)簡單理解

之前的文章介紹了ae和vae,指出了它們的優缺點。ae適合資料壓縮與還原,不適合生成未見過的資料。vae適合生成未見過的資料,但不能控制生成內容。本文所介紹的cvae conditional vae 可以在生成資料時通過指定其標籤來生成想生成的資料。cvae的結構圖如下所示 整體結構和vae差不多,...