【GAN优化】详解对偶与WGAN
越學習越發(fā)現(xiàn)自己知之甚少,道阻且長,還是認真看下這篇文章,好好琢磨琢磨GAN吧。
今天將和大家一起學習在GAN界占有重要位置的WGAN,它提出了一種新的距離度量,較之前的f散度,它的數(shù)學性質(zhì)更為優(yōu)秀。我們將先通過一個例子細說一下f散度的問題,然后介紹Wasserstein距離并用一個小例子給出計算方法,最后利用對偶理論求解Wasserstein距離。
作者&編輯 | 小米粥
說到對GAN的理解,我們不能簡單停留在“生成器產(chǎn)生樣本,判別器分辨樣本真假”的階段了,在經(jīng)過第二篇文章后,對GAN的理解應(yīng)該是:先學習一個關(guān)于生成器定義的隱式概率分布和訓(xùn)練數(shù)據(jù)集的本質(zhì)概率分布之間的距離度量,然后優(yōu)化生成器來縮減這個距離度量。今天的主要內(nèi)容依舊圍繞這個距離度量來展開。
1 度量的問題
在第二篇文章的最后,我們簡要討論了f散度的問題。實際中,生成器定義的隱式概率分布和訓(xùn)練數(shù)據(jù)集的本質(zhì)概率分布幾乎不存在重疊部分,而且隨著數(shù)據(jù)維度增加,這個趨勢會更加嚴重,那么采樣計算得來的f散度距離不僅不連續(xù),而且?guī)缀跆幪帉?dǎo)數(shù)為0。
用一個非常簡單的例子來解釋一下,在二維空間有兩個無任何重合的均勻分布,其中
我們來計算一下兩個分布的KL散度,JS散度,總變差。
可以看出,當P和Q沒有重合或者重合部分可忽略時,其f散度值為常數(shù);當兩者完全重合時,f散度值為0。這樣的話,f散度無法為生成器提供可以減少損失函數(shù)的梯度信息,生成器無法訓(xùn)練獲得優(yōu)化方向。
對于此問題的一種解決方案是:通過對數(shù)據(jù)集中的樣本和生成器生成的樣本增加噪聲,使得原本的兩個低維概率分布“彌散”到整個高維空間,強行讓它們產(chǎn)生不可忽略的重疊,此時的f散度便能“指示”出兩個分布的距離。在訓(xùn)練過程中,我們可以先添加方差比較大的噪聲,以盡可能使兩個分布產(chǎn)生較大重疊部分,隨著兩個分布距離的拉近,可以逐漸降低噪聲的方差,直至最后可以去掉噪聲完全靠JS散度來指示生成器的學習。
但是為了本質(zhì)地解決問題,我們需要尋找一種更合理的距離度量。直觀上,該距離最好處處連續(xù),在兩個分布不重合的位置處處可導(dǎo)且導(dǎo)數(shù)不能為0。
2 Wasserstein距離
Wasserstein距離是一個數(shù)學性質(zhì)非常良好距離度量,數(shù)學形式稍微有點復(fù)雜。我們用一個小例子來引入,定義兩個離散概率分布P和Q,其隨機變量取值只能為1,2,3,4。如何對P調(diào)整使其等于Q?
其實是很簡單的一個問題,我們逐位置來分解計算,對于P的1位置,其值為0.25,我們將這0.25保持在1位置,即可有如下分解矩陣:
對于P的2位置,其值為0.25,我們也將這0.25全部保持在2位置,即有分解矩陣:
對于P的3位置,其值為0.5,我們將其中的0.25放置到1位置,將0.25放置到2位置,即有分解矩陣:
類似的,P的4位置為0,不用做任何分解和移動,這樣我們可看到經(jīng)過逐個位置分解和移動后,新的分布已經(jīng)和Q完全一樣了,如下:
然后,我們再考慮關(guān)于路程的移動耗費問題。如果定義從1位置到2位置路程為1,從1位置到3位置路程為2......對P的1位置,將0.25保留在1位置不產(chǎn)生移動耗費,對P的2位置,將0.25保留在2位置也不產(chǎn)生移動耗費,但是對P的3位置,將0.25移動到1位置,需要耗費:0.25*(3-1)=0.5;將0.25移動到2位置,需要耗費:0.25*(2-1)=0.25,故整個方案將產(chǎn)生0.75的耗費。當然,我們也可以有其他傳輸方案,例如:
可以證明的是總存在一個耗費最小的方案。Wasserstein距離便是某一種最小耗費方案對應(yīng)的總耗費值。
在數(shù)學形式上,
Π是兩個分布構(gòu)成的全部可能的聯(lián)合分布的集合,γ是該集合中的一個聯(lián)合分布,且該聯(lián)合分布要求:
簡而言之就是,γ定義一個傳輸方案,d定義了路程函數(shù),對每個方案求積分計算總傳輸耗費值,最后在所有這些方案中取最小耗費值的傳輸方案,其對應(yīng)的總耗費值即為距離。
在WGAN中,
當然也可以定義2-Wasserstein距離:
或者k-Wasserstein距離:
針對于剛開始提出的小例子,我們用Wasserstein則可得到:
可以看出Wasserstein距離處處連續(xù),而且?guī)缀跆幪幙蓪?dǎo),數(shù)學性質(zhì)非常好,能夠在兩個分布沒有重疊部分的時候,依舊給出合理的距離度量。
3?對偶問題
如果要計算Wasserstein距離,那需要遍歷所有滿足條件的聯(lián)合概率分布,然后計算每個聯(lián)合概率分布下的總消耗值,最后取最小的總消耗值,在維度較高時,該問題幾乎不可解決。與之前fGAN有點類似,當一個優(yōu)化問題難以求解時,可以考慮將其轉(zhuǎn)化為比較容易求解的對偶問題。關(guān)于對偶理論,其最早源于求解線性規(guī)劃問題,每個線性規(guī)劃問題都有一個與之對應(yīng)的對偶問題,對偶問題是以原問題的約束條件和目標函數(shù)為基礎(chǔ)構(gòu)造而來的,對于一個不易求解的線性規(guī)劃問題,當求解成功對偶問題時,其原問題也自然解決。
據(jù)此,我們先將Wasserstein距離表示成線性規(guī)劃的形式,定義向量(即將聯(lián)合概率分布“離散化”并拉成列向量):
定義向量:
對于兩個約束條件,定義矩陣:
定義向量:
定義了這些復(fù)雜的矩陣和向量后,我們的Wasserstein距離則可以表達成以下線性規(guī)劃的形式:
對偶理論是一個非常漂亮的理論,尤其是對于強對偶問題,有:
即只需求解原問題的對偶問題,得到對偶問題的解的同時也得到了原問題的解。即使對于弱對偶問題,雖不能精確求解,但是給出了原問題的下界:
在第二篇的fGAN中,我們便給出了f散度的一個下界,不過幸運的是,這次面對的是一個強對偶問題:
對于原問題的對偶問題,我們定義向量:
其限制條件要求,
即
綜上所述,有
現(xiàn)在,定義一個神經(jīng)網(wǎng)絡(luò)F(x)來擬合一下上個式子的f(x),采用抽樣計算的方式,就有了WGAN的判別器(現(xiàn)在叫critic)損失函數(shù):
critic不像原始GAN的判別器具有分別真假樣本的具象意義了,它的輸出代表什么無從知曉。它像一個“部件”,使用這個訓(xùn)練好的部件再加上對樣本的充分采樣,便能得到兩個分布的Wasserstein距離,自然而然,生成器的優(yōu)化目標是使得Wasserstein距離最小。
這里面存在一個比較難解決的問題,1-Lipschitz限制即要求在任意點,函數(shù)的一階導(dǎo)數(shù)在[-1,1]的范圍內(nèi),這個限制在神經(jīng)網(wǎng)絡(luò)中并不容易實現(xiàn),之后的許多GAN便是圍繞這點來展開的。
其實今天著重把Wasserstein距離和計算方法介紹了下,對于比較有難度的Lipschitz限制并未討論,在接下來的兩篇文章中,我們將分別從解決1-Lipschitz限制和IPM的角度繼續(xù)深入GAN的目標函數(shù)。
[1]?Arjovsky M, Chintala S, Bottou L. Wasserstein GAN[J]. 2017.
[2]?Hong Y , Hwang U , Yoo J , et al. How Generative Adversarial Networks and Their Variants Work: An Overview[J]. ACM Computing Surveys, 2017.
[3]Wasserstein GAN and the Kantorovich-Rubinstein Duality.? https://vincentherrmann.github.io/blog/wasserstein/
總結(jié)
這篇文章帶領(lǐng)大家領(lǐng)略了一下WGAN,學習了一種新的距離度量,展示了使用對偶方法轉(zhuǎn)化Wasserstein距離,最后留了一個大坑,解決1-Lipschitz問題,
下期預(yù)告:Lipschitz限制與SNGAN
GAN群
有三AI建立了一個GAN群,便于有志者相互交流。感興趣的同學也可以微信搜索xiaozhouguo94,備注"加入有三-GAN群"。
知識星球推薦
有三AI知識星球由言有三維護,內(nèi)設(shè)AI知識匯總,AI書籍,網(wǎng)絡(luò)結(jié)構(gòu),看圖猜技術(shù),項目開發(fā),Github推薦,AI1000問等系統(tǒng)性學習板塊。
轉(zhuǎn)載文章請后臺聯(lián)系
侵權(quán)必究
往期精選
【GAN優(yōu)化】GAN優(yōu)化專欄上線,首談生成模型與GAN基礎(chǔ)
【GAN的優(yōu)化】從KL和JS散度到fGAN
【技術(shù)綜述】有三說GANs(上)
【模型解讀】歷數(shù)GAN的5大基本結(jié)構(gòu)
【完結(jié)】深度學習CV算法工程師從入門到初級面試有多遠,大概是25篇文章的距離
【完結(jié)】優(yōu)秀的深度學習從業(yè)者都有哪些優(yōu)秀的習慣
【完結(jié)】給新手的12大深度學習開源框架快速入門項目
【完結(jié)】總結(jié)12大CNN主流模型架構(gòu)設(shè)計思想
【AI不惑境】數(shù)據(jù)壓榨有多狠,人工智能就有多成功
【AI不惑境】網(wǎng)絡(luò)深度對深度學習模型性能有什么影響?
【AI不惑境】網(wǎng)絡(luò)的寬度如何影響深度學習模型的性能?
【AI不惑境】學習率和batchsize如何影響模型的性能?
【AI不惑境】殘差網(wǎng)絡(luò)的前世今生與原理
【AI不惑境】移動端高效網(wǎng)絡(luò),卷積拆分和分組的精髓
總結(jié)
以上是生活随笔為你收集整理的【GAN优化】详解对偶与WGAN的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【NLP】 NLP专栏栏主自述,说不出口
- 下一篇: 【GAN优化】GAN优化专栏栏主小米粥自