令人拍案叫絕的 Wasserstein GAN,徹底解決GAN訓練不穩定問題
【新智元導讀】 本文詳細解析了最近在 reddit 的 Machine Learning 版引起熱烈討論的一篇論文Wassertein GAN,該論文提出的 WGAN 相比原始 GAN 的演算法實現流程卻只改了四點,但實現了徹底解決GAN訓練不穩定,基本解決了 collapse mode 的問題等好處。
論文下載地址:https://arxiv.org/abs/1701.07875
在GAN的相關研究如火如荼甚至可以說是氾濫的今天,一篇新鮮出爐的arXiv論文Wassertein GAN卻在 Reddit 的 Machine Learning 頻道火了,連Goodfellow都在帖子裡和大家熱烈討論,這篇論文究竟有什麼了不得的地方呢?
要知道自從2014年Ian Goodfellow提出以來,GAN就存在著訓練困難、生成器和判別器的loss無法指示訓練程式、生成樣本缺乏多樣性等問題。從那時起,很多論文都在嘗試解決,但是效果不盡人意,比如最有名的一個改進DCGAN依靠的是對判別器和生成器的架構進行實驗列舉,最終找到一組比較好的網路架構設定,但是實際上是治標不治本,沒有徹底解決問題。而今天的主角Wasserstein GAN(下面簡稱WGAN)成功地做到了以下爆炸性的幾點:
-
徹底解決GAN訓練不穩定的問題,不再需要小心平衡生成器和判別器的訓練程度
-
基本解決了collapse mode的問題,確保了生成樣本的多樣性
-
訓練過程中終於有一個像交叉熵、準確率這樣的數值來指示訓練的程式,這個數值越小代表GAN訓練得越好,代表生成器產生的影象質量越高(如題圖所示)
-
以上一切好處不需要精心設計的網路架構,最簡單的多層全連線網路就可以做到
那以上好處來自哪裡?這就是令人拍案叫絕的部分了——實際上作者整整花了兩篇論文,在第一篇《Towards Principled Methods for Training Generative Adversarial Networks》裡面推了一堆公式定理,從理論上分析了原始GAN的問題所在,從而針對性地給出了改進要點;在這第二篇《Wassertein GAN》裡面,又再從這個改進點出發推了一堆公式定理,最終給出了改進的演算法實現流程,而改進後相比原始GAN的演算法實現流程卻只改了四點:
-
判別器最後一層去掉sigmoid
-
生成器和判別器的loss不取log
-
每次更新判別器的引數之後把它們的絕對值截斷到不超過一個固定常數c
-
不要用基於動量的優化演算法(包括momentum和Adam),推薦RMSProp,SGD也行
演算法截圖如下:
改動是如此簡單,效果卻驚人地好,以至於Reddit上不少人在感嘆:就這樣?沒有別的了? 太簡單了吧!這些反應讓我想起了一個頗有年頭的雞湯段子,說是一個工程師在電機外殼上用粉筆劃了一條線排除了故障,要價一萬美元——畫一條線,1美元;知道在哪畫線,9999美元。上面這四點改進就是作者Martin Arjovsky劃的簡簡單單四條線,對於工程實現便已足夠,但是知道在哪劃線,背後卻是精巧的數學分析,而這也是本文想要整理的內容。
本文內容分為五個部分:
-
原始GAN究竟出了什麼問題?(此部分較長)
-
WGAN之前的一個過渡解決方案
-
Wasserstein距離的優越性質
-
從Wasserstein距離到WGAN
-
總結
理解原文的很多公式定理需要對測度論、 拓撲學等數學知識有所掌握,本文會從直觀的角度對每一個重要公式進行解讀,有時通過一些低維的例子幫助讀者理解數學背後的思想,所以不免會失於嚴謹,如有引喻不當之處,歡迎在評論中指出。
以下簡稱 Wassertein GAN為“WGAN本作”,簡稱 Towards Principled Methods for Training Generative Adversarial Networks為“WGAN前作”。
WGAN 原始碼實現:https://github.com/martinarjovsky/WassersteinGAN
第一部分:原始GAN究竟出了什麼問題?
回顧一下,原始GAN中判別器要最小化如下損失函式,儘可能把真實樣本分為正例,生成樣本分為負例:
其中 Pr 是真實樣本分佈,Pg 是由生成器產生的樣本分佈。對於生成器,Goodfellow 一開始提出來一個損失函式,後來又提出了一個改進的損失函式,分別是
後者在 WGAN 兩篇論文中稱為“the - log D alternative”或“the - log D trick”。WGAN 前作分別分析了這兩種形式的原始GAN各自的問題所在,下面分別說明。
第一種原始GAN形式的問題
一句話概括:判別器越好,生成器梯度消失越嚴重。WGAN 前作從兩個角度進行了論證,第一個角度是從生成器的等價損失函式切入的。
首先從公式1可以得到,在生成器 G 固定引數時最優的判別器 D 應該是什麼。對於一個具體的樣本,它可能來自真實分佈也可能來自生成分佈,它對公式1損失函式的貢獻是
令其關於D(x)的導數為0,得
化簡得最優判別器為:
這個結果從直觀上很容易理解,就是看一個樣本 x 來自真實分佈和生成分佈的可能性的相對比例。如果Pr(x) = 0且 Pg(x) ≠ 0,最優判別器就應該非常自信地給出概率0;如果 Pr(x) = Pg(x),說明該樣本是真是假的可能性剛好一半一半,此時最優判別器也應該給出概率0.5。
然而GAN訓練有一個trick,就是別把判別器訓練得太好,否則在實驗中生成器會完全學不動(loss降不下去),為了探究背後的原因,我們就可以看看在極端情況——判別器最優時,生成器的損失函式變成什麼。給公式2加上一個不依賴於生成器的項,使之變成
注意,最小化這個損失函式等價於最小化公式2,而且它剛好是判別器損失函式的反。代入最優判別器即公式4,再進行簡單的變換可以得到
變換成這個樣子是為了引入 Kullback–Leibler divergence(簡稱KL散度)和 Jensen-Shannon divergence(簡稱JS散度)這兩個重要的相似度衡量指標,後面的主角之一Wasserstein距離,就是要來吊打它們兩個的。所以接下來介紹這兩個重要的配角——KL散度和JS散度:
於是公式5就可以繼續寫成
到這裡讀者可以先喘一口氣,看看目前得到了什麼結論:根據原始GAN定義的判別器loss,我們可以得到最優判別器的形式;而在最優判別器的下,我們可以把原始GAN定義的生成器loss等價變換為最小化真實分佈Pr與生成分佈Pg之間的JS散度。我們越訓練判別器,它就越接近最優,最小化生成器的loss也就會越近似於最小化Pr和Pg之間的JS散度。
問題就出在這個JS散度上。我們會希望如果兩個分佈之間越接近它們的JS散度越小,我們通過優化JS散度就能將Pg“拉向”Pr,最終以假亂真。這個希望在兩個分佈有所重疊的時候是成立的,但是如果兩個分佈完全沒有重疊的部分,或者它們重疊的部分可忽略(下面解釋什麼叫可忽略),它們的JS散度是多少呢?
答案是log2,因為對於任意一個x只有四種可能:
第一種對計算JS散度無貢獻,第二種情況由於重疊部分可忽略所以貢獻也為0,第三種情況對公式7右邊第一個項的貢獻是
第四種情況與之類似,所以最終
換句話說,無論 Pr 跟Pg 是遠在天邊,還是近在眼前,只要它們倆沒有一點重疊或者重疊部分可忽略,JS散度就固定是常數 log2,而這對於梯度下降方法意味著——梯度為0!此時對於最優判別器來說,生成器肯定是得不到一丁點梯度資訊的;即使對於接近最優的判別器來說,生成器也有很大機會面臨梯度消失的問題。
但是 Pr與 Pg不重疊或重疊部分可忽略的可能性有多大?不嚴謹的答案是:非常大。比較嚴謹的答案是:當 Pr與 Pg的支撐集(support)是高維空間中的低維流形(manifold)時,Pr與 Pg 重疊部分測度(measure)為0的概率為1。
不用被奇怪的術語嚇得關掉頁面,雖然論文給出的是嚴格的數學表述,但是直觀上其實很容易理解。首先簡單介紹一下這幾個概念:
不用被奇怪的術語嚇得關掉頁面,雖然論文給出的是嚴格的數學表述,但是直觀上其實很容易理解。首先簡單介紹一下這幾個概念:
-
支撐集(support)其實就是函式的非零部分子集,比如ReLU函式的支撐集就是(0,+∞),一個概率分佈的支撐集就是所有概率密度非零部分的集合。
-
流形(manifold)是高維空間中曲線、曲面概念的拓廣,我們可以在低維上直觀理解這個概念,比如我們說三維空間中的一個曲面是一個二維流形,因為它的本質維度(intrinsic dimension)只有2,一個點在這個二維流形上移動只有兩個方向的自由度。同理,三維空間或者二維空間中的一條曲線都是一個一維流形。
-
測度(measure)是高維空間中長度、面積、體積概念的拓廣,可以理解為“超體積”。
回過頭來看第一句話,“當 Pr 與 Pg 的支撐集是高維空間中的低維流形時”,基本上是成立的。原因是GAN中的生成器一般是從某個低維(比如100維)的隨機分佈中取樣出一個編碼向量,再經過一個神經網路生成出一個高維樣本(比如64x64的圖片就有4096維)。當生成器的引數固定時,生成樣本的概率分佈雖然是定義在4096維的空間上,但它本身所有可能產生的變化已經被那個100維的隨機分佈限定了,其本質維度就是100,再考慮到神經網路帶來的對映降維,最終可能比100還小,所以生成樣本分佈的支撐集就在4096維空間中構成一個最多100維的低維流形,“撐不滿”整個高維空間。
“撐不滿”就會導致真實分佈與生成分佈難以“碰到面”,這很容易在二維空間中理解:一方面,二維平面中隨機取兩條曲線,它們之間剛好存在重疊線段的概率為0;另一方面,雖然它們很大可能會存在交叉點,但是相比於兩條曲線而言,交叉點比曲線低一個維度,長度(測度)為0,可忽略。三維空間中也是類似的,隨機取兩個曲面,它們之間最多就是比較有可能存在交叉線,但是交叉線比曲面低一個維度,面積(測度)是0,可忽略。從低維空間擴充到高維空間,就有了如下邏輯:因為一開始生成器隨機初始化,所以Pg幾乎不可能與Pr有什麼關聯,所以它們的支撐集之間的重疊部分要麼不存在,要麼就比Pr和Pg的最小維度還要低至少一個維度,故而測度為0。所謂“重疊部分測度為0”,就是上文所言“不重疊或者重疊部分可忽略”的意思。
我們就得到了WGAN前作中關於生成器梯度消失的第一個論證:在(近似)最優判別器下,最小化生成器的loss等價於最小化 Pr 與 Pg 之間的JS散度,而由於 Pr與 Pg幾乎不可能有不可忽略的重疊,所以無論它們相距多遠JS散度都是常數 log2,最終導致生成器的梯度(近似)為0,梯度消失。
接著作者寫了很多公式定理從第二個角度進行論證,但是背後的思想也可以直觀地解釋:
-
首先,Pr與 Pg之間幾乎不可能有不可忽略的重疊,所以無論它們之間的“縫隙”多狹小,都肯定存在一個最優分割曲面把它們隔開,最多就是在那些可忽略的重疊處隔不開而已。
-
由於判別器作為一個神經網路可以無限擬合這個分隔曲面,所以存在一個最優判別器,對幾乎所有真實樣本給出概率1,對幾乎所有生成樣本給出概率0,而那些隔不開的部分就是難以被最優判別器分類的樣本,但是它們的測度為0,可忽略。
-
最優判別器在真實分佈和生成分佈的支撐集上給出的概率都是常數(1和0),導致生成器的loss梯度為0,梯度消失。
有了這些理論分析,原始GAN不穩定的原因就徹底清楚了:判別器訓練得太好,生成器梯度消失,生成器loss降不下去;判別器訓練得不好,生成器梯度不準,四處亂跑。只有判別器訓練得不好不壞才行,但是這個火候又很難把握,甚至在同一輪訓練的前後不同階段這個火候都可能不一樣,所以GAN才那麼難訓練。
實驗輔證如下:
圖:WGAN前作Figure 2。先分別將DCGAN訓練1,20,25個epoch,然後固定生成器不動,判別器重新隨機初始化從頭開始訓練,對於第一種形式的生成器loss產生的梯度可以列印出其尺度的變化曲線,可以看到隨著判別器的訓練,生成器的梯度均迅速衰減。注意y軸是對數座標軸。
第二種原始GAN形式的問題
一句話概括:最小化第二種生成器loss函式,會等價於最小化一個不合理的距離衡量,導致兩個問題,一是梯度不穩定,二是collapse mode即多樣性不足。WGAN前作又是從兩個角度進行了論證,下面只說第一個角度,因為對於第二個角度我難以找到一個直觀的解釋方式,感興趣的讀者還是去看論文吧。
如前文所說,Ian Goodfellow提出的“- log D trick”是把生成器loss改成
上文推導已經得到在最優判別器D*下
我們可以把KL散度(注意下面是先g後r)變換成含D*的形式:
由公式3,9,10可得最小化目標的等價變形
注意上式最後兩項不依賴於生成器G,最終得到最小化公式3等價於最小化
這個等價最小化目標存在兩個嚴重的問題。第一是它同時要最小化生成分佈與真實分佈的KL散度,卻又要最大化兩者的JS散度,一個要拉近,一個卻要推遠!這在直觀上非常荒謬,在數值上則會導致梯度不穩定,這是後面那個JS散度項的毛病。
第二,即便是前面那個正常的KL散度項也有毛病。因為KL散度不是一個對稱的衡量,KL(Pg || Pr)與 KL(Pr || Pg) 是有差別的。以前者為例
換言之,KL(Pg || Pr) 對於上面兩種錯誤的懲罰是不一樣的,第一種錯誤對應的是“生成器沒能生成真實的樣本”,懲罰微小;第二種錯誤對應的是“生成器生成了不真實的樣本” ,懲罰巨大。第一種錯誤對應的是缺乏多樣性,第二種錯誤對應的是缺乏準確性。這一放一打之下,生成器寧可多生成一些重複但是很“安全”的樣本,也不願意去生成多樣性的樣本,因為那樣一不小心就會產生第二種錯誤,得不償失。這種現象就是大家常說的collapse mode。
第一部分小結:在原始GAN的(近似)最優判別器下,第一種生成器loss面臨梯度消失問題,第二種生成器loss面臨優化目標荒謬、梯度不穩定、對多樣性與準確性懲罰不平衡導致mode collapse這幾個問題。
實驗輔證如下:
圖:WGAN前作Figure 3。先分別將DCGAN訓練1,20,25個epoch,然後固定生成器不動,判別器重新隨機初始化從頭開始訓練,對於第二種形式的生成器loss產生的梯度可以列印出其尺度的變化曲線,可以看到隨著判別器的訓練,藍色和綠色曲線中生成器的梯度迅速增長,說明梯度不穩定,紅線對應的是DCGAN相對收斂的狀態,梯度才比較穩定。
第二部分:WGAN之前的一個過渡解決方案
原始GAN問題的根源可以歸結為兩點,一是等價優化的距離衡量(KL散度、JS散度)不合理,二是生成器隨機初始化後的生成分佈很難與真實分佈有不可忽略的重疊。
WGAN前作其實已經針對第二點提出了一個解決方案,就是對生成樣本和真實樣本加噪聲,直觀上說,使得原本的兩個低維流形“彌散”到整個高維空間,強行讓它們產生不可忽略的重疊。而一旦存在重疊,JS散度就能真正發揮作用,此時如果兩個分佈越靠近,它們“彌散”出來的部分重疊得越多,JS散度也會越小而不會一直是一個常數,於是(在第一種原始GAN形式下)梯度消失的問題就解決了。在訓練過程中,我們可以對所加的噪聲進行退火(annealing),慢慢減小其方差,到後面兩個低維流形“本體”都已經有重疊時,就算把噪聲完全拿掉,JS散度也能照樣發揮作用,繼續產生有意義的梯度把兩個低維流形拉近,直到它們接近完全重合。以上是對原文的直觀解釋。
在這個解決方案下我們可以放心地把判別器訓練到接近最優,不必擔心梯度消失的問題。而當判別器最優時,對公式9取反可得判別器的最小loss為
其中 Pr+e和 Pg+e分別是加噪後的真實分佈與生成分佈。反過來說,從最優判別器的loss可以反推出當前兩個加噪分佈的JS散度。兩個加噪分佈的JS散度可以在某種程度上代表兩個原本分佈的距離,也就是說可以通過最優判別器的loss反映訓練程式!……真的有這樣的好事嗎?
並沒有,因為加噪JS散度的具體數值受到噪聲的方差影響,隨著噪聲的退火,前後的數值就沒法比較了,所以它不能成為Pr和 Pg 距離的本質性衡量。
因為本文的重點是WGAN本身,所以WGAN前作的加噪方案簡單介紹到這裡,感興趣的讀者可以閱讀原文了解更多細節。加噪方案是針對原始GAN問題的第二點根源提出的,解決了訓練不穩定的問題,不需要小心平衡判別器訓練的火候,可以放心地把判別器訓練到接近最優,但是仍然沒能夠提供一個衡量訓練程式的數值指標。但是WGAN本作就從第一點根源出發,用Wasserstein距離代替JS散度,同時完成了穩定訓練和程式指標的問題!
作者未對此方案進行實驗驗證。
第三部分:Wasserstein距離的優越性質
Wasserstein距離又叫Earth-Mover(EM)距離,定義如下:
解釋如下:Ⅱ(Pr, Pg)是 Pr和 Pg 組合起來的所有可能的聯合分佈的集合,反過來說,Ⅱ(Pr, Pg)中每一個分佈的邊緣分佈都是 Pr和 Pg。對於每一個可能的聯合分佈γ而言,可以從中取樣得到一個真實樣本 x 和一個生成樣本 y,並算出這對樣本的距離 ||x - y||,所以可以計算該聯合分佈γ下樣本對距離的期望值 。在所有可能的聯合分佈中能夠對這個期望值取到的下界 ,就定義為Wasserstein距離。
直觀上可以把理解為在 γ 這個“路徑規劃”下把 Pr 這堆“沙土”挪到Pg“位置”所需的“消耗”,而W(Pr, Pg)就是“最優路徑規劃”下的“最小消耗”,所以才叫Earth-Mover(推土機)距離。
Wasserstein距離相比KL散度、JS散度的優越性在於,即便兩個分佈沒有重疊,Wasserstein距離仍然能夠反映它們的遠近。WGAN本作通過簡單的例子展示了這一點。考慮如下二維空間中的兩個分佈 P₁ 和 P₂,P₁ 線上段AB上均勻分佈,P₂ 線上段CD上均勻分佈,通過控制引數 θ可以控制著兩個分佈的距離遠近。
此時容易得到(讀者可自行驗證)
KL散度和JS散度是突變的,要麼最大要麼最小,Wasserstein距離卻是平滑的,如果我們要用梯度下降法優化 θ這個引數,前兩者根本提供不了梯度,Wasserstein距離卻可以。類似地,在高維空間中如果兩個分佈不重疊或者重疊部分可忽略,則KL和JS既反映不了遠近,也提供不了梯度,但是Wasserstein卻可以提供有意義的梯度。
第四部分:從Wasserstein距離到WGAN
既然Wasserstein距離有如此優越的性質,如果我們能夠把它定義為生成器的loss,不就可以產生有意義的梯度來更新生成器,使得生成分佈被拉向真實分佈嗎?
沒那麼簡單,因為Wasserstein距離定義(公式12)中的沒法直接求解,不過沒關係,作者用了一個已有的定理把它變換為如下形式
證明過程被作者丟到論文附錄中了,我們也姑且不管,先看看上式究竟說了什麼。
首先需要介紹一個概念——Lipschitz連續。它其實就是在一個連續函式f上面額外施加了一個限制,要求存在一個常數K≥0使得定義域內的任意兩個元素x₁和x₂都滿足
此時稱函式f的 Lipschitz 常數為 K。
簡單理解,比如說 f的定義域是實數集合,那上面的要求就等價於 f的導函式絕對值不超過 K。再比如說 log(x) 就不是 Lipschitz 連續,因為它的導函式沒有上界。Lipschitz 連續條件限制了一個連續函式的最大區域性變動幅度。
公式13的意思就是在要求函式 f的 Lipschitz 常數不超過 K的條件下,對所有可能滿足條件的 f取到的上界,然後再除以 K。特別地,我們可以用一組引數 w來定義一系列可能的函式 ,此時求解公式13可以近似變成求解如下形式
再用上我們搞深度學習的人最熟悉的那一套,不就可以把 f用一個帶引數 w的神經網路來表示嘛!由於神經網路的擬合能力足夠強大,我們有理由相信,這樣定義出來的一系列 雖然無法囊括所有可能,但是也足以高度近似公式13要求的那個了。
最後,還不能忘了滿足公式14中這個限制。我們其實不關心具體的K是多少,只要它不是正無窮就行,因為它只是會使得梯度變大 K 倍,並不會影響梯度的方向。所以作者採取了一個非常簡單的做法,就是限制神經網路的所有引數的不超過某個範圍 [-c, c],比如,此時所有偏導數也不會超過某個範圍,所以一定存在某個不知道的常數 K使得 的區域性變動幅度不會超過它,Lipschitz連續條件得以滿足。具體在演算法實現中,只需要每次更新完 w後把它clip回這個範圍就可以了。
到此為止,我們可以構造一個含引數 w、最後一層不是非線性啟用層的判別器網路,在限制 w不超過某個範圍的條件下,使得
儘可能取到最大,此時L就會近似真實分佈與生成分佈之間的Wasserstein距離(忽略常數倍數 K)。注意原始GAN的判別器做的是真假二分類任務,所以最後一層是sigmoid,但是現在WGAN中的判別器 做的是近似擬合Wasserstein距離,屬於迴歸任務,所以要把最後一層的sigmoid拿掉。
接下來生成器要近似地最小化Wasserstein距離,可以最小化 L,由於Wasserstein距離的優良性質,我們不需要擔心生成器梯度消失的問題。再考慮到 L的第一項與生成器無關,就得到了WGAN的兩個loss
公式15是公式17的反,可以指示訓練程式,其數值越小,表示真實分佈與生成分佈的Wasserstein距離越小,GAN訓練得越好。
WGAN完整的演算法流程已經貼過了,為了方便讀者此處再貼一遍:
上文說過,WGAN與原始GAN第一種形式相比,只改了四點:
-
判別器最後一層去掉sigmoid
-
生成器和判別器的loss不取log
-
每次更新判別器的引數之後把它們的絕對值截斷到不超過一個固定常數c
-
不要用基於動量的優化演算法(包括momentum和Adam),推薦RMSProp,SGD也行
前三點都是從理論分析中得到的,已經介紹完畢;第四點卻是作者從實驗中發現的,屬於trick,相對比較“玄”。作者發現如果使用Adam,判別器的loss有時候會崩掉,當它崩掉時,Adam給出的更新方向與梯度方向夾角的cos值就變成負數,更新方向與梯度方向南轅北轍,這意味著判別器的loss梯度是不穩定的,所以不適合用Adam這類基於動量的優化演算法。作者改用RMSProp之後,問題就解決了,因為RMSProp適合梯度不穩定的情況。
對WGAN作者做了不少實驗驗證,本文只提比較重要的兩點。第一,判別器所近似的Wasserstein距離與生成器的生成圖片質量高度相關,如下所示:
第二,WGAN如果用類似DCGAN架構,生成圖片的效果與DCGAN差不多:
但是厲害的地方在於WGAN不用DCGAN各種特殊的架構設計也能做到不錯的效果,比如如果大家一起拿掉Batch Normalization的話,DCGAN就崩了:
如果WGAN和原始GAN都使用多層全連線網路(MLP),不用CNN,WGAN質量會變差些,但是原始GAN不僅質量變得更差,而且還出現了collapse mode,即多樣性不足:
第五部分:總結
WGAN前作分析了Ian Goodfellow提出的原始GAN兩種形式各自的問題,第一種形式等價在最優判別器下等價於最小化生成分佈與真實分佈之間的JS散度,由於隨機生成分佈很難與真實分佈有不可忽略的重疊以及JS散度的突變特性,使得生成器面臨梯度消失的問題;第二種形式在最優判別器下等價於既要最小化生成分佈與真實分佈直接的KL散度,又要最大化其JS散度,相互矛盾,導致梯度不穩定,而且KL散度的不對稱性使得生成器寧可喪失多樣性也不願喪失準確性,導致collapse mode現象。
WGAN前作針對分佈重疊問題提出了一個過渡解決方案,通過對生成樣本和真實樣本加噪聲使得兩個分佈產生重疊,理論上可以解決訓練不穩定的問題,可以放心訓練判別器到接近最優,但是未能提供一個指示訓練程式的可靠指標,也未做實驗驗證。
WGAN本作引入了Wasserstein距離,由於它相對KL散度與JS散度具有優越的平滑特性,理論上可以解決梯度消失問題。接著通過數學變換將Wasserstein距離寫成可求解的形式,利用一個引數數值範圍受限的判別器神經網路來最大化這個形式,就可以近似Wasserstein距離。在此近似最優判別器下優化生成器使得Wasserstein距離縮小,就能有效拉近生成分佈與真實分佈。WGAN既解決了訓練不穩定的問題,也提供了一個可靠的訓練程式指標,而且該指標確實與生成樣本的質量高度相關。作者對WGAN進行了實驗驗證。
(本文獲作者授權轉發,原文地址:https://zhuanlan.zhihu.com/p/25071913)
相關文章
- 更快更穩定:這就是Wasserstein GAN
- Wasserstein GAN
- 「GAN優化」GAN訓練的小技巧優化
- Wasserstein GAN and the Kantorovich-Rubinstein Duality
- pytorch訓練GAN時的detach()PyTorch
- GAN訓練技巧彙總
- 只有條件GAN才能穩定訓練?對抗+自監督的無監督方法瞭解一下
- 深入理解 python 虛擬機器:令人拍案叫絕的位元組碼設計Python虛擬機
- 徹底解決梯度爆炸問題,新方法不用反向傳播也能訓練ResNet梯度反向傳播
- 徹底解決Python編碼問題Python
- GAN實戰筆記——第五章訓練與普遍挑戰:為成功而GAN筆記
- 如何徹底解決pip install慢的問題
- 如何訓練解決問題的能力?
- 徹底解決Hive小檔案問題Hive
- CosmoGAN:訓練GAN,讓AI尋找宇宙中的暗物質AI
- 瞭解GAN背後的設計,訓練,損失函式和演算法函式演算法
- ICML 2017大熱論文:Wasserstein GAN | 經典論文復現
- 優化GAN的分佈的梯度問題,WGAN優化梯度
- 「GAN優化」詳解SNGAN(頻譜歸一化GAN)優化
- 解讀生成對抗網路(GAN) 之U-GAN-IT
- 卷積神經網路中十大拍案叫絕的操作卷積神經網路
- 關於GAN的靈魂七問
- 徹底解決關於CSocket類的Receive超時的問題(轉)
- 徹底解決SLF4J的日誌衝突的問題
- 能量視角下的GAN模型:GAN=“挖坑”+“跳坑”模型
- 九種 “姿勢” 讓你徹底解決跨域問題跨域
- 程式設計謎題:提升你解決問題的訓練場程式設計
- 徹底解決第三方分享icon過大的問題
- 使用Seata徹底解決Spring Cloud中的分散式事務問題!SpringCloud分散式
- 16.徹底解決Jmap在mac版本無法使用的問題Mac
- 能量視角下的GAN模型(二):GAN=“分析”+“取樣”模型
- 李巨集毅GAN學習(四)GAN的基本理論
- 褲子換裙子,就問你GAN的這波操作秀不秀
- 如何使用screen解決ssh斷連訓練停止的問題
- 透過 Pulsar 原始碼徹底解決重複消費問題原始碼
- 徹底解決java WEB專案的檔案路徑問題(war包)JavaWeb
- 這份資料庫知識指南讓程式設計師拍案叫絕!資料庫程式設計師
- GAN入門