GAN一直面臨以下問題和挑戰
訓練困難,需要精心設計模型結構,並小心協調 和 的訓練程度
和 的損失函數無法指示訓練過程,缺乏一個有意義的指標和生成圖片的質量相關聯
模式崩壞(mode collapse),生成的圖片雖然看起來像是真的,但是缺乏多樣性
原理相對於傳統的GAN,WGAN只做了以下三點簡單的改動
的損失函數原本為
其導致的結果是,如果 訓練得太好, 將學習不到有效的梯度
但是,如果 訓練得不夠好, 也學習不到有效的梯度
就像警察如果太厲害,便直接把小偷幹掉了;但警察如果不厲害,就無法迫使小偷變得更厲害
因此以上損失函數導致GAN訓練特別不穩定,需要小心協調 和 的訓練程度
GAN的作者提出了G損失函數的另一個版本,即所謂的 trick
需要最小化以上損失函數,等價於最小化以下損失函數
其中前者為KL散度(Kullback–Leibler Divergence)
後者為JS散度(Jensen-Shannon Divergence)
兩者都可以用于衡量兩個分布之間的距離,越小說明兩個分布越相似
因此以上損失函數,一方面要減小KL散度,另一方面卻要增大JS散度,一邊拉近一邊推遠,從而導致訓練不穩定
除此之外,KL散度的不對稱性,導致對以下兩種情況的不同懲罰
從而導致, 傾向於生成一些有把握但相似的圖片,而不敢輕易地嘗試去生成沒把握的新圖片,即所謂的mode collapse問題
WGAN所做的三點改動,解決了GAN訓練困難和不穩定、mode collapse等問題,而且 的損失函數越小,對應生成的圖片質量就越高
WGAN訓練過程如下,gradient penalty使得 滿足1-Lipschitz連續條件,詳細原理和細節可以閱讀相關論文進一步了解
論文中部分實驗結果如下,WGAN雖然需要更長的訓練時間,但收斂更加穩定
更重要的是,WGAN提供了一種更穩定的GAN框架。DCGAN中的 去掉Batch Normalization就會崩掉,但WGAN則沒有這種限制
如果用Deep Convolutional結構實現WGAN,那麼其結果和DCGAN差不多。但是在WGAN的框架下,可以用更深更複雜的網絡實現 和 ,例如ResNet(arxiv.org/abs/1512.0338),從而達到更好的生成效果
數據還是之前使用過的兩個人臉數據集