**:auto-encoding variational bayes
git: antixk/pytorch-vae: a collection of variational autoencoders (vae) in pytorch.
1、原文作者在深度學習上的實戰理論指導
2、具體原理框圖如下:
vae主要由編碼和解碼兩部分構成,enconde 和 decode. 為了實現反向傳播,作者使用重引數技巧。
它本質上就是在我們常規的自編碼器的基礎上,對encoder的結果(在vae中對應著計算均值的網路)加上了「高斯雜訊」,使得結果decoder能夠對雜訊有魯棒性;而那個額外的klloss(目的是讓均值為0,方差為1),事實上就是相當於對encoder的乙個正則項,希望encoder出來的東西均有零均值。
那另外乙個encoder(對應著計算方差的網路)的作用呢?它是用來動態調節雜訊的強度的。
直覺上來想,當decoder還沒有訓練好時(重構誤差遠大於klloss),就會適當降低雜訊(klloss增加),使得擬合起來容易一些(重構誤差開始下降)。
反之,如果decoder訓練得還不錯時(重構誤差小於klloss),這時候雜訊就會增加(klloss減少),使得擬合更加困難了(重構誤差又開始增加),這時候decoder就要想辦法提高它的生成能力了。說白了,重構的過程是希望沒雜訊的,而klloss則希望有高斯雜訊的,兩者是對立的。
最近還出來了cvae與gan結合的工作cvae-gan:fine-grainedimagegenerationthroughasymmetrictraining
分自編碼器vae中的kl散度對影象生成質量是為了增加泛化能力,就是除了訓練用的樣本外,還能生成與樣本類似的圖形。限制latent空間的稀疏性。如果不加kl散度的約束,訓練樣本在latent空間的對映會傾向於稀疏,這樣訓練樣本在latent空間的對映相鄰點之間的位置就不保證會被解碼成類似影象。kl散度的約束與生成器恢復的影象的質量是相反的關係。約束越強,恢復出的影象越模糊。
參加文獻:
[1]變分自編碼器vae:原來是這麼一回事
[2] 變分自編碼器vae中的kl散度對影象生成質量有什麼具體幫助?
AI數學 變分自編碼器 VAE
auto encoding variational bayes 你要是能在一周內,把上面這篇文章的數學原理搞懂,那你就是骨骼清奇了。看 可以知道,vae 變分自編碼器 只是aevb 自編碼變分貝葉斯 的乙個應用而已。如果你只是想懂vae的話,還是比較簡單滴。對於aevb更深層的原理,在這裡不去討論,...
變分自編碼VAE實戰
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input data mnist input data.read data sets mnist data one hot true import matp...
VAE變分自編碼器的一點理解
introduction to variational autoencoders vae第二篇 vae variation inference變分推理 清爽介紹 結合 講解vae gan比較透徹的一篇文章 引介 semi supervised vae for text classification ...