1. 程式人生 > >GAN的統一架構與WGAN

GAN的統一架構與WGAN

這裡寫圖片描述

GAN是讓機器自動生成PG去接近Pdata。演算法的關鍵是衡量分佈PG,Pdata的差異,不同的衡量辦法得到的V(G,D)不同,但是所有的衡量方法都可以歸納到一個統一的框架中:利用f-divergence衡量兩個分佈差異,利用Fenchel Conjugate將兩個分佈差異的問題轉化到GAN的大框架中。
而近段異常流行的WGAN,便是將兩個分佈的差異用Earch Mover Distance衡量,然後用weight clippinggradient penalty優化梯度計算,取得了非常好的效果。

原始GAN

原始GAN的演演算法如下,通過discriminator的loss與js divergence相關聯。

這裡寫圖片描述

統一架構

f divergence

衡量兩個分佈的差距有多種方法,這些方法基本上都屬於同一個架構f divergence。如下,Df(P||Q)通過包含f函式的積分評估了兩個分佈的差異:

Df(P||Q)=xq(x)f(p(x)q(x))dx

f函式滿足的條件如下(滿足這樣的條件,Df(P||Q)的最小值當且僅當兩個分佈完全相同時為0):

  • f是凸hanshu
  • f(1)=0

不同的f函式會得到不同的divergence,但是都屬於f divergence這個大框架中,區別只是f函式的不同。

這裡寫圖片描述

fenchel conjugate

每一個凸函式f,都有與其conjugate的函式f

f的定義如下:

這裡寫圖片描述

舉例如下:

這裡寫圖片描述

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轉化為m

axDV(G,D)的問題,自然而然地與GAN關聯了起來。

其他

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 distanceearth 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的條件,增加過大梯度的懲罰項,具體如下:

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述