GAN的統一架構與WGAN
GAN是讓機器自動生成f-divergence
衡量兩個分佈差異,利用Fenchel Conjugate
將兩個分佈差異的問題轉化到GAN的大框架中。
而近段異常流行的WGAN,便是將兩個分佈的差異用Earch Mover Distance
衡量,然後用weight clipping
或gradient penalty
優化梯度計算,取得了非常好的效果。
原始GAN
原始GAN的演演算法如下,通過discriminator的loss與js divergence相關聯。
統一架構
f divergence
衡量兩個分佈的差距有多種方法,這些方法基本上都屬於同一個架構f divergence。如下,
f 是凸hanshuf(1)=0
不同的f函式會得到不同的divergence,但是都屬於f divergence這個大框架中,區別只是f函式的不同。
fenchel conjugate
每一個凸函式
舉例如下:
connect with gan
那麼一個問題隨之而來:f divergence以及fenchel conjugate與GAN到底有什麼聯絡呢?
首先,f divergence提供了一種度量兩個分佈差異的方式;然而,f divergence需要知道pdf,生成分佈的pdf不容易得到;這時候通過f的fenchel conjugate對原來的差異公式進行變換,引入額外的變數D(也就是discriminator),轉化成找到令值最大的D的問題,最終化成GAN類似的形式。具體化簡過程如下:
總的來說,f divergence以及fenchel conjugate的價值在於:構建了兩個分佈的f divergence,通過fenchel conjugate將divergence轉化為
其他
GAN的訓練在原始paper中是兩次迴圈,f-divergence的paper中是一次迴圈。
不同的f函式得到的分佈差異也不一樣,如下:
KLD與JSD相比,對多分佈的擬合效果較好:
WGAN
介紹
前面介紹了用f-divergence去度量兩個分佈的差異,WGAN與傳統GAN的區別就是度量分佈差異的方式不同。WGAN使用了earth mover's distance
,顧名思義,就是把一個分佈變成另外一個分佈需要花的力氣。earth mover's distance
的定義如下:
優勢
WGAN的優勢,主要在於earth mover's distance
。earth mover's distance
相比js divergence
的優點是:當兩個分佈沒有接觸的時候,不管距離遠近,js divergence
的度量都是相同的,而earth mover's distance
會考慮到兩個分佈的距離到底有多遠,這樣在訓練的時候便更容易訓練。
如果不使用WGAN,通常的做法是給分佈加噪聲,讓分佈有重疊,這樣才更容易去訓練。
因此,WGAN可以部分解決生成模型的評價問題,可以利用earth mover's distance
來監控模型的好壞(更多處於實際操作方面而非理論loss)。
weight clipping
使用earth mover's distance
後,WGAN度量分佈差異的公式如下:
Lipschitz Function
限制條件的作用是:一方面給D(x)加一些控制,不讓它任意變大變小,否則都變成無窮值就沒有意義了;另一方面限制D(x)的增長速度,提供足夠的梯度保證,如下圖:
那麼問題來了,如何保證D(x)滿足Lipschitz Function
限制條件呢?
原始的WGAN採用了weight clipping方法,其思路是限制引數的梯度值在一定範圍內,這樣便通過倒數限制了D(x)的增長速度。這種方法的缺點是c值不好確定。
完整的演算法如下:
gradient penalty
之前Lipschitz Function
限制條件通過weight clipping解決,這裡藉助Lipschitz Function
的梯度小於等於1的條件,增加過大梯度的懲罰項,具體如下: