Wasserstein GAN

在GAN的相關研究如火如荼甚至可以說是泛濫的今天益缎,一篇新鮮出爐的arXiv論文《Wasserstein GAN》卻在Reddit的Machine Learning頻道火了翅楼,連Goodfellow都在帖子里和大家熱烈討論,這篇論文究竟有什么了不得的地方呢主慰?

要知道自從2014年Ian Goodfellow提出以來曲聂,GAN就存在著訓練困難、生成器和判別器的loss無法指示訓練進程访惜、生成樣本缺乏多樣性等問題。從那時起腻扇,很多論文都在嘗試解決债热,但是效果不盡人意,比如最有名的一個改進DCGAN依靠的是對判別器和生成器的架構進行實驗枚舉幼苛,最終找到一組比較好的網(wǎng)絡架構設置窒篱,但是實際上是治標不治本,沒有徹底解決問題舶沿。而今天的主角Wasserstein GAN(下面簡稱WGAN)成功地做到了以下爆炸性的幾點:

徹底解決GAN訓練不穩(wěn)定的問題墙杯,不再需要小心平衡生成器和判別器的訓練程度

基本解決了collapse mode的問題,確保了生成樣本的多樣性

訓練過程中終于有一個像交叉熵括荡、準確率這樣的數(shù)值來指示訓練的進程高镐,這個數(shù)值越小代表GAN訓練得越好,代表生成器產(chǎn)生的圖像質(zhì)量越高(如題圖所示)

以上一切好處不需要精心設計的網(wǎng)絡架構畸冲,最簡單的多層全連接網(wǎng)絡就可以做到

那以上好處來自哪里嫉髓?這就是令人拍案叫絕的部分了——實際上作者整整花了兩篇論文,在第一篇《Towards Principled Methods for Training Generative Adversarial Networks》里面推了一堆公式定理邑闲,從理論上分析了原始GAN的問題所在算行,從而針對性地給出了改進要點;在這第二篇《Wasserstein GAN》里面苫耸,又再從這個改進點出發(fā)推了一堆公式定理州邢,最終給出了改進的算法實現(xiàn)流程,而改進后相比原始GAN的算法實現(xiàn)流程卻只改了四點

1.判別器最后一層去掉sigmoid

2.生成器和判別器的loss不取log

3.每次更新判別器的參數(shù)之后把它們的絕對值截斷到不超過一個固定常數(shù)c

4.不要用基于動量的優(yōu)化算法(包括momentum和Adam)鲸阔,推薦RMSProp偷霉,SGD也行

算法截圖如下:

改動是如此簡單,效果卻驚人地好褐筛,以至于Reddit上不少人在感嘆:就這樣类少?沒有別的了? 太簡單了吧渔扎!這些反應讓我想起了一個頗有年頭的雞湯段子硫狞,說是一個工程師在電機外殼上用粉筆劃了一條線排除了故障,要價一萬美元——畫一條線晃痴,1美元残吩;知道在哪畫線,9999美元倘核。上面這四點改進就是作者Martin Arjovsky劃的簡簡單單四條線泣侮,對于工程實現(xiàn)便已足夠,但是知道在哪劃線紧唱,背后卻是精巧的數(shù)學分析活尊,而這也是本文想要整理的內(nèi)容。

本文內(nèi)容分為五個部分:

1.原始GAN究竟出了什么問題漏益?(此部分較長)

2.WGAN之前的一個過渡解決方案

3.Wasserstein距離的優(yōu)越性質(zhì)

4.從Wasserstein距離到WGAN

5.總結(jié)

理解原文的很多公式定理需要對測度論蛹锰、 拓撲學等數(shù)學知識有所掌握,本文會從直觀的角度對每一個重要公式進行解讀绰疤,有時通過一些低維的例子幫助讀者理解數(shù)學背后的思想铜犬,所以不免會失于嚴謹,如有引喻不當之處轻庆,歡迎在評論中指出癣猾。

以下簡稱《Wassertein GAN》為“WGAN本作”,簡稱《Towards Principled Methods for Training Generative Adversarial Networks》為“WGAN前作”余爆。

WGAN源碼實現(xiàn):martinarjovsky/WassersteinGAN

第一部分:原始GAN究竟出了什么問題煎谍?

回顧一下,原始GAN中判別器要最小化如下?lián)p失函數(shù)龙屉,盡可能把真實樣本分為正例呐粘,生成樣本分為負例:


其中pr是真實樣本分布,pg是由生成器產(chǎn)生的樣本分布转捕。對于生成器作岖,Goodfellow一開始提出來一個損失函數(shù),后來又提出了一個改進的損失函數(shù)五芝,分別是


后者在WGAN兩篇論文中稱為“the - log D alternative”或“the - log D trick”痘儡。WGAN前作分別分析了這兩種形式的原始GAN各自的問題所在,下面分別說明枢步。

第一種原始GAN形式的問題

一句話概括:判別器越好沉删,生成器梯度消失越嚴重渐尿。WGAN前作從兩個角度進行了論證,第一個角度是從生成器的等價損失函數(shù)切入的矾瑰。

首先從公式1可以得到砖茸,在生成器G固定參數(shù)時最優(yōu)的判別器D應該是什么。對于一個具體的樣本

殴穴,它可能來自真實分布也可能來自生成分布凉夯,它對公式1損失函數(shù)的貢獻是


令其關于D(x)的導數(shù)為0,得


化簡得最優(yōu)判別器為:


這個結(jié)果從直觀上很容易理解采幌,就是看一個樣本x來自真實分布和生成分布的可能性的相對比例劲够。如果pr(x)=0且pg(x)!=0,最優(yōu)判別器就應該非常自信地給出概率0休傍;如果pr(x)=pg(x)征绎,說明該樣本是真是假的可能性剛好一半一半,此時最優(yōu)判別器也應該給出概率0.5磨取。

然而GAN訓練有一個trick炒瘸,就是別把判別器訓練得太好,否則在實驗中生成器會完全學不動(loss降不下去)寝衫,為了探究背后的原因顷扩,我們就可以看看在極端情況——判別器最優(yōu)時,生成器的損失函數(shù)變成什么慰毅。給公式2加上一個不依賴于生成器的項隘截,使之變成


注意,最小化這個損失函數(shù)等價于最小化公式2汹胃,而且它剛好是判別器損失函數(shù)的反婶芭。代入最優(yōu)判別器即公式4,再進行簡單的變換可以得到


變換成這個樣子是為了引入Kullback–Leibler divergence(簡稱KL散度)和Jensen-Shannon divergence(簡稱JS散度)這兩個重要的相似度衡量指標着饥,后面的主角之一Wasserstein距離犀农,就是要來吊打它們兩個的。所以接下來介紹這兩個重要的配角——KL散度和JS散度:

于是公式5就可以繼續(xù)寫成


到這里讀者可以先喘一口氣宰掉,看看目前得到了什么結(jié)論:根據(jù)原始GAN定義的判別器loss呵哨,我們可以得到最優(yōu)判別器的形式;而在最優(yōu)判別器的下轨奄,我們可以把原始GAN定義的生成器loss等價變換為最小化真實分布pr與生成分布pg之間的JS散度孟害。我們越訓練判別器,它就越接近最優(yōu)挪拟,最小化生成器的loss也就會越近似于最小化pr和pg之間的JS散度挨务。

問題就出在這個JS散度上。我們會希望如果兩個分布之間越接近它們的JS散度越小,我們通過優(yōu)化JS散度就能將pg“拉向”pr谎柄,最終以假亂真丁侄。這個希望在兩個分布有所重疊的時候是成立的,但是如果兩個分布完全沒有重疊的部分朝巫,或者它們重疊的部分可忽略(下面解釋什么叫可忽略)鸿摇,它們的JS散度是多少呢?

答案是log2捍歪,因為對于任意一個x只有四種可能:


第一種對計算JS散度無貢獻,第二種情況由于重疊部分可忽略所以貢獻也為0鸵钝,第三種情況對公式7右邊第一個項的貢獻是log[p1 / (1/2(p2+0))]糙臼,第四種情況與之類似,所以最終

換句話說恩商,無論pr跟pg是遠在天邊变逃,還是近在眼前,只要它們倆沒有一點重疊或者重疊部分可忽略怠堪,JS散度就固定是常數(shù)log2揽乱,而這對于梯度下降方法意味著——梯度為0!此時對于最優(yōu)判別器來說粟矿,生成器肯定是得不到一丁點梯度信息的凰棉;即使對于接近最優(yōu)的判別器來說,生成器也有很大機會面臨梯度消失的問題陌粹。但是pr與pg不重疊或重疊部分可忽略的可能性有多大撒犀?不嚴謹?shù)拇鸢甘牵悍浅4蟆1容^嚴謹?shù)拇鸢甘牵?b>當pr與pg的支撐集(support)是高維空間中的低維流形(manifold)時掏秩,pr與pg重疊部分測度(measure)為0的概率為1或舞。不用被奇怪的術語嚇得關掉頁面,雖然論文給出的是嚴格的數(shù)學表述蒙幻,但是直觀上其實很容易理解映凳。首先簡單介紹一下這幾個概念:

? ? ? ?支撐集(support)其實就是函數(shù)的非零部分子集,比如ReLU函數(shù)的支撐集就是邮破,一個概率分布的支撐集就是所有概率密度非零部分的集合诈豌。

? ? ? ?流形(manifold)是高維空間中曲線、曲面概念的拓廣抒和,我們可以在低維上直觀理解這個概念队询,比如我們說三維空間中的一個曲面是一個二維流形,因為它的本質(zhì)維度(intrinsic dimension)只有2构诚,一個點在這個二維流形上移動只有兩個方向的自由度蚌斩。同理,三維空間或者二維空間中的一條曲線都是一個一維流形。

? ? ? ?測度(measure)是高維空間中長度送膳、面積员魏、體積概念的拓廣,可以理解為“超體積”叠聋。

回過頭來看第一句話撕阎,“當pr與pg的支撐集是高維空間中的低維流形時”,基本上是成立的碌补。原因是GAN中的生成器一般是從某個低維(比如100維)的隨機分布中采樣出一個編碼向量虏束,再經(jīng)過一個神經(jīng)網(wǎng)絡生成出一個高維樣本(比如64x64的圖片就有4096維)。當生成器的參數(shù)固定時厦章,生成樣本的概率分布雖然是定義在4096維的空間上镇匀,但它本身所有可能產(chǎn)生的變化已經(jīng)被那個100維的隨機分布限定了,其本質(zhì)維度就是100袜啃,再考慮到神經(jīng)網(wǎng)絡帶來的映射降維汗侵,最終可能比100還小,所以生成樣本分布的支撐集就在4096維空間中構成一個最多100維的低維流形群发,“撐不滿”整個高維空間晰韵。

“撐不滿”就會導致真實分布與生成分布難以“碰到面”,這很容易在二維空間中理解:一方面熟妓,二維平面中隨機取兩條曲線雪猪,它們之間剛好存在重疊線段的概率為0;另一方面起愈,雖然它們很大可能會存在交叉點浪蹂,但是相比于兩條曲線而言,交叉點比曲線低一個維度告材,長度(測度)為0坤次,可忽略。三維空間中也是類似的斥赋,隨機取兩個曲面缰猴,它們之間最多就是比較有可能存在交叉線吞杭,但是交叉線比曲面低一個維度稚矿,面積(測度)是0,可忽略骚勘。從低維空間拓展到高維空間隘膘,就有了如下邏輯:因為一開始生成器隨機初始化疑故,所以pr幾乎不可能與pg有什么關聯(lián),所以它們的支撐集之間的重疊部分要么不存在弯菊,要么就比pr和pg的最小維度還要低至少一個維度纵势,故而測度為0。所謂“重疊部分測度為0”,就是上文所言“不重疊或者重疊部分可忽略”的意思钦铁。

我們就得到了WGAN前作中關于生成器梯度消失的第一個論證:在(近似)最優(yōu)判別器下软舌,最小化生成器的loss等價于最小化pr與pg之間的JS散度,而由于pr與pg幾乎不可能有不可忽略的重疊牛曹,所以無論它們相距多遠JS散度都是常數(shù)log2佛点,最終導致生成器的梯度(近似)為0,梯度消失黎比。接著作者寫了很多公式定理從第二個角度進行論證超营,但是背后的思想也可以直觀地解釋:

? ? 1.首先,pr與pg之間幾乎不可能有不可忽略的重疊阅虫,所以無論它們之間的“縫隙”多狹小演闭,都肯定存在一個最優(yōu)分割曲面把它們隔開,最多就是在那些可忽略的重疊處隔不開而已书妻。

? ? 2.由于判別器作為一個神經(jīng)網(wǎng)絡可以無限擬合這個分隔曲面船响,所以存在一個最優(yōu)判別器躬拢,對幾乎所有真實樣本給出概率1躲履,對幾乎所有生成樣本給出概率0,而那些隔不開的部分就是難以被最優(yōu)判別器分類的樣本聊闯,但是它們的測度為0工猜,可忽略。

? ? 3.最優(yōu)判別器在真實分布和生成分布的支撐集上給出的概率都是常數(shù)(1和0)菱蔬,導致生成器的loss梯度為0篷帅,梯度消失。

有了這些理論分析拴泌,原始GAN不穩(wěn)定的原因就徹底清楚了:判別器訓練得太好魏身,生成器梯度消失,生成器loss降不下去蚪腐;判別器訓練得不好箭昵,生成器梯度不準,四處亂跑回季。只有判別器訓練得不好不壞才行家制,但是這個火候又很難把握,甚至在同一輪訓練的前后不同階段這個火候都可能不一樣泡一,所以GAN才那么難訓練颤殴。

實驗輔證如下:

WGAN前作Figure 2。先分別將DCGAN訓練1鼻忠,20涵但,25個epoch,然后固定生成器不動,判別器重新隨機初始化從頭開始訓練贤笆,對于第一種形式的生成器loss產(chǎn)生的梯度可以打印出其尺度的變化曲線蝇棉,可以看到隨著判別器的訓練,生成器的梯度均迅速衰減芥永。注意y軸是對數(shù)坐標軸篡殷。

第二種原始GAN形式的問題

一句話概括:最小化第二種生成器loss函數(shù),會等價于最小化一個不合理的距離衡量埋涧,導致兩個問題板辽,一是梯度不穩(wěn)定,二是collapse mode即多樣性不足棘催。WGAN前作又是從兩個角度進行了論證劲弦,下面只說第一個角度,因為對于第二個角度我難以找到一個直觀的解釋方式醇坝,感興趣的讀者還是去看論文吧(逃)邑跪。

如前文所說,Ian Goodfellow提出的“- log D trick”是把生成器loss改成


上文推導已經(jīng)得到在最優(yōu)判別器D*下


我們可以把KL散度(注意下面是先g后r)變換成含D*的形式:


由公式3呼猪,9画畅,10可得最小化目標的等價變形


注意上式最后兩項不依賴于生成器G,最終得到最小化公式3等價于最小化


這個等價最小化目標存在兩個嚴重的問題宋距。第一是它同時要最小化生成分布與真實分布的KL散度轴踱,卻又要最大化兩者的JS散度,一個要拉近谚赎,一個卻要推遠淫僻!這在直觀上非常荒謬壶唤,在數(shù)值上則會導致梯度不穩(wěn)定雳灵,這是后面那個JS散度項的毛病。

第二闸盔,即便是前面那個正常的KL散度項也有毛病悯辙。因為KL散度不是一個對稱的衡量,KL(pr||pg)與KL(pr||pr)是有差別的蕾殴。以前者為例:


換言之笑撞,KL(pg||pr)對于上面兩種錯誤的懲罰是不一樣的,第一種錯誤對應的是“生成器沒能生成真實的樣本”钓觉,懲罰微熊罘省;第二種錯誤對應的是“生成器生成了不真實的樣本” 荡灾,懲罰巨大瓤狐。第一種錯誤對應的是缺乏多樣性瞬铸,第二種錯誤對應的是缺乏準確性。這一放一打之下础锐,生成器寧可多生成一些重復但是很“安全”的樣本嗓节,也不愿意去生成多樣性的樣本,因為那樣一不小心就會產(chǎn)生第二種錯誤皆警,得不償失拦宣。這種現(xiàn)象就是大家常說的collapse mode。

第一部分小結(jié):在原始GAN的(近似)最優(yōu)判別器下信姓,第一種生成器loss面臨梯度消失問題鸵隧,第二種生成器loss面臨優(yōu)化目標荒謬、梯度不穩(wěn)定意推、對多樣性與準確性懲罰不平衡導致mode collapse這幾個問題豆瘫。

實驗輔證如下:

WGAN前作Figure 3。先分別將DCGAN訓練1菊值,20外驱,25個epoch,然后固定生成器不動腻窒,判別器重新隨機初始化從頭開始訓練昵宇,對于第二種形式的生成器loss產(chǎn)生的梯度可以打印出其尺度的變化曲線,可以看到隨著判別器的訓練定页,藍色和綠色曲線中生成器的梯度迅速增長趟薄,說明梯度不穩(wěn)定绽诚,紅線對應的是DCGAN相對收斂的狀態(tài)典徊,梯度才比較穩(wěn)定。

第二部分:WGAN之前的一個過渡解決方案

原始GAN問題的根源可以歸結(jié)為兩點恩够,一是等價優(yōu)化的距離衡量(KL散度卒落、JS散度)不合理,二是生成器隨機初始化后的生成分布很難與真實分布有不可忽略的重疊蜂桶。

WGAN前作其實已經(jīng)針對第二點提出了一個解決方案儡毕,就是對生成樣本和真實樣本加噪聲,直觀上說扑媚,使得原本的兩個低維流形“彌散”到整個高維空間腰湾,強行讓它們產(chǎn)生不可忽略的重疊。而一旦存在重疊疆股,JS散度就能真正發(fā)揮作用费坊,此時如果兩個分布越靠近,它們“彌散”出來的部分重疊得越多旬痹,JS散度也會越小而不會一直是一個常數(shù)附井,于是(在第一種原始GAN形式下)梯度消失的問題就解決了讨越。在訓練過程中,我們可以對所加的噪聲進行退火(annealing)永毅,慢慢減小其方差把跨,到后面兩個低維流形“本體”都已經(jīng)有重疊時,就算把噪聲完全拿掉沼死,JS散度也能照樣發(fā)揮作用着逐,繼續(xù)產(chǎn)生有意義的梯度把兩個低維流形拉近,直到它們接近完全重合意蛀。以上是對原文的直觀解釋滨嘱。

在這個解決方案下我們可以放心地把判別器訓練到接近最優(yōu),不必擔心梯度消失的問題浸间。而當判別器最優(yōu)時太雨,對公式9取反可得判別器的最小loss為


其中分別是加噪后的真實分布與生成分布。反過來說魁蒜,從最優(yōu)判別器的loss可以反推出當前兩個加噪分布的JS散度囊扳。兩個加噪分布的JS散度可以在某種程度上代表兩個原本分布的距離,也就是說可以通過最優(yōu)判別器的loss反映訓練進程兜看!……真的有這樣的好事嗎锥咸?

并沒有,因為加噪JS散度的具體數(shù)值受到噪聲的方差影響细移,隨著噪聲的退火搏予,前后的數(shù)值就沒法比較了,所以它不能成為pg和pr距離的本質(zhì)性衡量弧轧。

因為本文的重點是WGAN本身雪侥,所以WGAN前作的加噪方案簡單介紹到這里,感興趣的讀者可以閱讀原文了解更多細節(jié)精绎。加噪方案是針對原始GAN問題的第二點根源提出的速缨,解決了訓練不穩(wěn)定的問題,不需要小心平衡判別器訓練的火候代乃,可以放心地把判別器訓練到接近最優(yōu)旬牲,但是仍然沒能夠提供一個衡量訓練進程的數(shù)值指標。但是WGAN本作就從第一點根源出發(fā)搁吓,用Wasserstein距離代替JS散度原茅,同時完成了穩(wěn)定訓練和進程指標的問題!

作者未對此方案進行實驗驗證堕仔。

第三部分:Wasserstein距離的優(yōu)越性質(zhì)

Wasserstein距離又叫Earth-Mover(EM)距離擂橘,定義如下:


解釋如下:組合起來的所有可能的聯(lián)合分布的集合,反過來說贮预,中每一個分布的邊緣分布都是pr和pg贝室。對于每一個可能的聯(lián)合分布契讲,可以從中采樣得到一個真實樣本x和一個生成樣本y,并算出這對樣本的距離||x-y||滑频,所以可以計算該下樣本對距離的期望值在所有可能的聯(lián)合分布中能夠?qū)@個期望值取到的下界就定義為Wasserstein距離捡偏。


Wasserstein距離相比KL散度、JS散度的優(yōu)越性在于峡迷,即便兩個分布沒有重疊银伟,Wasserstein距離仍然能夠反映它們的遠近。WGAN本作通過簡單的例子展示了這一點绘搞⊥埽考慮如下二維空間中的兩個分布p1和p2,p1在線段AB上均勻分布夯辖,p2在線段CD上均勻分布琉预,通過控制參數(shù)θ可以控制這兩個分布的距離遠近。

此時容易得到(讀者可自行驗證)

KL散度和JS散度是突變的蒿褂,要么最大要么最小圆米,Wasserstein距離卻是平滑的,如果我們要用梯度下降法優(yōu)化θ這個參數(shù)啄栓,前兩者根本提供不了梯度娄帖,Wasserstein距離卻可以。類似地昙楚,在高維空間中如果兩個分布不重疊或者重疊部分可忽略近速,則KL和JS既反映不了遠近,也提供不了梯度堪旧,但是Wasserstein卻可以提供有意義的梯度削葱。

第四部分:從Wasserstein距離到WGAN

既然Wasserstein距離有如此優(yōu)越的性質(zhì),如果我們能夠把它定義為生成器的loss崎场,不就可以產(chǎn)生有意義的梯度來更新生成器佩耳,使得生成分布被拉向真實分布嗎遂蛀?

沒那么簡單谭跨,因為Wasserstein距離定義(公式12)中的沒法直接求解,不過沒關系李滴,作者用了一個已有的定理把它變換為如下形式


證明過程被作者丟到論文附錄中了螃宙,我們也姑且不管,先看看上式究竟說了什么所坯。

首先需要介紹一個概念——Lipschitz連續(xù)谆扎。它其實就是在一個連續(xù)函數(shù)f上面額外施加了一個限制,要求存在一個常數(shù)K≥0使得定義域內(nèi)的任意兩個元素x1和x2都滿足,此時稱函數(shù)f的Lipschitz常數(shù)為K芹助。

簡單理解堂湖,比如說f的定義域是實數(shù)集合闲先,那上面的要求就等價于f的導函數(shù)絕對值不超過K。再比如說log(x)就不是Lipschitz連續(xù)无蜂,因為它的導函數(shù)沒有上界伺糠。Lipschitz連續(xù)條件限制了一個連續(xù)函數(shù)的最大局部變動幅度。

公式13的意思就是在要求函數(shù)f的Lipschitz常數(shù)不超過K的條件下斥季,對所有可能滿足條件的f取到的上界训桶,然后再除以K。特別地酣倾,我們可以用一組參數(shù)ω來定義一系列可能的函數(shù)fω舵揭,此時求解公式13可以近似變成求解如下形式


再用上我們搞深度學習的人最熟悉的那一套,不就可以把f用一個帶參數(shù)ω的神經(jīng)網(wǎng)絡來表示嘛躁锡!由于神經(jīng)網(wǎng)絡的擬合能力足夠強大午绳,我們有理由相信,這樣定義出來的一系列fω雖然無法囊括所有可能映之,但是也足以高度近似公式13要求的那個了箱叁。

最后,還不能忘了滿足公式14中這個限制惕医。我們其實不關心具體的K是多少耕漱,只要它不是正無窮就行,因為它只是會使得梯度變大K倍抬伺,并不會影響梯度的方向螟够。所以作者采取了一個非常簡單的做法,就是限制神經(jīng)網(wǎng)絡峡钓,比如所以一定存在某個不知道的常數(shù)K使得fω的局部變動幅度不會超過它妓笙,Lipschitz連續(xù)條件得以滿足。具體在算法實現(xiàn)中能岩,只需要每次更新完ω后把它clip回這個范圍就可以了寞宫。

到此為止,我們可以構造一個含參數(shù)ω拉鹃、最后一層不是非線性激活層的判別器網(wǎng)絡fω辈赋,在限制ω不超過某個范圍的條件下,使得


盡可能取到最大膏燕,此時L就會近似真實分布與生成分布之間的Wasserstein距離(忽略常數(shù)倍數(shù)K)钥屈。注意原始GAN的判別器做的是真假二分類任務,所以最后一層是sigmoid坝辫,但是現(xiàn)在WGAN中的判別器fω做的是近似擬合Wasserstein距離篷就,屬于回歸任務,所以要把最后一層的sigmoid拿掉近忙。

接下來生成器要近似地最小化Wasserstein距離竭业,可以最小化

智润,由于Wasserstein距離的優(yōu)良性質(zhì),我們不需要擔心生成器梯度消失的問題未辆。再考慮到L的第一項與生成器無關做鹰,就得到了WGAN的兩個loss。


公式15是公式17的反鼎姐,可以指示訓練進程钾麸,其數(shù)值越小,表示真實分布與生成分布的Wasserstein距離越小炕桨,GAN訓練得越好饭尝。

WGAN完整的算法流程已經(jīng)貼過了,為了方便讀者此處再貼一遍:

上文說過献宫,WGAN與原始GAN第一種形式相比钥平,只改了四點:

判別器最后一層去掉sigmoid

生成器和判別器的loss不取log

每次更新判別器的參數(shù)之后把它們的絕對值截斷到不超過一個固定常數(shù)c

不要用基于動量的優(yōu)化算法(包括momentum和Adam),推薦RMSProp姊途,SGD也行

前三點都是從理論分析中得到的涉瘾,已經(jīng)介紹完畢;第四點卻是作者從實驗中發(fā)現(xiàn)的捷兰,屬于trick立叛,相對比較“玄”。作者發(fā)現(xiàn)如果使用Adam贡茅,判別器的loss有時候會崩掉秘蛇,當它崩掉時,Adam給出的更新方向與梯度方向夾角的cos值就變成負數(shù)顶考,更新方向與梯度方向南轅北轍赁还,這意味著判別器的loss梯度是不穩(wěn)定的,所以不適合用Adam這類基于動量的優(yōu)化算法驹沿。作者改用RMSProp之后艘策,問題就解決了,因為RMSProp適合梯度不穩(wěn)定的情況渊季。

對WGAN作者做了不少實驗驗證朋蔫,本文只提比較重要的三點。第一梭域,判別器所近似的Wasserstein距離與生成器的生成圖片質(zhì)量高度相關斑举,如下所示(此即題圖):

第二,WGAN如果用類似DCGAN架構病涨,生成圖片的效果與DCGAN差不多:

但是厲害的地方在于WGAN不用DCGAN各種特殊的架構設計也能做到不錯的效果,比如如果大家一起拿掉Batch Normalization的話璧坟,DCGAN就崩了:

如果WGAN和原始GAN都使用多層全連接網(wǎng)絡(MLP)既穆,不用CNN赎懦,WGAN質(zhì)量會變差些,但是原始GAN不僅質(zhì)量變得更差幻工,而且還出現(xiàn)了collapse mode励两,即多樣性不足:

第三,在所有WGAN的實驗中未觀察到collapse mode囊颅,作者也只說應該是解決了当悔,

最后補充一點論文沒提到,但是我個人覺得比較微妙的問題踢代。判別器所近似的Wasserstein距離能夠用來指示單次訓練中的訓練進程盲憎,這個沒錯;接著作者又說它可以用于比較多次訓練進程胳挎,指引調(diào)參饼疙,我倒是覺得需要小心些。比如說我下次訓練時改了判別器的層數(shù)慕爬、節(jié)點數(shù)等超參窑眯,判別器的擬合能力就必然有所波動,再比如說我下次訓練時改了生成器兩次迭代之間医窿,判別器的迭代次數(shù)磅甩,這兩種常見的變動都會使得Wasserstein距離的擬合誤差就與上次不一樣。那么這個擬合誤差的變動究竟有多大姥卢,或者說不同的人做實驗時判別器的擬合能力或迭代次數(shù)相差實在太大更胖,那它們之間還能不能直接比較上述指標,我都是存疑的隔显。

評論區(qū)的知友@Minjie Xu進一步指出却妨,相比于判別器迭代次數(shù)的改變,對判別器架構超參的改變會直接影響到對應的Lipschitz常數(shù)K括眠,進而改變近似Wasserstein距離的倍數(shù)彪标,前后兩輪訓練的指標就肯定不能比較了,這是需要在實際應用中注意的掷豺。對此我想到了一個工程化的解決方式捞烟,不是很優(yōu)雅:取同樣一對生成分布和真實分布,讓前后兩個不同架構的判別器各自擬合到收斂当船,看收斂到的指標差多少倍题画,可以近似認為是后面的K2相對前面K1的變化倍數(shù),于是就可以用這個變化倍數(shù)校正前后兩輪訓練的指標德频。

第五部分:總結(jié)

WGAN前作分析了Ian Goodfellow提出的原始GAN兩種形式各自的問題苍息,第一種形式等價在最優(yōu)判別器下等價于最小化生成分布與真實分布之間的JS散度,由于隨機生成分布很難與真實分布有不可忽略的重疊以及JS散度的突變特性,使得生成器面臨梯度消失的問題竞思;第二種形式在最優(yōu)判別器下等價于既要最小化生成分布與真實分布直接的KL散度表谊,又要最大化其JS散度,相互矛盾盖喷,導致梯度不穩(wěn)定爆办,而且KL散度的不對稱性使得生成器寧可喪失多樣性也不愿喪失準確性,導致collapse mode現(xiàn)象课梳。

WGAN前作針對分布重疊問題提出了一個過渡解決方案距辆,通過對生成樣本和真實樣本加噪聲使得兩個分布產(chǎn)生重疊,理論上可以解決訓練不穩(wěn)定的問題暮刃,可以放心訓練判別器到接近最優(yōu)跨算,但是未能提供一個指示訓練進程的可靠指標,也未做實驗驗證沾歪。

WGAN本作引入了Wasserstein距離漂彤,由于它相對KL散度與JS散度具有優(yōu)越的平滑特性,理論上可以解決梯度消失問題灾搏。接著通過數(shù)學變換將Wasserstein距離寫成可求解的形式挫望,利用一個參數(shù)數(shù)值范圍受限的判別器神經(jīng)網(wǎng)絡來最大化這個形式,就可以近似Wasserstein距離狂窑。在此近似最優(yōu)判別器下優(yōu)化生成器使得Wasserstein距離縮小媳板,就能有效拉近生成分布與真實分布。WGAN既解決了訓練不穩(wěn)定的問題泉哈,也提供了一個可靠的訓練進程指標蛉幸,而且該指標確實與生成樣本的質(zhì)量高度相關。作者對WGAN進行了實驗驗證丛晦。


原文參考:https://zhuanlan.zhihu.com/p/25071913?from=message&isappinstalled=0

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奕纫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子烫沙,更是在濱河造成了極大的恐慌匹层,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锌蓄,死亡現(xiàn)場離奇詭異升筏,居然都是意外死亡,警方通過查閱死者的電腦和手機瘸爽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門您访,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人剪决,你說我怎么就攤上這事灵汪√囱担” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵识虚,是天一觀的道長肢扯。 經(jīng)常有香客問我妒茬,道長担锤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任乍钻,我火速辦了婚禮肛循,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘银择。我一直安慰自己多糠,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布浩考。 她就那樣靜靜地躺著夹孔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪析孽。 梳的紋絲不亂的頭發(fā)上搭伤,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音袜瞬,去河邊找鬼怜俐。 笑死,一個胖子當著我的面吹牛邓尤,可吹牛的內(nèi)容都是我干的拍鲤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼罐柳!你這毒婦竟也來了麸俘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤景鼠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后一忱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體莲蜘,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年帘营,在試婚紗的時候發(fā)現(xiàn)自己被綠了票渠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡芬迄,死狀恐怖问顷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤杜窄,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布肠骆,位于F島的核電站,受9級特大地震影響塞耕,放射性物質(zhì)發(fā)生泄漏蚀腿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一扫外、第九天 我趴在偏房一處隱蔽的房頂上張望莉钙。 院中可真熱鬧,春花似錦筛谚、人聲如沸磁玉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚊伞。三九已至,卻和暖如春吮铭,著一層夾襖步出監(jiān)牢的瞬間时迫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工沐兵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留别垮,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓扎谎,卻偏偏與公主長得像碳想,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子毁靶,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容