新聞中心
生成對(duì)抗網(wǎng)絡(luò)(GAN)是一類(lèi)非常強(qiáng)大的神經(jīng)網(wǎng)絡(luò),具有非常廣闊的應(yīng)用前景。GAN 本質(zhì)上是由兩個(gè)相互競(jìng)爭(zhēng)的神經(jīng)網(wǎng)絡(luò)(生成器和判別器)組成的系統(tǒng)。

武陟網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
GAN 的工作流程示意圖
給定一組目標(biāo)樣本,生成器會(huì)試圖生成一些人造的樣本,這些生成的樣本能夠欺騙判別器將其視為真實(shí)的目標(biāo)樣本,達(dá)到「以假亂真」的目的。而判別器則會(huì)試圖將真實(shí)的(目標(biāo))樣本與虛假的(生成)樣本區(qū)分開(kāi)來(lái)。通過(guò)這樣循環(huán)往復(fù)的訓(xùn)練方法,我們最終可以得到一個(gè)能夠很好地生成與目標(biāo)樣本相似的樣本的生成器。
由于 GAN 幾乎可以學(xué)會(huì)模擬出所有類(lèi)型的數(shù)據(jù)分布,它有著非常廣泛的應(yīng)用場(chǎng)景。通常,GAN 被用來(lái)去除圖片中的人為影響、超分辨率、姿勢(shì)遷移以及任何類(lèi)型的圖像轉(zhuǎn)換,如下所示:
使用 GAN 完成的圖像變換
然而,由于 GAN 的訓(xùn)練穩(wěn)定性反復(fù)無(wú)常,使用 GAN 是十分困難的。誠(chéng)然,許多研究人員已經(jīng)提出了很好的解決方案來(lái)緩解 GAN 訓(xùn)練中涉及的一些問(wèn)題。然而,這一領(lǐng)域的研究進(jìn)展是如此之快,以至于人們很難跟上這些新的有趣的想法。本文列出了一些常用的使 GAN 訓(xùn)練穩(wěn)定的技術(shù)。
一、使用 GAN 的弊端
由于一系列原因,想要使用 GAN 是十分困難的。本節(jié)列舉出了其中的一些原因:
1. 模式崩潰
自然的數(shù)據(jù)分布是極其復(fù)雜的多模態(tài)函數(shù)(也稱(chēng)多峰函數(shù))。也就是說(shuō),數(shù)據(jù)分布有許多「峰」或「模式」。每個(gè)模態(tài)代表相似的數(shù)據(jù)樣本聚集在一起,但是與其它的模態(tài)并不相同。
在模式崩潰的情況下,生成器會(huì)生成從屬于有限模態(tài)集集合的樣本。當(dāng)生成器認(rèn)為它可以通過(guò)生成單一模式的樣本來(lái)欺騙鑒別器時(shí),就會(huì)發(fā)生這種情況。也就是說(shuō),生成器只從這種模式生成樣本。
上面一排圖片表示沒(méi)有發(fā)生模式崩潰的情況下 GAN 輸出的樣本。下面一排圖片表示發(fā)生模式崩潰時(shí) GAN 輸出的樣本。
判別器最終會(huì)發(fā)現(xiàn)這種模式是人為生成的。結(jié)果,生成器會(huì)直接轉(zhuǎn)而生成另一種模式。這樣的情況會(huì)反復(fù)循環(huán)下去,從本質(zhì)上限制了生成樣本的多樣性。詳細(xì)解釋請(qǐng)參考博客《Mode collapse in GANs》
(http://aiden.nibali.org/blog/2017-01-18-mode-collapse-gans/)
2. 收斂性
在 GAN 的訓(xùn)練過(guò)程中,一個(gè)普遍的問(wèn)題就是「何時(shí)停止訓(xùn)練 GAN 模型?」由于在判別器損失降低的同時(shí)生成器的損失會(huì)增高(反之亦然),我們并不能基于損失函數(shù)的值就來(lái)判別 GAN 的收斂性。下圖說(shuō)明了這一點(diǎn):
一張典型的 GAN 損失函數(shù)示意圖。請(qǐng)注意,此圖無(wú)法說(shuō)明 GAN 的收斂性。
3. 質(zhì)量
和前面提到的問(wèn)題一樣,很難定量地判斷生成器何時(shí)能生成高質(zhì)量的樣本。向損失函數(shù)中加入額外的感知正則化項(xiàng)可以在一定程度上幫助我們緩解這種情況。
4. 評(píng)價(jià)標(biāo)準(zhǔn)
GAN 的目標(biāo)函數(shù)說(shuō)明了生成器(G)與判別器(D)這一對(duì)相互博弈的模型相對(duì)于其對(duì)手的性能,但卻不能代表輸出樣本的質(zhì)量或多樣性。因此,我們需要能夠在目標(biāo)函數(shù)相同的情況下進(jìn)行度量的獨(dú)特的評(píng)價(jià)標(biāo)準(zhǔn)。
二、術(shù)語(yǔ)
在我們深入研究可能有助于提升 GAN 模型性能的技術(shù)之前,讓我們回顧一些術(shù)語(yǔ)。
1. 下確界及上確界
簡(jiǎn)而言之,下確界是集合的下界,上確界是集合的最小上界,「上確界、下確界」與「最小值、最大值」的區(qū)別在于下確界和上確界不一定屬于集合。
2. 散度度量
散度度量代表了兩個(gè)分布之間的距離。傳統(tǒng)的 GAN 本質(zhì)上是最小化了真實(shí)數(shù)據(jù)分布和生成的數(shù)據(jù)分布之間的 Jensen Shannon 散度(JS 散度)。GAN 的損失函數(shù)可以被改寫(xiě)為最小化其它的散度度量,例如:Kulback Leibler 散度(KL 散度)或全變分距離。通常,Wasserstein GAN 最小化了推土機(jī)距離。
3. Kantorovich Rubenstein 對(duì)偶性
我們很難使用一些散度度量的原始形式進(jìn)行優(yōu)化。然而,它們的對(duì)偶形式(用上確界替換下確界,反之亦然)可能就較為容易優(yōu)化。對(duì)偶原理為將一種形式轉(zhuǎn)化為另一種形式提供了框架。詳細(xì)解釋請(qǐng)參考博客:《Wasserstein GAN and the Kantorovich-Rubinstein Duality》
(https://vincentherrmann.github.io/blog/wasserstein/)
4. LiPSCHITZ 連續(xù)性
一個(gè) Lipschitz 連續(xù)函數(shù)的變化速度是有限的。對(duì)具備 Lipschitz 連續(xù)性的函數(shù)來(lái)說(shuō),函數(shù)曲線上任一點(diǎn)的斜率的絕對(duì)值不能超過(guò)實(shí)數(shù) K。這樣的函數(shù)也被稱(chēng)為 K-Lipschitz 連續(xù)函數(shù)。
Lipschitz 連續(xù)性是 GAN 所期望滿(mǎn)足的,因?yàn)樗鼈儠?huì)限制判別器的梯度,從而從根本上避免了梯度爆炸問(wèn)題。另外,Kantorovich-Rubinstein 對(duì)偶性要求 Wasserstein GAN 也滿(mǎn)足 Lipschitz 連續(xù)性,詳細(xì)解釋請(qǐng)參考博客:《Spectral Normalization Explained》(https://christiancosgrove.com/blog/2018/01/04/spectral-normalization-explained.html)。
三、用于提升模型性能的技術(shù)
有許多技巧和技術(shù)可以被用來(lái)使 GAN 更加穩(wěn)定和強(qiáng)大。為了保證本文的簡(jiǎn)潔性,我僅僅解釋了一些相對(duì)來(lái)說(shuō)較新或較為復(fù)雜的技術(shù)。在本節(jié)的末尾,我列舉出了其它的各種各樣的技巧和技術(shù)。
1. 替換損失函數(shù)
針對(duì) GAN 存在的的缺點(diǎn),流行的修正方法之一是使用「Wasserstein GAN」。它本質(zhì)上是使用「推土機(jī)距離」(Wasserstein-1 距離或 EM 距離)代替?zhèn)鹘y(tǒng) GAN 的 Jensen Shannon 散度。然而,EM 距離的原始形式是難以進(jìn)行優(yōu)化的,因此我們使用它的對(duì)偶形式(通過(guò) Kantorovich Rubenstein 對(duì)偶性計(jì)算得出)。這要求判別器滿(mǎn)足「1-Lipschitz」,我們是通過(guò)裁剪判別器的權(quán)重來(lái)保證這一點(diǎn)的。
使用推土機(jī)距離的優(yōu)點(diǎn)是,即使真實(shí)的和生成的樣本的數(shù)據(jù)分布沒(méi)有交集,推土機(jī)距離也是「連續(xù)的」,這與 JS 或 KL 散度不同。此外,此時(shí)生成圖像的質(zhì)量與損失函數(shù)值之間存在相關(guān)性。而使用推土機(jī)距離的缺點(diǎn)是,我們需要在每次更新生成器時(shí)更新好幾個(gè)判別器(對(duì)于原始實(shí)現(xiàn)的每次生成器更新也是如此)。此外,作者聲稱(chēng),權(quán)值裁剪是一種糟糕的確保 1-Lipschitz 約束的方法。
與 Jensen Shannon 散度(如右圖所示)不同,即使數(shù)據(jù)分布不是連續(xù)的,推土機(jī)距離(如左圖所示)也是連續(xù)的。詳細(xì)的解釋請(qǐng)參閱論文《Wasserstein GAN》(https://arxiv.org/pdf/1701.07875.pdf)
另一種有趣的解決方案是采用均方損失而非對(duì)數(shù)損失。LSGAN 的作者認(rèn)為,傳統(tǒng)的 GAN 損失函數(shù)并沒(méi)有提供足夠的刺激來(lái)「拉動(dòng)」生成的數(shù)據(jù)分布逼近真實(shí)的數(shù)據(jù)分布。
原始 GAN 損失函數(shù)中的對(duì)數(shù)損失并不影響生成數(shù)據(jù)與決策邊界之間的距離(決策邊界將真實(shí)數(shù)據(jù)和生成的數(shù)據(jù)分開(kāi))。另一方面,LSGAN 對(duì)遠(yuǎn)離決策邊界的生成樣本進(jìn)行懲罰,本質(zhì)上將生成的數(shù)據(jù)分布「拉向」實(shí)際的數(shù)據(jù)分布。它通過(guò)使用均方損失替代對(duì)數(shù)損失來(lái)做到這一點(diǎn)。詳細(xì)解釋請(qǐng)參考博客:《Least Squares GAN》
(https://wiseodd.github.io/techblog/2017/03/02/least-squares-gan/)。
2. 兩個(gè)時(shí)間尺度上的更新規(guī)則(TTUR)
在此方法中,我們?yōu)榕袆e器和生成器使用了不同的學(xué)習(xí)率。通常,生成器使用較慢的更新規(guī)則,而判別器使用較快的更新規(guī)則。通過(guò)使用這種方法,我們只需對(duì)學(xué)習(xí)率進(jìn)行微調(diào),就可以以 1:1 的比例執(zhí)行生成器和判別器的更新。值得注意的是,SAGAN 的實(shí)現(xiàn)就使用了這個(gè)方法。
3. 梯度懲罰
在論文「Improved Training of WGANs」中,作者聲稱(chēng)權(quán)值裁剪(正如在原始的 WGAN 中執(zhí)行的那樣)導(dǎo)致一些優(yōu)化問(wèn)題的產(chǎn)生。作者認(rèn)為權(quán)重裁剪迫使神經(jīng)網(wǎng)絡(luò)去學(xué)習(xí)「較為簡(jiǎn)單的近似」從而得到更優(yōu)的數(shù)據(jù)分布,這導(dǎo)致 GAN 得到的最終結(jié)果質(zhì)量變低。他們還聲稱(chēng),如果 WGAN 的超參數(shù)設(shè)置不正確,權(quán)重裁剪會(huì)導(dǎo)致梯度爆炸或梯度消失的問(wèn)題。作者在損失函數(shù)中引入了一個(gè)簡(jiǎn)單的梯度懲罰規(guī)則,從而緩解了上述問(wèn)題。除此之外,正如在原始的 WGAN 實(shí)現(xiàn)中那樣,這樣做還保證了 1-Lipschitz 連續(xù)性。
正如在原始的 WGAN-GP 論文中提到的,將梯度懲罰作為正則化項(xiàng)加入。
DRAGAN 的作者聲稱(chēng),當(dāng) GAN 中進(jìn)行的博弈(即判別器和生成器互相進(jìn)行對(duì)抗)達(dá)到了「局部均衡狀態(tài)」時(shí),模式崩潰現(xiàn)象就會(huì)發(fā)生。他們還聲稱(chēng),此時(shí)由判別器所貢獻(xiàn)的梯度是非?!讣怃J的」。使用這樣的梯度懲罰能夠很自然地幫助我們避開(kāi)這些狀態(tài),大大提高訓(xùn)練的穩(wěn)定性,并減少模式崩潰現(xiàn)象的發(fā)生。
4. 譜歸一化
譜歸一化是一種通常在判別器中使用的權(quán)值歸一化技術(shù),它能夠優(yōu)化訓(xùn)練過(guò)程(使訓(xùn)練過(guò)程更穩(wěn)定),從本質(zhì)上保證了判別器滿(mǎn)足「K-Lipschitz 連續(xù)性」。
SAGAN 等實(shí)現(xiàn)也在生成器中使用了譜歸一化技術(shù)。博文《Spectral Normalization Explained》
(https://christiancosgrove.com/blog/2018/01/04/spectral-normalization-explained.html)也指出,譜歸一化比梯度懲罰的計(jì)算效率更高。
5. 展開(kāi)和打包
正如博文《Mode collapse in GANs》所描述的,一個(gè)阻止模式崩潰發(fā)生的方法是在更新參數(shù)時(shí)預(yù)測(cè)「對(duì)策」。當(dāng)判別器有機(jī)會(huì)對(duì)生成器的結(jié)果做出反應(yīng)時(shí)(考慮到對(duì)策,就像 min-max 方法),展開(kāi)(unrolled)的 GAN 就可以讓生成器騙過(guò)判別器。
另一個(gè)阻止模式崩潰發(fā)生的方式是將屬于同一類(lèi)的一些樣本「打包」,然后將其傳給判別器。這種方法被 PacGAN 所采用,該論文聲稱(chēng)它們減少了模式崩潰的發(fā)生。
6. 堆疊 GAN
單個(gè)的 GAN 可能不夠強(qiáng)大,無(wú)法有效地處理某些任務(wù)。因此,我們可以使用連續(xù)放置的多個(gè) GAN,其中每個(gè) GAN 可以解決一個(gè)簡(jiǎn)化的問(wèn)題模塊。例如,F(xiàn)ashionGAN 使用了兩個(gè) GAN 處理局部的圖像轉(zhuǎn)換任務(wù)。
FashionGAN 使用了兩個(gè) GAN 來(lái)執(zhí)行局部的圖像轉(zhuǎn)換
將這種情況推到,可以逐步提高 GAN 模型所面臨問(wèn)題的難度。例如,Progressive GAN(ProGAN)可以生成分辨率超高的高質(zhì)量圖像。
7. 相對(duì) GAN
傳統(tǒng)的 GAN 會(huì)度量生成數(shù)據(jù)是真實(shí)數(shù)據(jù)的概率。相對(duì) GAN(Relativistic GAN)則會(huì)去度量生成數(shù)據(jù)比真實(shí)數(shù)據(jù)「更加真實(shí)」的概率。正如 RGAN 相關(guān)論文《The relativistic discriminator: a key element missing from standard GAN》中提到的那樣,我們可以使用一個(gè)合適的距離來(lái)度量這種「相對(duì)真實(shí)性」。
圖 B 為我們使用標(biāo)準(zhǔn) GAN 損失得到的判別器的輸出。圖 C 為輸出的曲線實(shí)際的樣子。圖 A 為 JS 散度的優(yōu)解。
作者還提到,當(dāng)判別器達(dá)到優(yōu)化狀態(tài)時(shí),其輸出的概率 D(x)應(yīng)該收斂到 0.5。然而,傳統(tǒng)的 GAN 訓(xùn)練算法會(huì)迫使判別器為任何圖像輸出「真實(shí)」(即概率為 1)的結(jié)果。這在某種程度上阻止了判別器的輸出概率達(dá)到其優(yōu)值。相對(duì) GAN 也解決了這個(gè)問(wèn)題,并且如下圖所示,取得了非常顯著的效果。
在 5000 輪迭代后,標(biāo)準(zhǔn) GAN 得到的輸出(左圖),以及相對(duì) GAN 得到的輸出(右圖)。
8. 自注意力機(jī)制
自注意力 GAN 的作者聲稱(chēng),用于生成圖像的卷積操作關(guān)注的是局部傳播的信息。也就是說(shuō),由于它們的感受野(restrictive receptive field)有限,它們忽略了在全局傳播的關(guān)系。
將注意力映射(由黃方框中的網(wǎng)絡(luò)計(jì)算得出)加入到標(biāo)準(zhǔn)的卷積運(yùn)算中。
自注意力生成對(duì)抗網(wǎng)絡(luò)使圖像生成任務(wù)能夠進(jìn)行注意力機(jī)制驅(qū)動(dòng)的遠(yuǎn)距離依賴(lài)建模。自注意力機(jī)制是對(duì)于常規(guī)的卷積運(yùn)算的補(bǔ)充。全局信息(遠(yuǎn)距離依賴(lài))有助于生成更高質(zhì)量的圖像。網(wǎng)絡(luò)可以選擇忽略注意力機(jī)制,或?qū)⑵渑c常規(guī)的卷積運(yùn)算一同進(jìn)行考慮。要想更細(xì)致地了解自注意力機(jī)制,請(qǐng)參閱論文《Self-Attention Generative Adversarial Networks》
(https://arxiv.org/pdf/1805.08318.pdf)。
9. 其它各種各樣的技術(shù)
下面是其它的一些被用來(lái)提升 GAN 模型性能的技術(shù)(不完全統(tǒng)計(jì)!):
- 特征匹配
- 使用 Mini Batch 技術(shù)優(yōu)化的判別器
- 歷史平均
- 單邊標(biāo)簽平滑法
- 虛擬批量歸一化
你可以通過(guò)論文《Improved Techniques for Training GANs》以及博文《From GAN to WGAN》了解更多關(guān)于這些技術(shù)的信息。在下面的 GitHub 代碼倉(cāng)庫(kù)中列舉出了更多的技術(shù):
https://github.com/soumith/ganhacks。
三、評(píng)價(jià)指標(biāo)
到目前為止,讀者已經(jīng)了解了提升 GAN 訓(xùn)練效果的方法,我們需要使用一些指標(biāo)來(lái)量化證明這些方法有效。下面,本文將列舉出一些常用的 GAN 模型的性能評(píng)價(jià)指標(biāo)。
1. Inception(GoogleNet)得分
Inception 得分可以度量生成數(shù)據(jù)有多「真實(shí)」。
Inception Score 的計(jì)算方法
上面的方程由兩個(gè)部分(p(y|x) 和 p(y))組成。在這里,x 代表由生成器生成的圖像,p(y|x) 是將圖像 x 輸入給一個(gè)預(yù)訓(xùn)練好的 Inception 網(wǎng)絡(luò)(正如在原始實(shí)現(xiàn)中使用 ImageNet 數(shù)據(jù)集進(jìn)行預(yù)訓(xùn)練,https://arxiv.org/pdf/1801.01973.pdf)時(shí)得到的概率分布。同時(shí),p(y) 是邊緣概率分布,可以通過(guò)對(duì)生成圖像 x 的一些不同的樣本求 p(y|x) 平均值計(jì)算得出。這兩項(xiàng)代表了真實(shí)圖像所需要滿(mǎn)足的兩種特性:
生成圖像應(yīng)該包含「有意義」的目標(biāo)(清晰、不模糊的目標(biāo))。這就意味著 p(y|x) 應(yīng)該具有「較小的熵」。也就是說(shuō),我們的 Inception 網(wǎng)絡(luò)必須非常有把握地確定生成的圖像從屬于某個(gè)特定的類(lèi)。
生成的圖像應(yīng)該要「多樣」。這就意味著 p(y) 應(yīng)該有「較大的熵」。換句話(huà)說(shuō),生成器應(yīng)該在生成圖像時(shí)使得每張圖像代表不同類(lèi)的標(biāo)簽(理想情況下)。
理想狀況下 p(y|x) 和 p(y) 的示意圖。這種情況下,二者的 KL 散度非常大
如果一個(gè)隨機(jī)變量是高度可預(yù)測(cè)的,那么它的熵就很小(即,p(y) 應(yīng)該是有一個(gè)尖峰的分布)。相反,如果隨機(jī)變量是不可預(yù)測(cè)的,其熵就應(yīng)該很大(即 p(y|x) 應(yīng)該是一個(gè)均勻分布)。如果這兩個(gè)特性都得到了滿(mǎn)足,我們應(yīng)該認(rèn)為 p(y|x) 和 p(y) 的 KL 散度很大。自然,Inception 得分(IS)越大越好。如果讀者想要了解對(duì) Inception 得分更加深入的分析,請(qǐng)參閱論文《A Note on the Inception Score》(https://arxiv.org/pdf/1801.01973.pdf)。
2. Fréchet Inception 距離(FID)
Inception 得分的一個(gè)不足之處在于,并沒(méi)有對(duì)真實(shí)數(shù)據(jù)和生成數(shù)據(jù)的統(tǒng)計(jì)量(如均值和方差)進(jìn)行比較。Fréchet 距離通過(guò)對(duì)比真實(shí)圖像和生成圖像的均值和方差解決了這個(gè)問(wèn)題。Fréchet Inception 距離(FID)執(zhí)行了與 Inception 得分相同的分析過(guò)程,但是它是在通過(guò)向預(yù)訓(xùn)練好的 Inception-v3 網(wǎng)絡(luò)傳入真實(shí)的和生成的圖像后得到的特征圖上完成的。FID 的公式如下所示:
FID 得分對(duì)比了真實(shí)的數(shù)據(jù)分布和生成數(shù)據(jù)分布的均值和方差。「Tr」代表矩陣的「跡」。
FID 得分越低越好,因?yàn)榇藭r(shí)它表明生成圖像的統(tǒng)計(jì)量與真實(shí)圖像非常接近。
四、結(jié)語(yǔ)
為了克服 GAN 訓(xùn)練中的種種弊端,研究社區(qū)提出了許多解決方案和方法。然而,由于大量涌現(xiàn)的新研究成果,很難跟進(jìn)所有有意義的新工作。因此,本文分享的細(xì)節(jié)是不詳盡的,并且可能在不久的將來(lái)就會(huì)過(guò)時(shí)。但是,筆者希望本文可以為那些想要提高 GAN 模型性能的人提供一定的指導(dǎo)。
當(dāng)前題目:這份攻略幫你「穩(wěn)住」反復(fù)無(wú)常的GAN
當(dāng)前地址:http://fisionsoft.com.cn/article/djcgseo.html


咨詢(xún)
建站咨詢(xún)
