VAE的哲學,GAN的哲學

深度生成模型

深度生成模型希望通過學習真實數據的分佈,來產生和真實數據分佈一致的樣本。本文對兩種生成模型——VAE和GAN做定性的介紹。

對於生成模型,我們不僅希望產生的樣本分佈和真實數據分佈儘量重合,還希望對生成的樣本屬性能有所控制,比如如果生成模型能從一個具有語義的潛空間映射到數據空間,那麼我們就可以通過操控潛空間變量來生成具有特定屬性的樣本。

VAE

VAE的目標是學得從輸入數據到一個服從標準正態分佈的潛空間向量的映射,同時學得從這個潛空間向量到輸入空間的映射。這樣從正態分佈的潛空間採樣,就能生成輸入空間的樣本。在VAE中,重參數化的採樣過程,在均值的方差附近產生潛空間向量,再解碼生成樣本,重構損失將使這些均值附近的值都能解碼成接近的樣本。KL loss則使潛空間分佈接近標準正態分佈,這樣一方面有一定的方差,從而保證上述採樣的有效,另一方面使各個輸入樣本在潛空間的均值都接近0,這樣不同輸入映射到潛空間不會相距太遠。總的結果就是潛空間向量彼此接近,又仍然獨特,允許平滑差值,和在潛空間採樣生成到輸入空間。

由於VAE能學到性質比較好的潛空間,所以它可以在潛空間向量上進行算術運算來操縱生成樣本的屬性,類似於NLP中詞向量的概念。

GAN

和VAE不同的是,GAN試圖直接學習從潛空間到數據空間的映射。GAN假設有一個從正態分佈或者均勻分佈的潛空間到數據空間的映射,潛空間向量直接由分佈中採樣得到,那麼關鍵就是根據輸入的樣本數據,學習到這個映射。GAN達到這個目的的方式是對抗學習,因此,大多數人對GAN的關注也都集中在“對抗”。不過我還是想提醒,對抗這一方式確實獨特的定義了GAN,但同時也不要忘記GAN作爲一個生成模型所要達到的目的(參看本文最後一節)。

在對抗訓練中,D從訓練集的真實圖像學到了真實數據應該包含的細節的信息(或者說細節的分佈),這迫使G也學會了這些分佈,而不管輸入的是什麼,這裏的輸入指輸入到G的正態分佈或均勻分佈的採樣,實際上就是正態或均勻分佈的隨機向量。因爲G沒有與輸入圖像(這裏指訓練集中的真實圖像)特徵一致的約束,它只要生成真實的分佈就行了,所以可以生成這些銳利的細節以滿足D。

在訓練中D首先學到一張圖整體有關聯的分佈,然後當G從潛空間的隨機向量產生一些數據分佈時,梯度下降使其要向D學到的分佈上靠,這樣逐漸產生了真實圖像,在結果上學到了從潛空間分佈產生真實圖像的分佈。整個訓練這個動態的過程使GAN達到從一個潛空間採樣生成圖像的結果,而不是生成固定的一張圖或者無邏輯的細節。當然如果訓練不好則會產生模式塌縮,但無論哪種情況,都只是梯度下降,數值計算的結果。本質上,G網絡通過訓練記住了真實數據的信息(分佈),很多GAN的研究都試圖證明自己的網絡並不是簡單的記住了訓練數據,然而這些一而再再而三的嘗試證明恰恰在做着“此地無銀三百兩”的宣告。。。

經過對抗訓練,GAN也可以做到潛空間平滑插值,依賴的是生成網絡通過訓練學到的能力。從這點看,VAE的方法並不是必需的。

那些不是GAN的GAN

有些叫着“GAN”名字的GAN其實本質上不能算是生成模型,比如我在另一篇文章《人臉轉換GAN》中介紹的StarGAN和AttGAN。它倆都頂着GAN的名字,因爲都是用了對抗訓練的手段,但它們的網絡輸入的是圖像數據,輸出的也是圖像數據,中間並沒有任何潛空間向量,所以它們只能做圖像translation,不能隨機的生成樣本。AttGAN論文的Figure 2裏還專門畫上了潛空間向量Z,不過實際上它只是試圖表示一個潛空間向量的概念,那個Z實際上是一個卷積層的輸出,是一個W × H × C的3d 向量。對於卷積網絡,在一個平面(也就是一個channel)上的分佈是空間相關的,這個分佈根本就不知道,也就無法採樣,這也是爲什麼VAE要把卷積層的3d向量flatten再dense成Z。

實際上StarGAN和AttGAN即使不用對抗訓練,只要選取比較好的重構損失,比如使用Perceptual loss,應該也能得到比較好的結果。在StarGAN和AttGAN的研究中,重構損失的權重都比對抗損失大一個數量級以上,對抗損失有幫助,但實際上並非最主要的因素。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章