WGAN-div:默默无闻的WGAN填坑者 | 附开源代码
作者丨蘇劍林
單位丨廣州火焰信息科技有限公司
研究方向丨NLP,神經(jīng)網(wǎng)絡(luò)
個人主頁丨kexue.fm
今天我們來談一下 Wasserstein 散度,簡稱“W 散度”。注意,這跟 Wasserstein 距離(Wasserstein distance,簡稱“W 距離”,又叫 Wasserstein 度量、Wasserstein metric)是不同的兩個東西。?
本文源于論文 Wasserstein Divergence for GANs,論文中提出了稱為 WGAN-div 的 GAN 訓(xùn)練方案。
這是一篇我很是欣賞卻默默無聞的 paper,我只是找文獻(xiàn)時偶然碰到了它。不管英文還是中文界,它似乎都沒有流行起來,但是我感覺它是一個相當(dāng)漂亮的結(jié)果。
▲?WGAN-div的部分樣本(2w iter)
如果讀者需要入門一下 WGAN 的相關(guān)知識,不妨請閱讀拙作互懟的藝術(shù):從零直達(dá) WGAN-GP。
WGAN
我們知道原始的 GAN(SGAN)會有可能存在梯度消失的問題,因此 WGAN 橫空出世了。
W距離
WGAN 引入了最優(yōu)傳輸里邊的 W 距離來度量兩個分布的距離:?
這里的 p?(x) 是真實樣本的分布,q(x) 是偽造分布,c(x,y) 是傳輸成本,論文中用的是 c(x,y)=‖x?y‖;而 γ∈Π(p?(x),q(x)) 的意思是說:γ 是任意關(guān)于 x,y 的二元分布,其邊緣分布則為 p?(x) 和 q(y)。
直觀來看,γ 描述了一個運輸方案,而 c(x,y) 則是運輸成本,Wc(p?(x),q(x)) 就是說要找到成本最低的那個運輸方案所對應(yīng)的成本作為分布度量。
對偶問題
W 距離確實是一個很好的度量,但顯然不好算。當(dāng) c(x,y)=‖x?y‖ 時,我們可以將其轉(zhuǎn)化為對偶問題:
其中 T(x) 是一個標(biāo)量函數(shù),‖T‖L 則是 Lipschitz 范數(shù):
說白了,T(x) 要滿足:
生成模型
這樣一來,生成模型的訓(xùn)練,可以作為 W 距離下的一個最小-最大問題:
第一個 arg max 試圖獲得 W 距離的近似表達(dá)式,而第二個 arg min 則試圖最小化 W 距離。
然而,T 不是任意的,需要滿足 ‖T‖L≤1,這稱為 Lipschitz 約束(L 約束),該怎么施加這個約束呢?因此,一方面,WGAN 開創(chuàng)了 GAN 的一個新流派,使得 GAN 的理論上了一個新高度,另一方面,WGAN 也挖了一個關(guān)于 L 約束的大坑,這個坑也引得不少研究者前仆后繼地跳坑。
L約束
目前,往模型中加入 L 約束,有三種主要的方案。
權(quán)重裁剪
這是 WGAN 最原始的論文所提出的一種方案:在每一步的判別器的梯度下降后,將判別器的參數(shù)的絕對值裁剪到不超過某個固定常數(shù)。?
這是一種非常樸素的做法,現(xiàn)在基本上已經(jīng)不用了。其思想就是:L 約束本質(zhì)上就是要網(wǎng)絡(luò)的波動程度不能超過一個線性函數(shù),而激活函數(shù)通常都滿足這個條件,所以只需要考慮網(wǎng)絡(luò)權(quán)重,最簡單的一種方案就是直接限制權(quán)重范圍,這樣就不會抖動太劇烈了。?
梯度懲罰
這種思路非常直接,即 ‖T‖L≤1 可以由 ‖?T‖≤1 來保證,所以干脆把判別器的梯度作為一個懲罰項加入到判別器的 loss 中:
但問題是我們要求 ‖T‖L≤1 是在每一處都成立,所以 r(x) 應(yīng)該是全空間的均勻分布才行,顯然這很難做到。所以作者采用了一個非常機智(也有點流氓)的做法:在真假樣本之間隨機插值來懲罰,這樣保證真假樣本之間的過渡區(qū)域滿足 L 約束。
這種方案就是 WGAN-GP。顯然,它比權(quán)重裁剪要高明一些,而且通常都 work 得很好。但是這種方案是一種經(jīng)驗方案,沒有更完備的理論支撐。
譜歸一化
另一種實現(xiàn) L 約束的方案就是譜歸一化(SN),可以參考我之前寫的文章深度學(xué)習(xí)中的Lipschitz約束:泛化與生成模型。?
本質(zhì)上來說,譜歸一化和權(quán)重裁剪都是同一類方案,只是譜歸一化的理論更完備,結(jié)果更加松弛。而且還有一點不同的是:權(quán)重裁剪是一種“事后”的處理方案,也就是每次梯度下降后才直接裁剪參數(shù),這種處理方案本身就可能導(dǎo)致優(yōu)化上的不穩(wěn)定;譜歸一化是一種“事前”的處理方案,它直接將每一層的權(quán)重都譜歸一化后才進(jìn)行運算,譜歸一化作為了模型的一部分,更加合理一些。?
盡管譜歸一化更加高明,但是它跟權(quán)重裁剪一樣存在一個問題:把判別器限制在了一小簇函數(shù)之間。也就是說,加了譜歸一化的 T,只是所有滿足 L 約束的函數(shù)的一小部分。因為譜歸一化事實上要求網(wǎng)絡(luò)的每一層都滿足 L 約束,但這個條件太死了,也許這一層可以不滿足 L 約束,下一層則滿足更強的 L 約束,兩者抵消,整體就滿足 L 約束,但譜歸一化不能適應(yīng)這種情況。
WGAN-div
在這種情況下,Wasserstein Divergence for GANs 引入了 W 散度,它聲稱:現(xiàn)在我們可以去掉 L 約束了,并且還保留了 W 距離的好性質(zhì)。
論文回顧
有這樣的好事?我們來看看 W 散度是什么。一上來,作者先回顧了一些經(jīng)典的 GAN 的訓(xùn)練方案,然后隨手扔出一篇文獻(xiàn),叫做 Partial differential equations and monge-kantorovich mass transfer [1],里邊提供了一個方案(下面的出場順序跟論文有所不同),能直接將 T 訓(xùn)練出來,目標(biāo)是(跟原文的寫法有些不一樣):
這里的 r(x) 是一個非常寬松的分布,我們后面再細(xì)談。整個 loss 的意思是:你只要按照這個公式將 T 訓(xùn)練出來,它就是 (2) 式中 T 的最優(yōu)解,也就是說,接下來只要把它代進(jìn) (2) 式,就得到了 W 距離,最小化它就可以得到生成器了。
一些注解
首先,我為什么說作者“隨手”跑出一篇論文呢?因為作者確實是隨手啊……?
作者直接說“According to [19]”,然后就給出了后面的結(jié)果,[19] 就是這篇論文,是一篇最優(yōu)傳輸和偏微分方程的論文,59 頁。我翻來翻去,才發(fā)現(xiàn)作者引用的應(yīng)該是 36 頁和 40 頁的結(jié)果(不過翻到了也沒能進(jìn)一步看懂,放棄了),也不提供多一點參考資料,尷尬。
還有后面的一些引理,作者也說“直接去看 [19] 的 discussion 吧”..... 然后,讀者更多的疑問是:這玩意跟梯度懲罰方案有什么差別,加個負(fù)號變成最小化不都是差不多嗎?
做實驗時也許沒有多大差別,但是理論上的差別是很大的,因為 WGAN-GP 的梯度懲罰只能算是一種經(jīng)驗方案,而 (7) 式是有理論保證的。后面我們會繼續(xù)講完它。
W散度
式 (7) 是一個理論結(jié)果,而不管怎樣深度學(xué)習(xí)還是一門理論和工程結(jié)合的學(xué)科,所以作者一般化地考慮了下面的目標(biāo):
其中 k>0,p>1。基于此,作者證明了 Wk,p 有非常好的性質(zhì):
1. Wk,p 是個對稱的散度。散度的意思是:D[P,Q]≥0 且 D[P,Q]=0?P=Q,它跟“距離”的差別是它不滿足三角不等式,也有叫做“半度量”、“半距離”的。Wk,p 是一個散度,這已經(jīng)非常棒了,因為我們大多數(shù) GAN 都只是在優(yōu)化某個散度而已。散度意味著當(dāng)我們最小化它時,我們真正是在縮小兩個分布的距離。
2. Wk,p 的最優(yōu)解跟 W 距離有一定的聯(lián)系。(7) 式就是一個特殊的 W1/2,2。這說明當(dāng)我們最大化 Wk,p 得到 T 之后,可以去掉梯度項,通過最小化 (8) 來訓(xùn)練生成器。這也表明以 Wk,p 為目標(biāo),性質(zhì)跟 W 距離類似,不會有梯度消失的問題。
3. 這是我覺得最逗的一點,作者證明了:
不總是一個散度。當(dāng) n=1,p=2 時這就是 WGAN-GP 的梯度懲罰,作者說它不是一個散度,明擺著要跟 WGAN-GP 對著干。不是散度意味著 WGAN-GP 在訓(xùn)練判別器的時候,并非總是會在拉大兩個分布的距離(鑒別者在偷懶,沒有好好提升自己的鑒別技能),從而使得訓(xùn)練生成器時回傳的梯度不準(zhǔn)。
WGAN-div
好了,說了這么久,終于可以引入 WGAN-div 了,其實就是基于 (9) 的 WGAN 的訓(xùn)練模式了:
前者是為了通過 W 散度 Wk,p 找出 W 距離中最優(yōu)的 T,后者就是為了最小化 W 距離。所以,W 散度的角色,就是一個為 W 距離的默默無聞的填坑者,再結(jié)合這篇論文本身的鮮有反響,我覺得這種感覺更加強烈了。
實驗
k,p的選擇
作者通過做了一批搜索實驗,發(fā)現(xiàn) k=2,p=6 時效果最好(用 FID 為指標(biāo))。這進(jìn)一步與 WGAN-GP 的做法有出入:范數(shù)的二次冪并非是最好的選擇。
▲?不同的k,p對FID的影響(FID越小越好)
r(x)的選擇
前面我們就說過,W 散度中對 r(x) 的要求非常寬松,論文也做了一組對比實驗,對比了常見的做法:
真假樣本隨機插值
真樣本之間隨機插值、假樣本之間隨機插值
真假樣本混合后,隨機選兩個樣本插值
直接選原始的真假樣本混合
直接只選原始的假樣本
直接只選原始的真樣本
結(jié)果發(fā)現(xiàn),在 WGAN-div 之下這幾種做法表現(xiàn)都差不多(用 FID 為指標(biāo)),但是對于 WGAN-GP,這幾種做法差別比較大,而且 WGAN-GP 中最好的結(jié)果比 WGAN-div 中最差的結(jié)果還要差。這時候 WGAN-GP 就被徹底虐倒了。
▲?不同采樣方式所導(dǎo)致的不同模型的FID不同差異(FID越小越好)
這里邊的差別不難解釋,WGAN-GP 是憑經(jīng)驗加上梯度懲罰,并且“真假樣本隨機插值”只是它無法做到全空間采樣的一個折衷做法,但是 W 散度和 WGAN-div,從理論的開始,就沒對 r(x) 有什么嚴(yán)格的限制。
其實,原始 W 散度的構(gòu)造(這個需要看參考論文)基本上只要求 r(x) 是一個樣本空間跟 p?(x)、q(x) 一樣的分布,非常弱的要求,而我們一般選擇為 p?(x)、q(x) 兩者共同衍生出來的分布,相對來說收斂快一點。
參考代碼
自然是用 Keras 寫的,人生苦短,我用 Keras。
https://github.com/bojone/gan/blob/master/keras/wgan_div_celeba.py
隨機樣本(自己的實驗結(jié)果):
▲?WGAN-div的部分樣本(2w iter)
當(dāng)然,原論文的實驗結(jié)果也表明 WGAN-div 是很優(yōu)秀的:
▲?WGAN-div與不同的模型在不同的數(shù)據(jù)集效果比較(指標(biāo)為FID,越小越好)
結(jié)語
不知道業(yè)界是怎么看這篇 WGAN-div 的,也許是覺得跟 WGAN-GP 沒什么不同,就覺得沒有什么意思了。不過我是很佩服這些從理論上推導(dǎo)并且改進(jìn)原始結(jié)果的大牛及其成果。雖然看起來像是隨手甩了一篇論文然后說“你看著辦吧”的感覺,但這種將理論和實踐結(jié)合起來的結(jié)果仍然是很有美感的。
本來我對 WGAN-GP 是多少有些芥蒂的,總覺得它太丑,不想用。但是 WGAN-div 出現(xiàn)了,在我心中已經(jīng)替代了 WGAN-GP,并且它不再丑了。
相關(guān)鏈接
[1].?Evans, L.C.: Partial differential equations and monge-kantorovich mass transfer. Current developments in mathematics 1997(1) (1997) 65–126
點擊以下標(biāo)題查看作者其他文章:?
變分自編碼器VAE:原來是這么一回事 | 附開源代碼
再談變分自編碼器VAE:從貝葉斯觀點出發(fā)
變分自編碼器VAE:這樣做為什么能成?
深度學(xué)習(xí)中的互信息:無監(jiān)督提取特征
全新視角:用變分推斷統(tǒng)一理解生成模型
細(xì)水長flow之NICE:流模型的基本概念與實現(xiàn)
細(xì)水長flow之f-VAEs:Glow與VAEs的聯(lián)姻
深度學(xué)習(xí)中的Lipschitz約束:泛化與生成模型
關(guān)于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學(xué)術(shù)平臺。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
▽ 點擊 |?閱讀原文?| 查看作者博客
總結(jié)
以上是生活随笔為你收集整理的WGAN-div:默默无闻的WGAN填坑者 | 附开源代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自动机器学习(AutoML)最新综述
- 下一篇: 线下沙龙 × 报名 | “大规模数据存储