關於WGAN-GP的理解

關於原始GAN的理解網上的野生博客漫天飛,從GAN到WGAN都還好,非常能起到導學的作用,但是到了WGAN-GP這篇paper了沒有幾個能掰扯清楚的了,繞了一大圈還是要自己慢慢啃,在谷歌上搜了一下WGAN-GP,也在quora上提問了一下,如果你看到因為WGAN-GP看到這篇筆記,恭喜你哦,運氣不錯,帶上你的智商和注意力,我對自己的表達能力有自信(前提是你懂了WGAN及之前的相關paper)!

reference:

https://medium.com/@jonathan_hui/gan-wasserstein-gan-wgan-gp-6a1a2aa1b490?

medium.com


WGAN-GP純粹是為了滿足WGAN中的李普西斯條件,WGAN自己的滿足方式是gradient clipping,但是這樣的話WGAN的大部分weight會是正負0.01,需要新的滿足李普西斯條件的方法,這就是motivation;


Earth-Mover (EM) distance/ Wasserstein Metric

用一個小的實驗來解釋一下什麼是推土機距離?我們有6個盒子並且我們想將他們從左邊的位置移動到右邊虛線表示的位置;對於1號box,我們從左邊1號盒子所在的位置移動到右邊1號盒子所在的位置,移動的距離為6,只看橫坐標的差值;

下面的表格呈現了兩種不同的移動方案r1和r2,右邊的表格解釋了盒子是怎麼移動的,比如:第一種方案中我們把2號和3號盒子這兩個盒子從位置1移動到位置10,那麼在右邊的表格中(1,10)的位置填上2(這個數表示從1處移到10處盒子的個數為2);其他位置的數同理

雖然這兩個方案的總移動距離相同但是並不是所有的移動方案的距離都是相同的;Wasserstein distance是所有方案中距離最小一個;用下面這個小例子來表示:

有兩種移動方案:

1?? 1號盒子從位置3移動到位置4,2號盒子從7移動到6;

2?? 2號盒子從位置3移動到位置6,1號盒子從位置4移動到位置7

對兩個分布Pr和Pg的Wasserstein距離的公式:

不要被上面的公式嚇到了;左邊的W(Pr,Pg)表示的Pr,Pg的Wasserstein距離;

∏(Pr, Pg)表示的意思是所有的r(x, y)這種距離的聯合分布的集合,他們的邊緣分布相應是Pr, Pg

我們將變數x,y結合起來形成聯合分布r(x,y)

至此,搞清楚了什麼是Wasserstein距離!!!


Wasserstein GAN

由於wasserstein distance非常的複雜,要先算出來所有的推土方式的距離,再找出來最小值;

Using the Kantorovich-Rubinstein duality, we can simplify the calculation to

真是操蛋,又有一個什麼Kantorovich-Rubinstein duality,這一部分重點說一下這個,智力富餘者繼續,reference:

Wasserstein GAN and the Kantorovich-Rubinstein Duality?

vincentherrmann.github.io圖標

Kantorovich-Rubinstein duality這個東西在原論文中一筆帶過,直接鄙視了一批人,設置了很高的理解門檻,這個東西不是新東西了,這裡用的好,這篇paper引用了書《Optimal Transport - Old and New》,菲爾茲獎獲得者Cedric Villani寫的,這裡是鏈接地址:

https://www.cedricvillani.org/wp-content/uploads/2012/08/preprint-1.pdf?

www.cedricvillani.org

這書是給數學系的phd的,998頁,如果你想讀,不攔你,have fun and good luck!!!

這是Cedric Villani在華為的演講,enjoy please:

https://www.youtube.com/watch?v=zo46TEp6FB8?

www.youtube.com

這是演講的畫風,please enjoy~!

這條路去理解,我放棄了,下面從一個比較intuitional的角度來理解:

如果用JS divergence來度量Pg1,Pg2到Pg3的距離的話,對於判別器的損失都是都是-log2

所以要用推土機距離,上面已經解釋了什麼是推土機距離;這個距離可以衡量兩個毫無交集的分布的距離對於Pg1,Pg2到Pg3的推土機距離是不同的

我們看看演算法里具體是如何implement的

然後這實際是在幹嘛呢?

實際上是求D(x)的均值和D(G(z))的均值之差;也就是讓D(x)的均值和D(G(z))的數字特徵盡量靠近,但是需要保證的是D(x)要大於D(G(z)),我們可以保證的是x>G(z),因為初始化權重和給定的雜訊都可以是很小的值,但是怎麼保證x一直大於G(z)呢?來G(z)要慢慢的不斷靠近x,在靠近的過程中x,D(G(z))不能超過D(x)--->這句話非常重要,你在其他地方保證看不到;因為我們是要最小化上面黃色截圖的公式,如果變成了負數,那不斷的變小實際是讓兩個分布的距離增大了,所以G(z)靠近x的過程中,D(G(z))不能邁過D(x);也就是傳說中的李普西斯條件條件;雖然我這麼說很low,沒有高大上的公式,但是夠不夠intuitive,佩服自己一把,用小學數學解釋了抽像代數;好,現在就知道為什麼要用weights clipping[-0.01, 0.01]了吧,非常直觀,控制D(G(z))的大小,D 的梯度如果太奇葩會怎樣?會讓G(z)還沒有追上x,就讓D(G(z))超過了D(x),還有這事兒?如下圖,有點兒丑,但是還是能說明問題


接下來說說主角WGAN-GP

那就是理解這貨,前面的一項很好說,就是上面講的,本質上是用隨機變數的數字特徵(均值)的距離來表徵和兩個分布的距離,這是題眼,很重要;後面做的事兒是什麼呢?也intuitive的講一下,我們要保證G(z)靠近x,且靠近的過程D(G(z))不超過D(x),對D的權重加懲罰,什麼意思

這一坨就是D的權重,待會兒解釋為什麼,先說什麼是加懲罰,

這一項是一個非負數,我們是要最小化L,如果這個非負數太大的話L就太大,所以在最小化L的時候這個非負數是不會太大的也就是

這貨會在1的附近;這就是加懲罰,那就穩定住了梯度,也就是保證了G(z)靠近x,且靠近的過程D(G(z))不超過D(x)

表示的是Dw(x^)對x^求導;而x^的係數就是權重w啊

不懂的點:為什麼這麼處理一下:

2018-11-17 更新:在這裡已經解決了:不懂的點:為什麼這麼處理一下:

胡今朝:關於WGAN-GP中的遺留問題??

zhuanlan.zhihu.com圖標

另外這個演算法的trick是用Adam優化器


推薦閱讀:

TAG:生成對抗網路(GAN) |