3 GANs 如何工作?
我們現(xiàn)在已經(jīng)看過了幾種其他的生成式模型部脚,并解釋了 GANs 與他們的不同原理译秦。但是 GANs 是如何工作的呢?
3.1 GAN 框架
GANs 的基本思想是設(shè)置兩個(gè)參與人的博弈劣纲。其中一個(gè)是生成器(generator)逢捺。生成器產(chǎn)生來自和訓(xùn)練樣本一樣的分布的樣本。另外一個(gè)判別器(discriminator)味廊。判別器檢查這些樣本來確定他們是真實(shí)的還是偽造的蒸甜。判別器使用傳統(tǒng)的監(jiān)督學(xué)習(xí)技術(shù)進(jìn)行訓(xùn)練,將輸入分成兩類(真實(shí)的或者偽造的)余佛。生成器訓(xùn)練的目標(biāo)就是欺騙判別器柠新。我們可以將生成器當(dāng)做一個(gè)偽鈔制造者,而判別器是警察辉巡,想要找出偽鈔恨憎。為了在這樣的博弈中取勝,偽鈔制造者必須學(xué)會(huì)制造出與真幣相似的偽鈔,生成器網(wǎng)絡(luò)必須學(xué)會(huì)產(chǎn)生出和訓(xùn)練數(shù)據(jù)一致的分布的樣本憔恳。圖 12 解釋了這個(gè)過程瓤荔。
形式上看,GANs 是一種結(jié)構(gòu)化概率模型(參看 Goodfellow 等人書的第 16 章)包含了隱含變量 z 和可觀測(cè)變量 x钥组。圖結(jié)構(gòu)在圖 13 展示输硝。
博弈中的兩個(gè)參與人由兩個(gè)函數(shù)表示,每個(gè)都是關(guān)于輸入和參數(shù)可微分的程梦。判別器是一個(gè)以 x 作為輸入和使用 θ(D) 為參數(shù)的函數(shù) D 定義点把。生成器由一個(gè)以 z 為輸入使用 θ(G) 為參數(shù)的函數(shù) G 定義。
兩個(gè)參與人有用兩個(gè)參與人的參數(shù)定義的代價(jià)函數(shù)屿附。判別器希望僅控制住 θ(D) 情形下最小化 J(D)( θ(D), θ(G))郎逃。生成器希望在僅控制 θ(D) 情形下最小化 J(G)( θ(D), θ(G))。因?yàn)槊總€(gè)參與人的代價(jià)依賴于其他參與人的參數(shù)挺份,但是每個(gè)參與人不能控制別人的參數(shù)褒翰,這個(gè)場(chǎng)景其實(shí)更為接近一個(gè)博弈而非優(yōu)化問題。優(yōu)化問題的解是一個(gè)局部最小匀泊,這是參數(shù)空間的點(diǎn)其鄰居有著不小于它的代價(jià)优训。而對(duì)一個(gè)博弈的解釋一個(gè)納什均衡。這里我們使用局部可微分 Nash 均衡這個(gè)術(shù)語各聘。在這樣的設(shè)定下型宙,Nash 均衡是一個(gè)元組,( θ(D), θ(G)) 既是關(guān)于θ(D)的 J(D) 的局部最小值和也是關(guān)于θ(G)的 J(G) 局部最小值伦吠。
生成器 生成器是一個(gè)可微分函數(shù) G妆兑。當(dāng) z 從某個(gè)簡(jiǎn)單的先驗(yàn)分布中采樣出來時(shí),G(z) 產(chǎn)生一個(gè)從 pmodel 中的樣本 x毛仪。一般來說搁嗓,深度神經(jīng)網(wǎng)絡(luò)可以用來表示 G。注意函數(shù) G 的輸入不需要和深度神經(jīng)網(wǎng)絡(luò)的第一層的輸入相同箱靴;輸入可能放在網(wǎng)絡(luò)的任何地方腺逛。例如,我們可以將 z 劃分成兩個(gè)向量 z(1) 和 z(2)衡怀,然后讓 z(1) 作為神經(jīng)網(wǎng)絡(luò)的第一層的輸入棍矛,將 z(2) 作為神經(jīng)網(wǎng)絡(luò)的最后一層的輸入。如果 z(2) 是 Gaussian抛杨,這就使得 x 成為 z(1) 條件高斯够委。另外一個(gè)流行的策略是將噪聲加到或者乘到隱含層或者將噪聲拼接到神經(jīng)網(wǎng)絡(luò)的隱含層上〔老郑總之茁帽,我們看到其實(shí)對(duì)于生成式網(wǎng)絡(luò)只有很少的限制玉罐。如果我們希望 pmodel 是 x 空間的支集(support),我們需要 z 的維度需要至少和 x 的維度一樣大潘拨,而且 G 必須是可微分的吊输,但是這些其實(shí)就是僅有的要求了。特別地铁追,注意到使用非線性 ICA 方法的任何模型都可以成為一個(gè) GAN 生成器網(wǎng)絡(luò)季蚂。GANs 和變分自編碼器的關(guān)系更加復(fù)雜一點(diǎn);一方面 GAN 框架可以訓(xùn)練一些 VAE 不能的訓(xùn)練模型琅束,反之亦然癣蟋,但是兩個(gè)框架也有很大的重合部分。 最為顯著的差異是狰闪,如果采用標(biāo)準(zhǔn)的反向傳播,VAEs 不能在生成器輸入有離散變量濒生,而 GANs 不能夠在生成器的輸出層有離散變量埋泵。
訓(xùn)練過程 訓(xùn)練過程包含同時(shí)隨機(jī)梯度下降 simultaneous SGD。在每一步罪治,會(huì)采樣兩個(gè) minibatch:一個(gè)來自數(shù)據(jù)集的 x 的 minibatch 和一個(gè)從隱含變量的模型先驗(yàn)采樣的 z 的 minibatch丽声。然后兩個(gè)梯度步驟同時(shí)進(jìn)行:一個(gè)更新 θ(D) 來降低 J(D),另一個(gè)更新 θ(G) 來降低 J(G)觉义。這兩個(gè)步驟都可以使用你選擇的基于梯度的優(yōu)化算法雁社。 Adam (Kingmaand Ba, 2014) 通常是一個(gè)好的選擇。很多作者推薦其中某個(gè)參與人運(yùn)行更多步驟晒骇,但是在 2016 年的年末霉撵,本文作者觀點(diǎn)是最好的機(jī)制就是同時(shí)梯度下降,每個(gè)參與人都是一步洪囤。
3.2 代價(jià)函數(shù)
有幾種不同的代價(jià)函數(shù)可以用在 GANs 框架中徒坡。
3.2.1 判別器的代價(jià) J(D)
目前為 GANs 設(shè)計(jì)的所有不同的博弈針對(duì)判別器 J(D) 使用了同樣的代價(jià)函數(shù)。他們僅僅是生成器 J(G) 的代價(jià)函數(shù)不同瘤缩。
判別器的代價(jià)函數(shù)是:
這其實(shí)就是標(biāo)準(zhǔn)的訓(xùn)練一個(gè) sigmoid 輸出的標(biāo)準(zhǔn)的二分類器交叉熵代價(jià)喇完。唯一的不同就是分類器在兩個(gè) minibatch 的數(shù)據(jù)上進(jìn)行訓(xùn)練;一個(gè)來自數(shù)據(jù)集(其中的標(biāo)簽均是 1)剥啤,另一個(gè)來自生成器(其標(biāo)簽均是 0)锦溪。
GAN 博弈的所有版本都期望判別器能夠最小化(8)式。所有情況下府怯,判別器有同樣最優(yōu)策略刻诊。讀者現(xiàn)在可以嘗試一下 7.1 節(jié)的練習(xí)并在 8.1 節(jié)可以考到給出的答案。這個(gè)練習(xí)展示了如何去推到最優(yōu)的判別器策略并討論了這個(gè)解的形式的重要性牺丙。
我們發(fā)現(xiàn)通過訓(xùn)練這個(gè)判別器坏逢,能夠得到一個(gè)在每個(gè)點(diǎn) x 對(duì)下面的比例的估計(jì):
對(duì)其的估計(jì)可以讓我們計(jì)算很多的散度和梯度。這其實(shí)是將 GANs 和變分自編碼器和 Boltzmann machines 區(qū)分開的關(guān)鍵的近似技術(shù)。其他的深度生成式模型基于下界或者 Markov chain 進(jìn)行近似是整;GANs 基于監(jiān)督學(xué)習(xí)來估計(jì)兩個(gè)密度的比例來進(jìn)行近似肖揣。GANs 近似受到監(jiān)督學(xué)習(xí)的影響:過匹配或者欠匹配。原則上講浮入,有最好的優(yōu)化技術(shù)和足夠多的訓(xùn)練數(shù)據(jù)龙优,這些影響可以被克服。其他的模型使用不同的近似方法也有對(duì)應(yīng)的缺點(diǎn)事秀。
由于 GAN 框架可以被博弈論工具自然地分析彤断,我們稱 GANs “對(duì)抗”。但是我們同時(shí)也將其看做合作的易迹,因?yàn)榕袆e器估計(jì)密度之間的比例宰衙,然后自由地將這個(gè)信息分享給了生成器。從這一點(diǎn)看睹欲,判別器更加像是一名老師在教生成器如何提升效果供炼。到目前為止,合作博弈的觀點(diǎn)還沒有產(chǎn)生特定的數(shù)學(xué)形式的變化窘疮。
3.2.2 Minimax
我們目前僅僅介紹了判別器的代價(jià)函數(shù)袋哼。而這個(gè)博弈需要的完整的說明包含對(duì)生成器的代價(jià)函數(shù)介紹。
最簡(jiǎn)單的博弈版本是零和博弈闸衫,其中所有參與人的代價(jià)總是 0涛贯。在這個(gè)版本的博弈中,
因?yàn)?J(G) 和 J(D) 直接捆綁,我們可以將整個(gè)博弈通過一個(gè)指定判別器收益的值函數(shù)來進(jìn)行刻畫:
Minimax 博弈由于其理論分析的便利,大家都比較喜歡近忙。Goodfellow et al. (2014b) 使用這個(gè) GAN 博弈變體展示了在這個(gè)博弈中的學(xué)習(xí)類似于最小化數(shù)據(jù)分布和模型分布 Jensen-Shannon 散度,當(dāng)所有參與人的策略可以在函數(shù)空間直接進(jìn)行更新時(shí)衅胀,這個(gè)博弈將收斂到均衡點(diǎn)。特別地酥筝,參與人由深度神經(jīng)網(wǎng)絡(luò)表示滚躯,更新則是在參數(shù)空間中,所以這些依賴于凸性(convexity)的結(jié)論不能應(yīng)用嘿歌。
3.2.3 啟發(fā)式掸掏,非飽和博弈
在 minimax 博弈中用在生成器上的代價(jià)對(duì)理論分析很有用但是在實(shí)踐中表現(xiàn)很糟糕。
最小化目標(biāo)類和分類器預(yù)測(cè)的分布的交叉熵是很高效的宙帝,因?yàn)榇鷥r(jià)不會(huì)在分類器有錯(cuò)誤的輸出的時(shí)候飽和丧凤。最終代價(jià)會(huì)飽和到 0,但是僅僅是在分類器選擇了正確的類標(biāo)的情況下步脓。
在 minimax 博弈中愿待,判別器最小化交叉熵浩螺,但是生成器是最大化同一個(gè)交叉熵。這對(duì)于生成器是不利的仍侥,因?yàn)榕袆e器成功地以高置信度反對(duì)生成器產(chǎn)生的樣本時(shí)要出,生成器的梯度會(huì)消失。
為了解決這個(gè)問題农渊,一種方式是繼續(xù)使用交叉熵來最小化生成器患蹂。不過我們不是去改變判別器代價(jià)函數(shù)的正負(fù)號(hào)來獲得生成器的代價(jià)。我們是將用來構(gòu)造交叉熵代價(jià)的目標(biāo)的正負(fù)號(hào)砸紊。所以传于,生成器的代價(jià)函數(shù)就是:
在 minimax 博弈中,生成器最小化判別器正確的對(duì)數(shù)概率醉顽。在這個(gè)博弈中沼溜,生成器最大化判別器錯(cuò)誤的對(duì)數(shù)概率。
這個(gè)版本的博弈是啟發(fā)式激發(fā)的想法游添,而非理論上的考量系草。而唯一的動(dòng)機(jī)就是確保每個(gè)參與人在他要輸?shù)舨┺臅r(shí)有一個(gè)更強(qiáng)的梯度。
當(dāng)然否淤,這里已經(jīng)不再是零和博弈了,所以不能被描述成一個(gè)單一值函數(shù)棠隐。
3.2.4 最大似然博弈
我們可能能夠使用 GANs 進(jìn)行最大似然學(xué)習(xí)石抡,這就意味著可以最小化數(shù)據(jù)和模型之間的 KL 散度,見(4)助泽。
在第 2 節(jié)中啰扛,為了簡(jiǎn)化模型之間的對(duì)比,我們提到 GANs 可以選擇性地實(shí)現(xiàn)最大似然嗡贺。
有很多中方式能夠使用 GAN 框架來近似(4)式隐解。 Goodfellow (2014) 使用下式:
其中 σ 是 logistic sigmoid 函數(shù),等價(jià)于在假設(shè)判別式最優(yōu)的情形下最小化(4)式诫睬。這個(gè)等價(jià)關(guān)系依照期望的形式成立煞茫;實(shí)踐中,對(duì) KL 散度進(jìn)行隨機(jī)梯度下降和GAN 訓(xùn)練過程由于通過采樣(x 為最大似然而 z 為GANs)來構(gòu)造期望梯度將會(huì)按照某個(gè)方差在真實(shí)的期望梯度附近摄凡。這個(gè)等價(jià)關(guān)系可以作為一個(gè)練習(xí)(參見 7.3 節(jié)練習(xí)续徽,8.3 節(jié)答案)。
另外還有一些近似最大似然的方法亲澡。比如說 Nowozin et al. (2016).
3.2.5 選擇散度是 GANs 的突出特點(diǎn)么钦扭?
作為我們討論 GANs 如何工作的一部分,大家可能想知道什么讓 GANs 能夠產(chǎn)生更好的樣本床绪。
以前客情,很多人(包括作者本人)相信 GANs 能夠產(chǎn)生清晰真實(shí)的圖片是由于他們最小化了數(shù)據(jù)和模型之間的 Jensen-Shannon 散度而 VAEs 產(chǎn)生模糊的圖片是其最小化 KL 散度 造成的其弊。
KL 散度不是對(duì)稱的;最小化 DKL(pdata || pmodel) 和 DKL(pmodel || pdata) 并不相同膀斋。最大似然估計(jì)執(zhí)行的是前者梭伐,而最小化 Jensen-Shannon 散度某種程度上是后者。正如圖 14 所示概页,后者可能會(huì)期望得到更好的樣本因?yàn)槭褂眠@個(gè)散度訓(xùn)練的模型更傾向于生成僅僅來自訓(xùn)練分布的眾數(shù)(mode)樣本即使會(huì)忽略一些眾數(shù)籽御,而不是包含所有的眾數(shù)但是生成不來自任何訓(xùn)練數(shù)據(jù)眾數(shù)的一些樣本。
某些更新的證據(jù)表明使用 Jensen-Shannon 散度并沒有解釋為何 GANs 得到更加清晰的圖片:
- 3.2.4 節(jié)提到現(xiàn)在可以使用最大似然來訓(xùn)練 GANs 了惰匙。這些模型也能夠產(chǎn)生清晰的樣本技掏,并且也選擇了少量的眾數(shù)。參見圖 15.
- GANs 通常會(huì)從極少量的眾數(shù)中選擇生成项鬼;小于由模型容量帶來的限制哑梳。逆 KL 傾向于生成和模型能夠容納的那么多的數(shù)據(jù)分布的眾數(shù);一般不會(huì)是更少的眾數(shù)绘盟。這就意味著眾數(shù)坍縮是由于散度之外的因素導(dǎo)致鸠真。
總之,GANs 由于訓(xùn)練過程的問題選擇生成小量的眾數(shù)龄毡,并不是選擇最小化的散度導(dǎo)致吠卷。在 5.1.1 節(jié)會(huì)進(jìn)行討論。GANs 產(chǎn)生更加清晰的樣本的原因還很模糊沦零〖栏簦可能是使用 GANs 訓(xùn)練的模型族和使用 VAEs 訓(xùn)練的模型族不同(例如,用 GANs 很容易使得模型的 x 有更加復(fù)雜的分布而不僅僅是一個(gè)各向同性 isotropic 高斯條件分布在生成器的輸入上)可能是 GANs 的近似的類型有這個(gè)不同于其他框架使用的近似導(dǎo)致的效果路操。
3.2.6 代價(jià)函數(shù)的比對(duì)
我們可以講生成式網(wǎng)絡(luò)看成是一個(gè)特別的強(qiáng)化學(xué)習(xí)疾渴。不是被告知一個(gè)具體的輸出 x 應(yīng)該被關(guān)聯(lián)上每個(gè) z,生成器采取行動(dòng)并接受獎(jiǎng)勵(lì)屯仗。特別是搞坝,注意到 J(G) 沒有直接引用訓(xùn)練數(shù)據(jù),所有關(guān)于訓(xùn)練數(shù)據(jù)的信息都僅是從判別器所學(xué)到的獲得魁袜。(巧的是桩撮,這會(huì)讓 GANs 不再害怕過匹配,因?yàn)樯善鞑荒軌蛑苯訌?fù)制訓(xùn)練樣本)學(xué)習(xí)過程和傳統(tǒng)的強(qiáng)化學(xué)習(xí)也有一點(diǎn)差異:
- 生成器能夠同時(shí)觀察獎(jiǎng)勵(lì)函數(shù)的輸出和梯度
- 獎(jiǎng)勵(lì)函數(shù)不是靜止的峰弹,獎(jiǎng)勵(lì)是基于學(xué)習(xí)生成器策略的變化的判別器的距境。
在所有的情形中,我們可以將采樣過程看做是從一個(gè)特定 z 選擇開始作為一個(gè) 可以獲得獎(jiǎng)勵(lì)的 episode垮卓,而獨(dú)立的行動(dòng)對(duì)所有其他的 z 的值進(jìn)行選擇垫桂。給于生成器的獎(jiǎng)勵(lì)就是一個(gè)單個(gè)標(biāo)量值的函數(shù),D(G(z))粟按。我們通常將這個(gè)用代價(jià)(負(fù)的代價(jià))表示诬滩。生成器的代價(jià)總是在 D(G(z)) 中單調(diào)下降的霹粥,但是不同的博弈設(shè)計(jì)成讓這個(gè)代價(jià)沿著曲線不同的部分下降更快。
圖 16 展示了三個(gè)不同 GANs 的作為 D(G(z)) 函數(shù)的代價(jià)反應(yīng)曲線疼鸟。我們看到最大似然博弈結(jié)果是很高方差后控,大多數(shù)代價(jià)梯度來自很少的樣本 z 對(duì)于那些更可能是真的樣本。這個(gè)啟發(fā)式設(shè)計(jì)的非飽和代價(jià)有低的樣本方差空镜,這就可能解釋為何在實(shí)踐中更加成功了浩淘。因?yàn)檫@表明方差降低技術(shù)可以成為一個(gè)提升 GANs 性能的重要的研究領(lǐng)域,特別是基于最大似然的 GANs吴攒。
3.3 DCGAN 架構(gòu)
大多數(shù) GANs 或多或少是基于 DCGAN 架構(gòu)的 (Radford et al., 2015). DCGAN 全稱“deep, convolution GAN”张抄。盡管 GANs 在 DCGANs 前也是深的和卷積的,不過 DCGAN 就用來代表這一類風(fēng)格的架構(gòu)了洼怔。DCGAN 架構(gòu)的關(guān)鍵點(diǎn)如下:
- 使用批規(guī)范化 Batch Normalisation署惯,簡(jiǎn)稱 BN (Ioffe and Szegedy, 2015) 層,在判別器和生成器中大多數(shù)層是 BN 的镣隶,有兩個(gè)獨(dú)立的 minibatch极谊。生成器最后一層和判別器的第一層沒有 BN,所以模型可以學(xué)到數(shù)據(jù)分布的正確的均值和尺度安岂。參加圖 17轻猖。
- 總體網(wǎng)絡(luò)結(jié)構(gòu)師從 all-convolutional net(Springenberg et al., 2015). 這個(gè)架構(gòu)不含有 pooling 或者 unpooling 層。當(dāng)生成器需要增加空間維度是域那,它使用了 stride 大于 1 的轉(zhuǎn)置卷積咙边。
- 使用 Adam 優(yōu)化器而不是 SGD with momentum
在 DCGANs 前,LAPGANs 是唯一一個(gè)能規(guī)劃化到高分辨率圖像的 GAN琉雳。LAPGANs 需要一個(gè)多步驟生成過程样眠,多個(gè) GANs 產(chǎn)生在一個(gè)圖像的 Laplacian 金字塔表示不同細(xì)節(jié)的層友瘤。DCGANs 是第一個(gè)學(xué)會(huì)單步生成高分辨率圖像的 GAN翠肘。正如圖 18 所示,DCGANs 在限制的圖像領(lǐng)域能夠產(chǎn)生高質(zhì)量的圖像辫秧,比如說臥室的圖像束倍。DCGANs 同樣能夠展示 GANs 學(xué)會(huì)以很多有意義的方式來使用他們的隱含編碼,隱含空間中的簡(jiǎn)單的算術(shù)運(yùn)算也有了語義上的意義盟戏,比如圖 19 所示绪妹。
3.4 GANs 和 noise-contrastive 估計(jì)和最大似然有什么關(guān)聯(lián)?
在理解 GANs 工作原理時(shí)柿究,大家很自然地想了解他們和 noise contrastive estimation(NCE) (Gutmannand Hyvarinen, 2010)的關(guān)聯(lián)邮旷。Minimax GANs 使用 NCE 的代價(jià)函數(shù)作為值函數(shù),所以這兩個(gè)方法看起來緊密關(guān)聯(lián)蝇摸。但實(shí)際上婶肩,他們學(xué)到的非常不同的東西办陷,因?yàn)閮蓚€(gè)方法關(guān)注博弈中的不同參與人。粗略地說律歼,NCE 的目標(biāo)是學(xué)習(xí)判別器的密度模型民镜,GANs 則是學(xué)習(xí)定義生成器的采樣器。盡管這兩個(gè)任務(wù)看起來在相近险毁,其梯度完全不同制圈。令人驚奇的是,最大似然是和 NCE 更為相近的畔况,對(duì)應(yīng)于進(jìn)行一個(gè)用同樣的值函數(shù)的 minimax 博弈鲸鹦,但是使用啟發(fā)式更新策略而不是對(duì)參與人其中之一進(jìn)行梯度下降。這個(gè)在圖 20 中進(jìn)行了總結(jié)问窃。