W-GAN系 (Wasserstein GAN、 Improved WGAN)
習總結於國立臺灣大學 :李宏毅老師
Wasserstein GAN 、 Improved Training of Wasserstein GANs
本文outline
一句話介紹WGAN: Using Earth Mover’s Distance to evaluate two distribution Earth Mover‘s Distance(EMD) = Wasserstein Distance
一. WGAN
1. Earth Mover’s Distance(EMD)
EMD: P和Q為兩個分布:P分布為一堆土,Q分布為要移到的目標,那麽要移動P達到Q,哪種距離更小呢?
這裏有許多種可能的moving plans,利用最小平均距離的moving plans來定義EMD
那麽以下是最好的moving plans:
來用矩陣直觀解釋移土方案:
圖中每個像素點對應row需要移出多少土到對應column, 越亮表示移動越多。註意每一個row的值加起來為對應P行的分布, 每個column的值加起來為對應Q行的分布。所以可以有很多的moving plan來實現:
γ(xp,xq)表示從p移動多少土到q, || xp - xq ||表示pq之間的距離。上式就是給定一個plan時需要平均移動的距離。 那麽EMD定義就是
窮舉所有plan,EMD為最小的距離(最優的plan):
2. Why EMD
在更新過程中我們希望PG的分布和Pdata越來越相似:
但是Df(Pdata||PG): 因為從JS-divergence來看:無法從G0變到G100, 因為G50並沒有比G0變小
用W(Pdata, PG)則不同,G0對應的距離就是d0, G50對應的距離就是G50:所以利用Wasserstein距離時,model就會有動機使得分布趨於真實分布。
3. 回到GAN框架
我們知道所有的f-divergence都可以寫成以下形式:
1)
而Earth Mover’s Distance可以寫成以下形式:
2)
即找一個D使得大括號裏的值最大,而限制是D屬於1-Lipschitz。
Lipschitz Function: 輸出的變化小於等於輸入的變化, k=1時為 1-Lipschitz ,即變化的不要太猛烈。
栗子:黑線為基準, 藍線變化很猛烈不是1-Lipschitz, 而綠線變化緩和屬於1-Lipschitz。
所以回到 2)式,如果沒有對D的限制,當D(x1) 和D(x2)為正負無窮時可以最大化2)式,下圖左。而現在對D有此限制,則D的取值如下圖右:
D(x1) 和D(x2)差距一定要小於d。下圖說明了利用EMD的好處是PG可以沿著梯度移動到藍色Pdata,而原生GAN的判別器D為而二元分類器,輸出為sigmoid函數。對於藍色和橙色的分布,原生GAN可能為藍線:對應Pdata的輸出值為1,對應PG的輸出值為0。所以藍色曲線在藍色和橙色分布的梯度為0,根本沒有動力去挪動generator的輸出來更新。而EMD在兩個分布附近都有梯度,可以繼續更新。
WGAN優點: WGAN will provide gradient to push PG towards Pdata
4. WGAN優化
那麽怎麽梯度更新呢?因為D有了限制,無法直接利用SGD。這裏引入一種方法:Weight clipping
就是強制令權重w 限制在c ~ -c之間。在參數更新後,如果w>c,則令w=c, 如果w<-c,則令w=-c。我們這樣做只為保證:
對權重的限制表示對NN的輸入做一個變化,輸出的變化總是有限的。實做上對於w進行限制:就可以限制了這條直線的斜率,否則D的輸出為一條很斜的直線,且不斷變直,給橙色的值越來越小,給藍色的值越來越大,無法停止。
5. WGAN 算法
result:
原來的GAN是衡量JS-divergence,GAN是把JS-divergence train到底,所有case的結果幾乎都是0,不管你generate的image好不好,JS-divergence都是個定值。那Discriminator就不是衡量JS-divergence,D的output就變得沒有意義了。但是如果我們用WGAN的話,discriminator衡量的是EMD,而這個earth mover’s distance 衡量的就是兩個分布真正的距離。所以看discriminator的loss可以真的表示出generate的圖片的好壞。
二. Improved WGAN
A differentiable function is 1-Lipschitz if and only if it has gradients with norm less than or equal to 1 everywhere.
就是說如果一個函數是1-Lipschitz,那麽它的gradients with morm <=1:
註意這裏的gradient不是對參數,而是input對output的gradient,即x對D(x)的gradient。
註意此懲罰項penalty:如果梯度的norm>1就會懲罰,即,因不可能對所有x作積分,所以對sample的x求期望
那Ppenalty是什麽呢,怎麽從Ppenalty sample x呢?首先從Pdata sample一個點,再從PG sample一個點,然後在其連線中sample出x,即x是在Pdata 和 PG 之間的區域中sample:
Only give gradient constraint to the region between ??_???????? and ??_?? because they influence how ??_?? moves to ??_????????
僅僅對Pdata 和 PG 之間的區域的梯度進行限制,因為只有這個區域影響PG 移向Pdata 。
而進一步,Improved WGAN不是讓gradient的norm小於1,而是越接近1越好: 因為希望Pdata的D(x)越大越好, PG的 D(x)越小越好,然而這個差距總是有限的,所以希望中間的藍色區域的gradient越大越好,因為藍色的坡度越陡,Pdata 和PG的差距越大,然而藍色的gradient的最大值就只能取到1.
論文給出利用Weight clipping 和 Gradient penalty 學出來的discriminator有什麽差距。
如果利用Weight clipping 得到的weight集中在clip的地方,而Gradient penalty得到的weight的distribution比較正常:
下圖中黃色的點為true distribution,要learn一個discriminator使黃色的點值比較大,其他點值比較小。因為Weight clipping對weight進行了限制,所以很難學出復雜的discriminator, 而gradient penalty可以學到復雜的分布。
接下來是一些真實的實驗結果:
上圖主要表示不同的壓力測試,Improved WGAN都有好的表現。
三. Paired Data
Conditional GAN: test to image 、 image to image
1)text to image by traditional supervised learning:
以上是傳統監督方法,但這麽做可能有問題,因為對於一個敘述可能有不同的image,用這個方法來訓練,你的machine的output可能想同時minimize跟所有不同example之間的distance,那麽可能產生的就是一個很模糊的圖案:
然而用GAN方法的話,輸入是c和一個distribution,那麽輸出x也是一個distribution:即輸出可能落在藍點的分布或綠點的分布,就不會落在紅點的分布:
以下兩種Discriminator左邊可能產生清晰但圖文無關的圖,而右邊則效果好很多:
2) image to image
先看用傳統監督方法怎麽做:Traditional supervised approach
首先搜集最右邊的真實圖像,然後生成最左邊的幾何圖形,利用這種傳統監督方法train來learn一個NN而不是一個GAN 的generator的話,測試時可能有以下結果:
模糊原因同上:同一個輸入有許多不同的輸出,machine找到的是所有輸出的平均。來看看用GAN train的方法:
result: machine自己加了個小閣樓
如果再加一個限制,使得generate的圖像與原圖越接近越好,則得到更合理的圖像:
result: 更接近原圖
四. Unpaired Data
此時沒有成對的圖片,例如只有一大堆風景圖片和一大堆梵高的油畫(並沒有對應關系說哪張風景畫對應於哪張梵高的畫),那怎麽做呢?
對於這種不同Domain之間的轉換,方法有:Cycle GAN, Disco GAN
Cycle GAN做法:先train一個generator,可以把Domain X轉為Domain Y。
註意此時G輸出會越來越像梵高的畫,但可能是一張和輸入完全無關的圖,因為對它的要求只追求像梵高的畫,上圖右(原本應該產生風景油畫卻產生出了人物頭像)。所以這裏應該再加一個generator,它把梵高油畫轉為輸入的原畫(下圖左):
上圖右可以將訓練好的兩個generator用來真實畫與梵高油畫之間的轉換。
W-GAN系 (Wasserstein GAN、 Improved WGAN)