Paper Reading Note
URL:
TL;DR
17年初提出的針對於原始GAN問題本質上的改進,現在已經成爲主流GAN的base-model。
作者花了兩篇文章的篇幅,從證明到改進論述了原始GAN的兩個重要問題:
- 【梯度消失】,即不需要再小心地平衡生成器和判別器之間的gap。
- 【模型崩塌】,原始模型優化KL散度導致的不對稱會讓生成器傾向於生成單一而安全的樣本而放棄多樣性。
Algorithm
作者在這裏給出了詳細的論述:
原始GAN的損失函數:
實際上這種損失函數經過變形等價爲:
實際上就是原始數據的分佈和生成數據的分佈的js散度。而由於在大部分情況下二者在高維空間裏幾乎不可能有不可忽略的重疊,導致js散度的梯度幾乎都等於常數。這也是原始的GAN在訓練過程中常常會出現梯度消失最本質的問題。
WGAN[1]分析了問題後提出了一種“增加隨機噪聲”的方法,讓二者的低維流形能夠彌散到高維空間中,從而產生不可忽略的重疊,然後在訓練的過程中逐漸退火(減小噪聲方差),直到兩個低維流形重疊部分可以控制就完全拿掉,這樣就可以從本質上解決梯度消失的問題。但是這種方法也帶來了新的問題:由於在訓練不同時期引入方差不同的隨機噪聲,JS散度的具體數值也會發生改變而變得無法比較,這樣使得模型無法準確的訓練。
而對於GAN作者後來提出的對損失函數的改進方法:
同樣也存在問題。改損失函數可以等價爲:
這個函數存在兩個很嚴重的問題:
- 既要最小化生成數據分佈和原始數據分佈直接的KL散度,同時要拉大二者的JS散度,這本身就存在矛盾。
- KL散度本身是一個不對稱項:
這就會導致在“生成器沒能產生真實樣本”的懲罰遠小於“生成器產生了不真實的樣本”的懲罰。從而使得模型偏向於生成一些風險較小的sample,這就會造成model collapse。
WGAN用到的是Wasserstein距離(Earth-Move距離):
該變化本質是放棄了對兩個分佈總體距離(KL散度、JS散度等)的計算,而變成的對分佈上的點採樣計算距離的方式,這種方法的好處就是能夠在兩個分佈不存在不可忽略的重疊時也能夠有梯度。
在WGAN中,它被轉換成了該種形式:
這種轉化有一個限制,即f需要滿足Lipschitz連續,即需要滿足
時上式等價。
作者首先提出的方法是在每一次w更新時限制其範圍,即超過[-c, c]時將其clip到-c/c。但是這種方法在實際訓練中參數會變得很極端:
這樣判別器會傾向於變成一個簡單的映射函數,使得模型欠擬合。於是在此基礎上,提出了一種gradient penalty的限制方法Improved Training of Wasserstein GANs,即將該限制變成樣本空間處於真實數據和生成數據之間的損失函數:
其中
使用後參數的分佈情況更加科學(右圖):
實驗證明這種方法能夠解決WGAN-clipping的收斂過慢的問題。
Thoughts
這篇文章是GAN發展過程中一篇比較有里程碑意義研究文章。現在大部分GAN的衍生模型都是將WGAN-gp作爲base-model。