生成对抗网络 : LSGAN, WGAN, CGAN, infoGAN, EBGAN, BEGAN, VAE
訓(xùn)練”穩(wěn)定”,樣本的”多樣性”和”清晰度”似乎是GAN的 3大指標(biāo) — David 9
VAE與GAN
聊到隨機(jī)樣本生成, 不得不提VAE與GAN, VAE用KL-divergence和encoder-decoder的方式逼近真實(shí)分布. 但這些年GAN因其”端到端”靈活性和隱式的目標(biāo)函數(shù)得到廣泛青睞. 而且, GAN更傾向于生成清晰的圖像:
VAE與GAN生成對(duì)比
GAN在10次Epoch后就可以生成較清晰的樣本, 而VAE的生成樣本依舊比較模糊. 所以GAN大盤(pán)點(diǎn)前, 我們先比較一下VAE與GAN的結(jié)構(gòu)差別:
VAE與GAN結(jié)構(gòu)比較
VAE訓(xùn)練完全依靠一個(gè)假設(shè)的loss函數(shù)和KL-divergence逼近真實(shí)分布:
GAN則沒(méi)有假設(shè)單個(gè)loss函數(shù), 而是讓判別器D和生成器G之間進(jìn)行一種零和博弈,?一方面,?生成器G要以生成假樣本為目的(loss評(píng)估), 欺騙判別器D誤認(rèn)為是真實(shí)樣本:
另一方面,?判別器D要以區(qū)分真實(shí)樣本x和假樣本G(z)為最終目的(loss評(píng)估):
一般,?判別器D在GAN訓(xùn)練中是比生成器G更強(qiáng)的網(wǎng)絡(luò), 畢竟, 網(wǎng)絡(luò)G要從D的判別過(guò)程中學(xué)到”以假亂真”的方法. 所以, 很大程度上, G是跟著D學(xué)習(xí)的.
當(dāng)然, 生成對(duì)抗網(wǎng)絡(luò)也有一些問(wèn)題, 比如經(jīng)常很難訓(xùn)練(DCGAN試圖解決), 有時(shí)候(特別是高像素圖像), GAN生成圖像不清晰, 還有時(shí)候, 生成圖片多樣性太差(只是對(duì)真實(shí)樣本的簡(jiǎn)單改動(dòng)).
這些問(wèn)題, 催生出近年來(lái)各種有意思的GAN改進(jìn)算法:
LSGAN(最小二乘GAN)
傳統(tǒng)GAN中, D網(wǎng)絡(luò)和G網(wǎng)絡(luò)都是用簡(jiǎn)單的交叉熵loss做更新,?最小二乘GAN則用最小二乘(Least Squares) Loss 做更新:
選擇最小二乘Loss做更新有兩個(gè)好處, 1. 更嚴(yán)格地懲罰遠(yuǎn)離數(shù)據(jù)集的離群Fake sample, 使得生成圖片更接近真實(shí)數(shù)據(jù)(同時(shí)圖像也更清晰) 2. 最小二乘保證離群sample懲罰更大, 解決了原本GAN訓(xùn)練不充分(不穩(wěn)定)的問(wèn)題:
來(lái)自: https://arxiv.org/pdf/1611.04076.pdf
但缺點(diǎn)也是明顯的, LSGAN對(duì)離離群點(diǎn)的過(guò)度懲罰, 可能導(dǎo)致樣本生成的”多樣性”降低, 生成樣本很可能只是對(duì)真實(shí)樣本的簡(jiǎn)單”模仿”和細(xì)微改動(dòng).
WGAN
DCGAN用經(jīng)驗(yàn)告訴我們什么是比較穩(wěn)定的GAN網(wǎng)絡(luò)結(jié)構(gòu), 而WGAN告訴我們: 不用精巧的網(wǎng)絡(luò)設(shè)計(jì)和訓(xùn)練過(guò)程, 也能訓(xùn)練一個(gè)穩(wěn)定的GAN.
WGAN?通過(guò)剪裁D網(wǎng)絡(luò)參數(shù)的方式, 對(duì)D網(wǎng)絡(luò)進(jìn)行穩(wěn)定更新(Facebook采用了一種名叫”Earth-Mover“的距離來(lái)度量分布相似度).
來(lái)自: https://arxiv.org/pdf/1701.07875.pdf
但是, 有時(shí)一味地通過(guò)裁剪weight參數(shù)的方式保證訓(xùn)練穩(wěn)定性, 可能導(dǎo)致生成低質(zhì)量低清晰度的圖片.
WGAN-GP
為了解決WGAN有時(shí)生成低質(zhì)量圖片的問(wèn)題,?WGAN-GP舍棄裁剪D網(wǎng)絡(luò)weights參數(shù)的方式, 而是采用裁剪D網(wǎng)絡(luò)梯度的方式(依據(jù)輸入數(shù)據(jù)裁剪),?以下是WGAN-GP的判別器D的Value函數(shù)和生成器G的Value函數(shù):
WGAN-GP在某些情況下是WGAN的改進(jìn), 但是如果你已經(jīng)用了一些可靠的GAN方法, 其實(shí)差距并不大:
DRAGAN
DRAGAN本質(zhì)上也是一種梯度裁剪(雖然文章自稱(chēng)是新穎的正則化方式),其判別器和生成器的價(jià)值函數(shù)類(lèi)似WGAN-GP:
作者的初衷是希望避開(kāi)局部最優(yōu)解,獲得更穩(wěn)定的GAN訓(xùn)練。該算法另一個(gè)特點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單, 作者提供的源碼如下:
https://github.com/kodalinaveen3/DRAGAN
EBGAN(基于能量函數(shù)的GAN)
EBGAN我們?cè)谥耙黄谟懻撨^(guò),EBGAN在邊緣的生成效果上更流暢, 而且加了特殊的正則項(xiàng), 在生成的類(lèi)別上, EBGAN更傾向于生成不同的臉型和人種,下圖是論文EBGAN和DCGAN的比較:
DCGAN個(gè)EBGAN生成人臉對(duì)比
EGGAN的判別器比較特殊用了encoder-decoder的結(jié)構(gòu):
BGAN(Boundary-Seeking GAN)
BGAN優(yōu)勢(shì)在于生成離散樣本(當(dāng)然像圖像這樣的連續(xù)樣本也可以支持)。
BGAN的生成器以不斷生成決策邊界上的樣本為目標(biāo):
SGAN(Stacked GAN)
SGAN是一種結(jié)構(gòu)創(chuàng)新的GAN,通過(guò)堆疊多個(gè)GAN網(wǎng)絡(luò),實(shí)現(xiàn)生成模型的信息“分層化”:
實(shí)驗(yàn)表明SGAN可以生成比一般GAN更清晰的圖片 ,另外加入一些條件生成的功能也相當(dāng)方便,github代碼:https://github.com/xunhuang1995/SGAN
條件生成的GAN
許多情況下,我們需要生成指定類(lèi)的隨機(jī)樣本,這時(shí)就需要條件生成的GAN:
CGAN
CGAN是對(duì)條件生成GAN的最先嘗試,方法也比較簡(jiǎn)單,直接在網(wǎng)絡(luò)輸入加入條件信息c,用來(lái)控制網(wǎng)絡(luò)的條件輸出模式:
公式也相對(duì)簡(jiǎn)單:
這樣,使得生成指定label的樣本成為可能:
來(lái)自:https://arxiv.org/pdf/1411.1784.pdf
ACGAN(輔助類(lèi)別的GAN)
ACGAN在Imagenet上的生成效果令人驚嘆,它特意學(xué)習(xí)了一個(gè)類(lèi)別下的圖片結(jié)構(gòu):
來(lái)自:https://arxiv.org/pdf/1610.09585.pdf
與CGAN不同的是它在判別器D的真實(shí)數(shù)據(jù)x也加入了類(lèi)別c的信息,這樣就進(jìn)一步告訴G網(wǎng)絡(luò)該類(lèi)的樣本結(jié)構(gòu)如何,從而生成更好的類(lèi)別模擬:
infoGAN
對(duì)于生成同類(lèi)別的樣本,infoGAN另辟蹊徑,通過(guò)最大化互信息(c,c’)來(lái)生成同類(lèi)別的樣本,其中c是隱信息:
因?yàn)殡[信息c可以作為超參數(shù)控制生成圖像,我們可以得到一些有趣的結(jié)果:
來(lái)自: https://arxiv.org/pdf/1606.03657.pdf
如上圖,通過(guò)控制隱信息c從-2到2,我們可以控制生成圖片的旋轉(zhuǎn)方向或者字體寬度(從左到右的每列)。
?
轉(zhuǎn)自:David 9的博客
參考文獻(xiàn):
總結(jié)
以上是生活随笔為你收集整理的生成对抗网络 : LSGAN, WGAN, CGAN, infoGAN, EBGAN, BEGAN, VAE的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WGAN-GP 学习笔记
- 下一篇: batch-size 深度学习笔记