令人拍案叫絕的Wasserstein GAN

986907217 7年前發布 | 62K 次閱讀 數據挖掘

最近出現了一篇比較火熱的 GAN 相關研究《 Wassertein GAN 》。中山大學的鄭華濱在知乎上 發表了一篇文章介紹該研究內容 ,獲得了極大的關注。機器之心經授權轉載此篇文章,且因段內公式較多,有的公式采取了文字或截圖等方式進行展示。

在 GAN 的相關研究如火如荼甚至可以說是泛濫的今天,一篇新鮮出爐的 arXiv 論文《Wassertein GAN(https://arxiv.org/abs/1701.07875)》卻在 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 右邊第一個項的貢獻是 log 2*P1/(P1+0) = log 2,第四種情況與之類似,所以最終 JS(P1||P2) = log 2。

換句話說,無論 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,可忽略。從低維空間拓展到高維空間,就有了如下邏輯:因為一開始生成器隨機初始化,所以 Pr 幾乎不可能與 Pg 有什么關聯,所以 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 改成

令人拍案叫絕的Wasserstein GAN

上文推導已經得到在最優判別器 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 為

其中P_{r+epsilon}和P_{g+epsilon}分別是加噪后的真實分布與生成分布。反過來說,從最優判別器的 loss 可以反推出當前兩個加噪分布的 JS 散度。兩個加噪分布的 JS 散度可以在某種程度上代表兩個原本分布的距離,也就是說可以通過最優判別器的 loss 反映訓練進程!……真的有這樣的好事嗎?

并沒有,因為加噪 JS 散度的具體數值受到噪聲的方差影響,隨著噪聲的退火,前后的數值就沒法比較了,所以它不能成為 pr 和 Pg 距離的本質性衡量。

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

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

第三部分:Wasserstein 距離的優越性質

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

解釋如下: Pi(Pr, Pg) 是 Pr和 Pg 組合起來的所有可能的聯合分布的集合,反過來說, Pi(Pr, Pg) 中每一個分布的邊緣分布都是Pr和Pg。對于每一個可能的聯合分布 gamma 而言,可以從中采樣(x, y)服從 gamma 分布得到一個真實樣本x和一個生成樣本 y,

并算出這對樣本的距離 ||x-y||,所以可以計算該聯合分布 gamma 下樣本對距離的期望值

在所有可能的聯合分布中能夠對這個期望值取到的下界

就定義為 Wasserstein 距離。

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

KL 散度和 JS 散度是突變的,要么最大要么最小,Wasserstein 距離卻是平滑的,如果我們要用梯度下降法優化這個參數,前兩者根本提供不了梯度,Wasserstein 距離卻可以。類似地,在高維空間中如果兩個分布不重疊或者重疊部分可忽略,則 KL 和 JS 既反映不了遠近,也提供不了梯度,但是 Wasserstein 卻可以提供有意義的梯度。

第四部分:從 Wasserstein 距離到 WGAN

既然 Wasserstein 距離有如此優越的性質,如果我們能夠把它定義為生成器的 loss,不就可以產生有意義的梯度來更新生成器,使得生成分布被拉向真實分布嗎?

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

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

首先需要介紹一個概念——Lipschitz 連續。它其實就是在一個連續函數上面額外施加了一個限制,要求存在一個常數K>=0使得定義域內的任意兩個元素x1和x2都滿足

此時稱函數 f 的 Lipschitz 常數為K。

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

公式13的意思就是在要求函數f的 Lipschitz 常數 ||f||L 不超過K的條件下,對所有可能滿足條件的 f 取到 的上界,然后再除以 K。特別地,我們可以用一組參數w來定義一系列可能的函數fw, 此時求解公式13可以近似變成求解如下形式:

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

最后,還不能忘了滿足公式 14 中 這個限制。我們其實不關心具體的K是多少,只要它不是正無窮就行,因為它只是會使得梯度變大 K 倍,并不會影響梯度的方向。所以作者采取了一個非常簡單的做法,就是限制神經網絡 f_theta 的所有參數 w_i 的不超過某個范圍 [-c, c] ,比如  ,此時所有偏導數 也不會超過某個范圍,所以一定存在某個不知道的常數 K 使得 fw 的局部變動幅度不會超過它,Lipsc hitz 連續條件得以滿足。具體在算法實現中,只需要每次更新完 w 后把它 clip 回這個范圍就可以了。

到此為止,我們可以構造一個含參數 w、最后一層不是非線性激活層的判別器網絡,在限制w不超過某個范圍的條件下,使得

(公式15)

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

接下來生成器要近似地最小化 Wasserstein 距離,可以最小化 L,由于 Wasserstein 距離的優良性質,我們不需要擔心生成器梯度消失的問題。再考慮到的第一項與生成器無關,就得到了 WGAN 的兩個 loss

公式15是公式17的反,可以指示訓練進程,其數值越小,表示真實分布與生成分布的 Wasserstein 距離越小,GAN 訓練得越好。

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

令人拍案叫絕的Wasserstein GAN

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

  • 判別器最后一層去掉 sigmoid

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

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

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

前三點都是從理論分析中得到的,已經介紹完畢;第四點卻是作者從實驗中發現的,屬于trick,相對比較 「 玄 」 。作者發現如果使用 Adam,判別器的 loss 有時候會崩掉,當它崩掉時, Adam 給出的更新方向與梯度方向夾角的 cos 值就變成負數,更新方向與梯度方向南轅北轍,這意味著判別器的 loss 梯度是不穩定的,所以不適合用 Adam 這類基于動量的優化算法。作者改用 RMSProp 之后,問題就解決了,因為 RMSProp 適合梯度不穩定的情況。

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

令人拍案叫絕的Wasserstein GAN

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

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

如果 WGAN 和原始 GAN 都使用多層全連接網絡(MLP),不用 CNN, WGAN 質量會變差些,但是原始 GAN 不僅質量變得更差,而且還出現了 collapse mode ,即多樣性不足:

第三,在所有WGAN的實驗中未觀察到collapse mode,作者也只說應該是解決了,最后補充一點論文沒提到,但是我個人覺得比較微妙的問題。判別器所近似的Wasserstein距離能夠用來指示單次訓練中的訓練進程,這個沒錯;接著作者又說它可以用于比較多次訓練進程,指引調參,我倒是覺得需要小心些。比如說我下次訓練時改了判別器的層數、節點數等超參,判別器的擬合能力就必然有所波動,再比如說我下次訓練時改了生成器兩次迭代之間,判別器的迭代次數,這兩種常見的變動都會使得Wasserstein距離的擬合誤差就與上次不一樣。那么這個擬合誤差的變動究竟有多大,或者說不同的人做實驗時判別器的擬合能力或迭代次數相差實在太大,那它們之間還能不能直接比較上述指標,我都是存疑的。

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

第五部分:總結

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

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

WGAN 本作引入了 Wasserstein 距離,由于它相對KL散度與 JS 散度具有優越的平滑特性,理論上可以解決梯度消失問題。接著通過數學變換將 Wasserstein 距離寫成可求解的形式,利用一個參數數值范圍受限的判別器神經網絡來最大化這個形式,就可以近似 Wasserstein 距離。在此近似最優判別器下優化生成器使得 Wasserstein 距離縮小,就能有效拉近生成分布與真實分布。 WGAN 既解決了訓練不穩定的問題,也提供了一個可靠的訓練進程指標,而且該指標確實與生成樣本的質量高度相關。作者對 WGAN 進行了實驗驗證。

 

來自:http://www.jiqizhixin.com/article/2247

 

 本文由用戶 986907217 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!