Wasserstein距離
1.Wasserstein距離
Wasserstein距離度量兩個概率分佈之間的距離,定義如下:
是和分佈組合起來的所有可能的聯合分佈的集合。對於每一個可能的聯合分佈,可以從中採樣(x,y)∼得到一個樣本x和y,並計算出這對樣本的距離||x−y||,所以可以計算該聯合分佈下,樣本對距離的期望值E(x,y)∼[||x−y||]。 在所有可能的聯合分佈中能夠對這個期望值取到的下界 就是Wasserstein距離。
直觀上可以把E(x,y)∼[||x−y||]理解爲在這個路徑規劃下把土堆挪到土堆所需要的消耗。而Wasserstein距離就是在最優路徑規劃下的最小消耗。所以Wesserstein距離又叫Earth-Mover距離。
Wessertein距離相比KL散度和JS散度的優勢在於:即使兩個分佈的支撐集沒有重疊或者重疊非常少,仍然能反映兩個分佈的遠近。而JS散度在此情況下是常量,KL散度可能無意義。
2.最優傳輸距離:
最優傳輸距離,指的是把概率分佈q轉換爲p的最小傳輸質量(概率密度在離散情況下,叫做概率質量)。 最優傳輸距離也叫做地球移動距離,wasserstein距離,推土機距離。
【總結】
- wasserstein距離就是衡量把概率分佈q“搬到” p的最小代價。
- wasserstein距離的計算是平滑的,而JS散度是突變的,在兩個分佈沒有重疊的時候,即便兩個分佈在優化過程中是靠近的,但是這點在loss上體現不出來,而wassertein距離可以做到。
3.Wasserstein GAN
要知道自從2014年Ian Goodfellow提出以來,GAN就存在着訓練困難、生成器和判別器的loss無法指示訓練進程、生成樣本缺乏多樣性等問題。從那時起,很多論文都在嘗試解決,但是效果不盡人意,比如最有名的一個改進DCGAN依靠的是對判別器和生成器的架構進行實驗枚舉,最終找到一組比較好的網絡架構設置,但是實際上是治標不治本,沒有徹底解決問題。而今天的主角Wasserstein GAN(下面簡稱WGAN)成功地做到了以下爆炸性的幾點:
- 徹底解決GAN訓練不穩定的問題,不再需要小心平衡生成器和判別器的訓練程度
- 基本解決了collapse mode的問題,確保了生成樣本的多樣性
- 訓練過程中終於有一個像交叉熵、準確率這樣的數值來指示訓練的進程,這個數值越小代表GAN訓練得越好,生成器產生的圖像質量越高
- 以上一切好處不需要精心設計的網絡架構,最簡單的多層全連接網絡就可以做到
那以上好處來自哪裏?這就是令人拍案叫絕的部分了——實際上作者整整花了兩篇論文,在第一篇《Towards Principled Methods for Training Generative Adversarial Networks》裏面推了一堆公式定理,從理論上分析了原始GAN的問題所在,從而針對性地給出了改進要點;在這第二篇《Wasserstein GAN》裏面,又再從這個改進點出發推了一堆公式定理,最終給出了改進的算法實現流程,而改進後相比原始GAN的算法實現流程卻只改了四點:
- 判別器最後一層去掉sigmoid
- 生成器和判別器的loss不取log
- 每次更新判別器的參數之後把它們的絕對值截斷到不超過一個固定常數c
- 不要用基於動量的優化算法(包括momentum和Adam),推薦RMSProp,SGD也行
算法截圖如下: