【GANs学习笔记】(三)GANs理论基础
完整筆記:http://www.gwylab.com/note-gans.html
——————————————————————-
第二章 GANs的理論與提升
?????? 本章會(huì)介紹一些與提升和改進(jìn)GANs相關(guān)的paper,這涉及到一些與GANs理論相關(guān)的知識(shí),在第一部分會(huì)用較簡(jiǎn)短的話語(yǔ)介紹一些GANs的相關(guān)核心理論,第二部分是GANs存在的一些缺陷和改進(jìn)手段,第三部分會(huì)介紹一個(gè)很有趣的paper――fGAN,它能幫助我們更深的理解GANs的算法思想,第四部分開始就是更多的paper,它們會(huì)用到一些很有意思的tricks去提升和改進(jìn)GANs。
1. GANs相關(guān)理論
?????? GANs本質(zhì)上在做的事情是什么?
?????? 我們假設(shè)把每一個(gè)圖片看作二維空間中的一個(gè)點(diǎn),并且現(xiàn)有圖片會(huì)滿足于某個(gè)數(shù)據(jù)分布,我們記作Pdata(x)。以人臉舉例,在很大的一個(gè)圖像分布空間中,實(shí)際上只有很小一部分的區(qū)域是人臉圖像。如上圖所示,只有在藍(lán)色區(qū)域采樣出的點(diǎn)才會(huì)看起來(lái)像人臉,而在藍(lán)色區(qū)域以外的區(qū)域采樣出的點(diǎn)就不是人臉。今天我們需要做的,就是讓機(jī)器去找到人臉的分布函數(shù)。具體來(lái)說(shuō),就是我們會(huì)有很多人臉圖片數(shù)據(jù),我們觀測(cè)這些數(shù)據(jù)的分布,大致能猜測(cè)到哪些區(qū)域出現(xiàn)人臉圖片數(shù)據(jù)的概率比較高,但是如果讓我們找出一個(gè)具體的定義式,去給明這些人臉圖片數(shù)據(jù)的分布規(guī)律,我們是沒(méi)有辦法做到的。但是如今,我們有了機(jī)器學(xué)習(xí),希望機(jī)器能夠?qū)W習(xí)到這樣一個(gè)分布規(guī)律,并能夠給出一個(gè)極致貼合的表達(dá)式。
?????? 在GANs出現(xiàn)之前,人們采用的方法是Maximum Likelihood Estimation。
?????? 簡(jiǎn)單來(lái)說(shuō),就是我們有一個(gè)生成器和一組參數(shù) θ,我們還有從真實(shí)分布Pdata(x)中sample出的數(shù)據(jù){},我們不知道數(shù)據(jù)的真實(shí)分布具體長(zhǎng)什么樣,但是我們希望不斷地調(diào)整和θ,讓越接近越好。具體的做法是,對(duì)于每一組參數(shù)θ和真實(shí)分布的抽樣,我們能夠計(jì)算出參數(shù)θ下的生成器生成該真實(shí)抽樣的likelihood,于是我們希望找到一個(gè)最佳的參數(shù)組,使得生成器的結(jié)果最接近,也就是對(duì)于每個(gè)真實(shí)抽樣的likelihood都最大,這等價(jià)于所有真實(shí)抽樣的likelihood的乘積最大,那原始問(wèn)題就轉(zhuǎn)換為如下這個(gè)最大似然問(wèn)題:
?????? 下面我們需要求解這個(gè)maximizing the likelihood問(wèn)題,我們先證明,它其實(shí)等價(jià)于求minimize KL divergence(KL divergence是一個(gè)衡量?jī)蓚€(gè)分布之間的差異的計(jì)算式)問(wèn)題。
?????? 首先我們加上一個(gè)對(duì)數(shù)log,將累乘轉(zhuǎn)化為累加問(wèn)題。然后再將累加轉(zhuǎn)化為期望問(wèn)題
?????? 然后這個(gè)期望也就是積分問(wèn)題:
?????? 因?yàn)槭?span lang="EN-US">arg max,后面可以再補(bǔ)上一項(xiàng):
?????? 補(bǔ)完之后的式子便剛好等價(jià)于與的KL Divergence的最小化求解。
?????? 現(xiàn)在這個(gè)KL Divergance的最小化問(wèn)題如何求解呢?我們不介紹傳統(tǒng)的數(shù)學(xué)方法求解了,我們下面考慮引用neural network。
?????? 我們把這個(gè)neural network稱作generator。通過(guò)上述的分析我們知道,我們需要訓(xùn)練出這樣的generator,對(duì)于一個(gè)已知分布的數(shù)據(jù)z,它可以把數(shù)據(jù)z轉(zhuǎn)化成一個(gè)未知分布的數(shù)據(jù)x,這個(gè)未知分布可以與z所在的分布完全不一樣,我們把它稱作,并且我們希望與之間的Divergence越小越好。如果能找到這樣的,那也就意味著我們找到了真實(shí)數(shù)據(jù)分布的近似解,也就意味著我們能夠生成各種各樣符合真實(shí)分布規(guī)律的數(shù)據(jù)。
?????? 現(xiàn)在一個(gè)最關(guān)鍵的問(wèn)題是,這個(gè)Divergence要如何計(jì)算出來(lái)呢?理論上來(lái)說(shuō)我們不知道是什么,我們也不知道是什么,因此Divergence是我們無(wú)法計(jì)算的。但是,人無(wú)法計(jì)算的東西,交給神經(jīng)網(wǎng)絡(luò)或許就知道如何計(jì)算了。于是,我們新建了一個(gè)neural network,專門來(lái)量與之間的Divergence,這個(gè)neural network,就叫做Discriminator。
?????? 如上圖所示,藍(lán)色星星是從中sample出的數(shù)據(jù),黃色星星是從中sample出的數(shù)據(jù),現(xiàn)在交給Discriminator去判別讀入數(shù)據(jù)是來(lái)自還是,實(shí)際上就是在衡量與之間的Divergence,因?yàn)槿绻咧g的Divergence越大,Discriminator就會(huì)給的數(shù)據(jù)更低的分?jǐn)?shù),給的數(shù)據(jù)更高的分?jǐn)?shù);而如果二者之間的Divergence越小,Discriminator就會(huì)給二者的分?jǐn)?shù)越接近;當(dāng)與完全一致時(shí),也就是Divergence=0時(shí),
Discriminator給二者的分?jǐn)?shù)就都是0.5了。
?????? 當(dāng)然,上述只是我們直觀上覺(jué)得說(shuō),Discriminator是與Divergence有關(guān)的,下面我們需要用數(shù)學(xué)方法證明:Discriminator真的可以衡量Divergence的值。我們先來(lái)看一下Discriminator的目標(biāo)式:
?????? 這個(gè)式子很好理解,如果來(lái)源x~,D(x)盡可能高;如果來(lái)源x~,D(x)盡可能低。下面我們求解一下這個(gè)目標(biāo)式。
?????? 首先將目標(biāo)式轉(zhuǎn)化為一個(gè)積分:
?????? 我們假設(shè)D(x)可以是任意函數(shù)。那么現(xiàn)在這個(gè)表達(dá)式,對(duì)于所有的x,計(jì)算出一個(gè)表達(dá)式,使得所有表達(dá)式的積分求和最大,這等價(jià)于,如果對(duì)于每一個(gè)表達(dá)式,我們能找到一個(gè)D的取值,使得這個(gè)表達(dá)式的最大,那么最終所有表達(dá)式的積分求和也最大,即:
?????? 這個(gè)方程的求解非常容易,最后的結(jié)果是;
?????? 現(xiàn)在把代入到目標(biāo)表達(dá)式中得到:
?????? 進(jìn)一步變形(分子分母同除以2),轉(zhuǎn)化為:
?????? 這個(gè)表達(dá)式等價(jià)為:
?????? 至此,我們證明了,最大化V(G,D)問(wèn)題的求解實(shí)際上就是在求解與之間JS Divergence的值(與前面提到的KL Divergence可以認(rèn)為是等效的)。
?????? 于是,我們可以再回到Generator要解決的問(wèn)題上:
?????? Generator的目的,是讓產(chǎn)生數(shù)據(jù)與真實(shí)數(shù)據(jù)之間的Divergence最小,本來(lái)Divergence是沒(méi)有辦法計(jì)算的,但是現(xiàn)在有了Discriminator之后,Divergence變得可以計(jì)算了,于是Generator的新的目標(biāo)表達(dá)式變?yōu)?#xff1a;
?????? 接下來(lái)我們需要求解這個(gè)表達(dá)式。值得注意的是,在實(shí)際的網(wǎng)絡(luò)訓(xùn)練中,discriminator與generator是交替訓(xùn)練的,并且是先訓(xùn)練discriminator再訓(xùn)練generator,因此,當(dāng)generator需要求解上述表達(dá)式的時(shí)候,discriminator是已經(jīng)訓(xùn)練好的,于是這個(gè)式子就可以寫成L(G),目標(biāo)表達(dá)式就轉(zhuǎn)化成:
?????? 這是一個(gè)最初級(jí)的目標(biāo)表達(dá)式,用基本的gradient descent就能求解:
?????? 綜上,我們求解出了Disciminator,然后我們也求解出了Generator,下面我們先用一個(gè)完整的算法來(lái)回顧一下這整套流程,然后我們會(huì)反思目前的這套架構(gòu)是否已經(jīng)是完美的。
?????? 第一個(gè)部分是訓(xùn)練discriminator,先從真實(shí)數(shù)據(jù)分布中抽樣,然后從先驗(yàn)分布中抽樣z,并通過(guò)generator產(chǎn)生仿造數(shù)據(jù),接著把和丟入discriminator中訓(xùn)練,使得目標(biāo)函數(shù)最大;第二個(gè)部分是訓(xùn)練generator,從先驗(yàn)分布中抽樣新的z,接著把丟入generator中訓(xùn)練,使得目標(biāo)函數(shù)最小。這樣循環(huán)交替,最終generator產(chǎn)生的數(shù)據(jù)就會(huì)越來(lái)越接近真實(shí)數(shù)據(jù)。
總結(jié)
以上是生活随笔為你收集整理的【GANs学习笔记】(三)GANs理论基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: win10 鼠标指针
- 下一篇: 【GBase 8a MPP数据库集群】函