GAN背后的理论依据,以及为什么只使用GAN网络容易产生
花了一下午研究的文章,解答了我關(guān)于GAN網(wǎng)絡(luò)的很多疑問(wèn),內(nèi)容的理論水平很高,只能盡量理解,但真的是一篇非常好的文章轉(zhuǎn)自http://www.dataguru.cn/article-10570-1.html
GAN回顧
?
Martin 稱這個(gè)loss為original cost function(參見(jiàn)[1] 2.2.1章節(jié)),而實(shí)際操作中采用的loss為the –log D cost(參見(jiàn)[1] 2.2.2章節(jié))。
?
GAN存在的問(wèn)題:初探
?
當(dāng)固定G時(shí),訓(xùn)練D直到收斂,可以發(fā)現(xiàn)D的loss會(huì)越來(lái)越小,趨于0,這表明JSD(Pr || Pg)被較大化了,并且趨于log2。如下圖所示。
而這會(huì)導(dǎo)致什么問(wèn)題呢?在實(shí)踐中人們發(fā)現(xiàn),當(dāng)D訓(xùn)練得更較精確,G的更新會(huì)變得越差,訓(xùn)練變得異常地不穩(wěn)定。為什么會(huì)產(chǎn)生這些這樣的問(wèn)題?之前一直沒(méi)有人給出解答。
?
JSD(Pr || Pg)達(dá)到較大化,有兩種可能:
概率分布不是()連續(xù)的,也就是說(shuō),它沒(méi)有密度函數(shù)。我們常見(jiàn)的分布一般都有密度函數(shù)。如果概率分布是定義在一個(gè)低維的流形上(維度低于全空間),那它就不是連續(xù)的。
?
分布是連續(xù)的,但是兩者的支撐集沒(méi)有交集。兩個(gè)分布的支撐集不外乎包含以下四種情形:
經(jīng)過(guò)計(jì)算可以發(fā)現(xiàn)(參見(jiàn)下期推送),case1 的JSD小于log2,case2的JSD等于log2,case3和4的JSD也不超過(guò)log2。實(shí)際上這很好理解,兩個(gè)分布差異越大,交叉熵越大。
?
這是比較直觀的解釋,更進(jìn)一步地,作者從理論上進(jìn)行了嚴(yán)格的分析和證明。
?
GAN存在的問(wèn)題:理論分析
?
Lemma 1:設(shè)
是一個(gè)由仿射變換和逐點(diǎn)定義的非線性函數(shù)(ReLU、leaky ReLU或者諸如sigmoid、tanh、softplus之類的光滑嚴(yán)格遞增函數(shù))復(fù)合得到的復(fù)合函數(shù),則g(Z)包含在可數(shù)多個(gè)流形的并集中,并且它的維數(shù)至多為dim(Z)。因此,若dim(Z) < dim(X),則g(Z)在X中測(cè)度為0。
?
Lemma1表明,若generator(G)是一個(gè)神經(jīng)網(wǎng)絡(luò),并且G的輸入(隨機(jī)高斯噪聲)的維數(shù)比產(chǎn)生的圖像的維數(shù)低,則無(wú)論怎樣訓(xùn)練,G也只能產(chǎn)生整個(gè)圖像空間中很小的部分,有多小呢?它在圖像空間中只是一個(gè)零測(cè)集。零測(cè)集是什么概念呢,舉些例子,二維空間中的一條直線、三維空間中的一個(gè)平面。二維平面在三維空間中是沒(méi)有“厚度”的,它的體積是0。
?
我們訓(xùn)練GAN時(shí),訓(xùn)練集總歸是有限的,Pr一般可以看成是低維的流形;如果Pg也是低維流形,或者它與Pr的支撐集沒(méi)有交集,則在discriminator (D)達(dá)到最優(yōu)時(shí),JSD就會(huì)被較大化。D達(dá)到最優(yōu)將導(dǎo)致G的梯度變得異常地差,訓(xùn)練將變得異常不穩(wěn)定。
下面的幾個(gè)定理、引理就是在證明Pg在上述兩種情況下,最優(yōu)的D是存在的。
?
Theorem2.1: 若分布Pr和Pg的支撐集分別包含在兩個(gè)無(wú)交緊致子集M和P中,則存在一個(gè)光滑的最優(yōu)discriminator D*: X -> [0,1],它的精度是1,并且,對(duì)任意的
定理2.1是什么意思呢?如果兩個(gè)概率分布的支撐集沒(méi)有交集,則完美的D總是存在的,并且(在兩個(gè)分布的支撐集的并集上)D的梯度為0,也就是說(shuō),這時(shí)候任何梯度算法都將失效。這就是GAN訓(xùn)練的時(shí)候,(在兩個(gè)概率分布的支撐集沒(méi)有交集的情況下)當(dāng)D訓(xùn)練效果很好的時(shí)候,G的更新將變得很差的原因。
?
Lemma2: 設(shè)M和P是R^d的兩個(gè)非滿維度的正則子流形,再設(shè)η 和 η’ 是任意的兩個(gè)獨(dú)立連續(xù)隨機(jī)變量,定義兩個(gè)擾動(dòng)流形M’ = M + η,P’ = P + η’,則
Lemma 2是為定理2.2做準(zhǔn)備,它表明任意兩個(gè)非滿維的正則子流形都可以通過(guò)微小的擾動(dòng)使得它們不是完美對(duì)齊(notperfectly align)的,即它們的交點(diǎn)都是橫截相交(intersect transversally)的。橫截相交和完美對(duì)齊的嚴(yán)謹(jǐn)定義將在下期推送中給出,在這里形象地說(shuō)明一下:
?
橫截相交(intersect transversally):對(duì)兩個(gè)子流形,在任意一個(gè)交點(diǎn)處,兩者的切平面能夠生成整個(gè)空間,則稱兩個(gè)子流形橫截相交。當(dāng)然,如果它們沒(méi)有交集,則根據(jù)定義,它們天然就是橫截相交的。下圖給出了一個(gè)示例,在交點(diǎn)P處,平面的切平面是其自身,直線的切平面也是其自身,它們可以張成全空間,因此是橫截相交的,而兩個(gè)直線沒(méi)辦法張成全空間,因此不是橫截相交的;如果兩個(gè)流形是相切的,在切點(diǎn)處它們的切平面是相同的,也不可能張成全空間,因此也不是橫截相交的。
完美對(duì)齊(perfectly align): 如果兩個(gè)子流形有交集,并且在某個(gè)交點(diǎn)處,它們不是橫截相交的。
?
Pr和Pg的支撐集如果存在交集,那么根據(jù)lemma2,我們總可以通過(guò)微小的擾動(dòng)使得它們不是完美對(duì)齊的,也就是說(shuō),它們是橫截相交的。
?
Lemma3: 設(shè)M和P是R^d的兩個(gè)非完美對(duì)齊,非滿維的正則子流形,L=M∩P,若M和P無(wú)界,則L也是一個(gè)流形,且維數(shù)嚴(yán)格低于M和P的維數(shù)。若它們有界,則L是至多四個(gè)維數(shù)嚴(yán)格低于全空間的流形之并。無(wú)論哪種情形,L在M或者P中的測(cè)度均為0。
?
Lemma 3說(shuō)的是,兩個(gè)正則子流形(滿足一定條件:非完美對(duì)齊,非滿維)的交集的維數(shù)要嚴(yán)格低于它們自身的維數(shù)。也就是說(shuō),它們的交集只是冰山一角,小到相對(duì)它們自身可以忽略。對(duì)于Pr和Pg的支撐集來(lái)說(shuō),根據(jù)Lemma 2,我們總可以通過(guò)微小擾動(dòng)使得它們是非完美對(duì)齊的,在根據(jù)Lemma 3,Pr和Pg的交集是微不足道。
?
Theorem2.2: 設(shè)Pr和Pg分別是支撐集包含在閉流形M和P中的兩個(gè)分布,且它們非完美對(duì)齊、非滿維。進(jìn)一步地,我們假設(shè)Pr和Pg在各自的流形中分別連續(xù),即:若集合A在M中測(cè)度為0,則Pr(A) = 0(在Pg上也有類似結(jié)果)。則存在精度為1的最優(yōu)discriminator D*: X->[0,1],并且?guī)缀鯇?duì)M 或者P中的任意點(diǎn)x,D*在x的任意鄰域內(nèi)總是光滑的,且有
定理2.1證明的是對(duì)于Pr和Pg無(wú)交的情形下,最優(yōu)的discriminator是存在的。定理2.2承接Lemma 3,它證明了在Pr和Pg的支撐集有交集,且橫截相交的情況下,最優(yōu)的discriminator是存在的。這兩個(gè)定理實(shí)際上把兩種可能導(dǎo)致D最優(yōu),且梯度消失的情形在理論上做出證明,由于梯度的消失,G的更新將得不到足夠的梯度,導(dǎo)致G很差。
?
Theorem2.3: 在定理2.2的條件下,有
定理2.3表明,隨著D越來(lái)越好,D的loss將越來(lái)越小,趨于0,因此Pr和Pg的JSD被較大化,達(dá)到較大值log2,這時(shí),Pr和Pg的交叉熵達(dá)到無(wú)窮大,也就是說(shuō),即使兩個(gè)分布之間的差異任意地小,它們之間的KL散度仍然會(huì)被較大化,趨于無(wú)窮。這是什么意思呢?利用KL散度來(lái)衡量分布間的相似性在這里并不是一個(gè)好的選擇。因此,我們有必要尋求一個(gè)更好的衡量指標(biāo)。
?
定理2.4 探究了generator在前面所述情況下回出現(xiàn)什么問(wèn)題,它從理論上給出了,若G采用original cost function(零和博弈),那么它的梯度的上界被D與最優(yōu)的D*之間的距離bound住。說(shuō)人話就是,我們訓(xùn)練GAN的時(shí)候,D越接近最優(yōu)的D*,則G的梯度就越小,如果梯度太小了,梯度算法不能引導(dǎo)G變得更好。下圖給出了G的梯度變化(固定G,訓(xùn)練D),注意到隨著訓(xùn)練的進(jìn)行,D將變得越來(lái)越較精確,這時(shí)G的梯度強(qiáng)度將變得越來(lái)越小,與理論分析符合。
定理2.5研究了G的loss為the –logD cost時(shí)將會(huì)出現(xiàn)的問(wèn)題。我們可以看到,當(dāng)JSD越大時(shí),G的梯度反而會(huì)越小,也就是說(shuō),它可能會(huì)引導(dǎo)兩個(gè)分布往相異的方向,此外,上式的KL項(xiàng)雖對(duì)產(chǎn)生無(wú)意義圖像會(huì)有很大的懲罰,但是對(duì)mode collapse懲罰很小,也就是說(shuō),GAN訓(xùn)練時(shí)很容易落入局部最優(yōu),產(chǎn)生mode collapse。KL散度不是對(duì)稱的,但JSD是對(duì)稱的,因此JSD并不能改變這種狀況。這就是我們?cè)谟?xùn)練GAN時(shí)經(jīng)常出現(xiàn)mode collapse的原因。
?
定理2.6告訴我們,若G采用the –logD cost,在定理2.1或者2.2的條件下,當(dāng)D與D*足夠接近時(shí),G的梯度會(huì)呈現(xiàn)強(qiáng)烈震蕩,這也就是說(shuō),G的更新會(huì)變得很差,可能導(dǎo)致GAN訓(xùn)練不穩(wěn)定。
?
下圖給出了定理2.6的實(shí)驗(yàn)?zāi)M的效果,在DCGAN尚未收斂時(shí),固定G,訓(xùn)練D將導(dǎo)致G的梯度產(chǎn)生強(qiáng)烈震蕩。當(dāng)DCGAN收斂時(shí),這種震蕩得到有效的抑制。
既然general GAN采用的loss不是一種好的選擇,有什么loss能夠有效避免這種情形嗎?
?
一個(gè)臨時(shí)解決方案
一個(gè)可行的方案是打破定理的條件,給D的輸入添加噪聲。后續(xù)的幾個(gè)定理對(duì)此作了回答。
定理3.1和推論3.1表明,ε的分布會(huì)影響我們對(duì)距離的選擇。
定理3.2證明了G的梯度可以分為兩項(xiàng),第一項(xiàng)表明,G會(huì)被引導(dǎo)向真實(shí)數(shù)據(jù)分布移動(dòng),第二項(xiàng)表明,G會(huì)被引導(dǎo)向概率很高的生成樣本遠(yuǎn)離。作者指出,上述的梯度格式具有一個(gè)很嚴(yán)重的問(wèn)題,那就是由于g(Z)是零測(cè)集,D在優(yōu)化時(shí)將忽略該集合;然而G卻只在該集合上進(jìn)行優(yōu)化。進(jìn)一步地,這將導(dǎo)致D極度容易受到生成樣本的影響,產(chǎn)生沒(méi)有意義的樣本。
對(duì)D的輸入添加噪聲,在訓(xùn)練的過(guò)程中將引導(dǎo)噪聲樣本向真實(shí)數(shù)據(jù)流形的方向移動(dòng),可以看成是引導(dǎo)樣本的一個(gè)小鄰域向真實(shí)數(shù)據(jù)移動(dòng)。這可以解決D極度容易受到生成樣本的影響的問(wèn)題。
Wasserstein距離
定義3.1: X上的兩個(gè)分布P、Q的Wasserstein度量W(P,Q)定義為
其中,Г是X×X上所有具有邊界分布P和Q的聯(lián)合分布集。
?
Wasserstein距離通常也稱為轉(zhuǎn)移度量或者EM距離(地動(dòng)距離),它表示從一個(gè)分布轉(zhuǎn)移成另一個(gè)分布所需的最小代價(jià)。下圖給出了一個(gè)離散分布下的例子,將f1(x)遷移成f2(x)最小代價(jià)即是移動(dòng)f1(x)在較大值處的2個(gè)單位的概率到最小值處,這樣就得到了分布f2(x)。更復(fù)雜的離散情形需要通過(guò)求解規(guī)劃問(wèn)題。
定理3.3告訴我們一個(gè)有趣的事實(shí),上式右邊兩項(xiàng)均能被控制。第一項(xiàng)可以通過(guò)逐步減小噪聲來(lái)逐步減小;第二項(xiàng)可以通過(guò)訓(xùn)練GAN(給D的輸入添加噪聲)來(lái)最小化。
?
作者指出,這種通過(guò)給D的輸入添加噪聲的解決方案具有一大好處,那就是我們不需要再擔(dān)心訓(xùn)練過(guò)程。由于引入了噪聲,我們可以訓(xùn)練D直到最優(yōu)而不會(huì)遇到G的梯度消失或者訓(xùn)練不穩(wěn)定的問(wèn)題,此時(shí)G的梯度可以通過(guò)推論3.2給出。
?
總而言之,WGAN的前傳從理論上研究了GAN訓(xùn)練過(guò)程中經(jīng)常出現(xiàn)的兩大問(wèn)題:G的梯度消失、訓(xùn)練不穩(wěn)定。并且提出了利用地動(dòng)距離來(lái)衡量Pr和Pg的相似性、對(duì)D的輸入引入噪聲來(lái)解決GAN的兩大問(wèn)題,作者證明了地動(dòng)距離具有上界,并且上界可以通過(guò)有效的措施逐步減小。
?
這可以說(shuō)是一個(gè)臨時(shí)性的解決方案,作者甚至沒(méi)有給出實(shí)驗(yàn)進(jìn)行驗(yàn)證。在WGAN[2]這篇文章中,作者提出了更完善的解決方案,并且做了實(shí)驗(yàn)進(jìn)行驗(yàn)證。下面我們就來(lái)看一下這篇文章。
?
Wasserstein GAN
?
常見(jiàn)距離
Martin Arjovsky在WGAN論文進(jìn)一步論述了為什么選擇Wasserstein距離(地動(dòng)距離)。
設(shè)X是一個(gè)緊致度量空間,我們這里討論的圖像空間([0,1]^d)就是緊致度量空間。用Σ表示X上的所有博雷爾集,用Prob(X)表示定義在X上的概率度量空間。給定Prob(X)上的兩個(gè)分布Pr, Pg,我們可以定義它們的距離/散度(請(qǐng)注意:散度不是距離,它不是對(duì)稱的。距離和散度都可以用于衡量?jī)蓚€(gè)分布的相似程度):
表示以Pr, Pg為邊緣分布的所有聯(lián)合分布組成的集合。
我們用一個(gè)簡(jiǎn)單的例子來(lái)看一下這四種距離/散度是怎么計(jì)算的。
?
考慮下圖的兩個(gè)均勻分布:
二維平面上,P1是沿著y軸的[0,1]區(qū)間上的均勻分布,P2是沿著x=θ,在y軸的[0,1]區(qū)間上的均勻分布。簡(jiǎn)而言之,你可以把P1和P2看成是兩條平行的線段。容易計(jì)算
當(dāng)θ->0時(shí),W->0,然而TV距離、KL散度、JS散度都不收斂。也就是說(shuō),地動(dòng)距離對(duì)某些情況下要更合理一些。更嚴(yán)謹(jǐn)?shù)慕Y(jié)論由下面的定理給出。
PS: 為了統(tǒng)一編號(hào),后續(xù)的定理編號(hào)與原文[2]的編號(hào)不一樣,兩種編號(hào)相差3...
?
?
3. 上述兩個(gè)結(jié)論對(duì)JS散度和KL散度均不成立。
?
定理4表明,地動(dòng)距離與JS散度、KL散度相比,具有更好的性質(zhì)。
定理5表明,如果分布的支撐集在低維流形上,KL散度、JS散度和TV距離并不是好的loss,而地動(dòng)(EM)距離則很合適。這啟發(fā)我們可以用地動(dòng)距離來(lái)設(shè)計(jì)loss以替換原來(lái)GAN采用的KL散度。
WGAN
采用Wasserstein距離作為loss的GAN稱為WassersteinGAN,一般簡(jiǎn)寫(xiě)為WGAN。直接考慮Wasserstein距離需要算inf,計(jì)算是很困難的。考慮它的Kantorovich-Rubinstein對(duì)偶形式
可以看到,如果把GAN的目標(biāo)函數(shù)的log去掉,則兩者只相差一個(gè)常數(shù),也就是說(shuō),WGAN在訓(xùn)練的時(shí)候與GAN幾乎一樣,除了loss計(jì)算的時(shí)候不取對(duì)數(shù)!Loss function中的對(duì)數(shù)函數(shù)導(dǎo)致了GAN訓(xùn)練的不穩(wěn)定!
定理6證明了若D和G的學(xué)習(xí)能力足夠強(qiáng)的話(因此目標(biāo)函數(shù)能夠被較大化),WGAN是有解的。WGAN的算法流程如下:
WGAN實(shí)驗(yàn)
作者發(fā)現(xiàn),如果WGAN訓(xùn)練采用SGD或者RMSProp算法,則收斂效果很好。一般不采用基于momentum的算法,如Adam算法,實(shí)現(xiàn)觀察發(fā)現(xiàn)這類優(yōu)化算法會(huì)導(dǎo)致訓(xùn)練變得不穩(wěn)定。而我們知道,DCGAN采用Adam算法進(jìn)行優(yōu)化效果會(huì)比較好。這是WGAN與GAN訓(xùn)練方法的差別。
?
此外,WGAN當(dāng)前的loss(Wasserstein距離)能夠用于指示訓(xùn)練的效果,即G產(chǎn)生的圖像質(zhì)量,Wasserstein距離越小,G產(chǎn)生的圖像質(zhì)量就越高。先前的GAN由于訓(xùn)練不穩(wěn)定,我們很難通過(guò)loss去判斷G產(chǎn)生的質(zhì)量(先前的GAN的loss大小并不能表明產(chǎn)生圖像質(zhì)量的高低)。這個(gè)發(fā)現(xiàn)對(duì)于訓(xùn)練GAN有很大的幫助。
?
此外,WGAN如果采用DCGAN架構(gòu)去訓(xùn)練,產(chǎn)生的圖像質(zhì)量效果與DCGAN沒(méi)有明顯差異;并且,即使generator采用MLP(多層感知機(jī)),仍然能夠產(chǎn)生質(zhì)量不錯(cuò)的圖像。實(shí)驗(yàn)結(jié)果如下圖所示(圖中的曲線不會(huì)跟GAN一樣產(chǎn)生強(qiáng)烈震蕩了!)。
此外,作者指出,WGAN的實(shí)驗(yàn)中并沒(méi)有發(fā)現(xiàn)mode collapse!
WGAN代碼及材料
?
Reddit討論區(qū)傳送門(mén):
https://www.reddit.com/r/MachineLearning/comments/5qxoaz/r_170107875_wasserstein_gan/?from=groupmessage
?
推薦一篇用更通俗易懂的語(yǔ)言介紹WGAN的文章:
https://zhuanlan.zhihu.com/p/25071913
?
WGAN源碼,作者提供,Torch版本:
https://github.com/martinarjovsky/WassersteinGAN
Tensorflow版本:https://github.com/Zardinality/WGAN-tensorflow
Keras版本:
https://github.com/tdeboissiere/DeepLearningImplementations/tree/master/WassersteinGAN
?
參考文獻(xiàn)
Arjovsky, M., & Bottou, L.eon. (2017). Towards Principled Methods for Training Generative AdversarialNetworks.
Arjovsky, M., Soumith, C.,& Bottou, L. eon. (n.d.). Wasserstein GAN.
總結(jié)
以上是生活随笔為你收集整理的GAN背后的理论依据,以及为什么只使用GAN网络容易产生的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Win10+GTX 1080Ti+Ana
- 下一篇: 帮助理解GAN的一些补充内容