---
# System prepended metadata

title: VAE vs. GAN
tags: [學習筆記, deep learning]

---

# VAE vs. GAN

> Organization contact [name= [ierosodin](ierosodin@gmail.com)]
###### tags: `deep learning` `學習筆記`

==[Back to Catalog](https://hackmd.io/@ierosodin/Deep_Learning)==

 * GAN
     * 我們生成圖片使用的隨機高斯噪聲，這意味著我們並不能生成任意我們指定類型的圖片，也就是說我們沒辦法決定使用哪種隨機噪聲能夠產生我們想要的圖片，除非我們能夠把初始分佈全部試一遍。
     * GAN 則沒有假設單個 loss 函數, 而是讓判別器 $D$ 和生成器 $G$ 之間進行一種零和博弈, 一方面, 生成器 $G$ 要以生成假樣本為目的 ( loss 評估), 欺騙判別器 $D$ 誤認為是真實樣本:
         * $L_G = E[logD(G(z))]$
     * 另一方面, 判別器 $D$ 要以區分真實樣本 $x$ 和假樣本 $G(z)$ 為最終目的 ( loss 評估):
         * $L_D = E[logD(x)] + E[log(1 - D(G(z)))]$
     * 一般, 判別器 $D$ 在 GAN 訓練中是比生成器 $G$ 更強的網絡, 畢竟, 網絡 $G$ 要從 $D$ 的判別過程中學到 “以假亂真” 的方法。 所以, 很大程度上, $G$ 是跟著 $D$ 學習的。
     * 生成網絡通過對抗過程來區分 “真” 的圖片和 “假” 的圖片，然而這樣得到的圖片只是盡可能像真的，但是這並不能保證圖片的內容是我們想要的，換句話說，有可能生成網絡盡可能的去生成一些背景圖案使得其盡可能真，但是裡面沒有實際的物體。
     * VAE 易於訓練，但生成的結果往往是模糊的；GAN 可以生成清晰的圖像，但在解析度上只能有小範圍的變化，而且質量一直不穩定。
     * 生成圖片多樣性太差 (只是對真實樣本的簡單改動)。
 * VAE
     * VAEs are Latent Variable models.
     * VAE 易於訓練
     * 使用自動編碼器我們能夠通過輸出圖片的編碼過程得到這種類型圖片的編碼之後的分佈，相當於我們是知道每種圖片對應的噪聲分佈，我們就能夠通過選擇特定的噪聲來生成我們想要生成的圖片。
     * VAE 訓練完全依靠一個假設的 loss 函數和 KL-divergence 逼近真實分佈
         * $L = -KL(q(Z|X; \theta^{'})||p(Z; \theta)) + E_{Z\sim q(Z|X; \theta^{'})} logp(X|Z; \theta)$
 * ![](https://i.imgur.com/UDYdQW2.png)
 * infoGAN
     * 對於生成同類別的樣本，infoGAN另闢蹊徑，通過最大化互信息（c，c’）來生成同類別的樣本，其中c是隱信息:
     * ![](https://i.imgur.com/bnLsyRm.png)
