破解VAE的迷思

VAE生成的圖像比較模糊,箇中原因一直缺乏讓人信服的解釋。經常有人聚焦在KL損失上,而筆者認爲本質上這是一個工程問題。至於爲什麼GAN生成的圖像不模糊,請參考VAE的哲學,GAN的哲學

我們首先觀察一下VAE的任務。要學的圖像是高維空間中一些離散的點,VAE試圖把它們壓縮到一個低維連續空間(也就是潛空間),再復原回原空間。這麼做是基於這樣的假設——那就是要學習的實際上是嵌入高維空間的低維流形,然而真實圖形中的細節顯然不全是某種低維流形,有些圖像細節,比如處於空間中的頭髮,膚質,真實紋理質感,即使是某種流形,也很難用低數據量描述,或很難學得用低數據量描述。考慮到其他深度網絡都是使用一個過容量(表示容量)的網絡來學習一個簡單平滑的函數,VAE使用一個瓶頸式的潛空間向量去實現前述任務就顯得不太現實了。

因此,VAE無法還原圖像的細節,看上去缺乏真實感,同時,在不能還原的前提下,爲了降低損失,只有輸出平均值,對於人臉來說,就是生成一張大衆臉。如果潛空間向量使用比較低的維數,原圖中的人臉即使被遮擋了,還原圖像也會生成被遮擋的部分,因爲大多數訓練樣本是一張完整的臉。如果像AI生成模型之人臉變換(一) VAE一樣使用比較大的潛空間向量維數,還原質量會好一些,也不會出現人臉自動去遮擋的效果,但是採樣質量較差。因爲潛空間變大了,高維空間的離散點映射過來,不再容易保證連續性。

CVAE-GAN假裝解決了這一難題,它可以在一個細粒度分類中生成高質量的圖像。比如在訓練後,可以生成某一個人的人臉,但實際上它是通過讓網絡學習某個人的很多張照片來記住這個人的模樣。它不是通過潛變量來傳遞這個人的相貌信息,而是通過一個單獨的flag告訴後面的生成網絡,請生成這個人的臉。。。

目前,真正解決前述工程難題最好的是IntroVAE 。它的關鍵之處是使用GAN中的對抗思想,來充分壓榨出網絡的能力!(建議讀者先行閱讀IntroVAE論文,因爲本文不會對IntroVAE做任何具體介紹,只有評論。。。。)IntroVAE把Encoder當作GAN中的Discriminator,因爲E的結構和D相同,本質上,D就是E網絡最後dense一下,出一個結果。通過Encoder(相當於GAN中的Discriminator)和Decoder(相當於GAN中的Generator)的對抗,使得Encoder和Decoder都具有非常強的能力。另外,傳統的VAE只有重構損失來約束生成質量,IntroVAE把E當作D,這樣隨機採樣生成的圖片也有了損失,這就和GAN效果似的了,不僅G的能力大增,隨機採樣的效果也特別好,潛空間的編碼質量也提高了。

我剛讀到論文一半的時候,不由得懷疑IntroVAE的訓練過程是否在數學上能夠證明,結果論文果真就給出了證明:IntroVAE達到納什均衡時,生成圖像分佈等於真實圖像分佈(其實我沒細看證明過程:))。

儘管如此,如果仔細觀察論文中的樣圖,仍舊可以發現還原的人臉還是有點不像啊~~~~

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