日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GAN总结

發(fā)布時間:2025/3/17 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GAN总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.原始GAN

1.GAN的原理:

GAN的主要靈感來源于博弈論中零和博弈的思想,應(yīng)用到深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)上來說,就是通過生成網(wǎng)絡(luò)G(Generator)和判別網(wǎng)絡(luò)D(Discriminator)不斷博弈,進(jìn)而使G學(xué)習(xí)到數(shù)據(jù)的分布,如果用到圖片生成上,則訓(xùn)練完成后,G可以從一段隨機(jī)數(shù)中生成逼真的圖像。G, D的主要功能是:

●? G是一個生成式的網(wǎng)絡(luò),它接收一個隨機(jī)的噪聲z(隨機(jī)數(shù)),通過這個噪聲生成圖像?

●? D是一個判別網(wǎng)絡(luò),判別一張圖片是不是“真實(shí)的”。它的輸入?yún)?shù)是x,x代表一張圖片,輸出D(x)代表x為真實(shí)圖片的概率,如果為1,就代表100%是真實(shí)的圖片,而輸出為0,就代表不可能是真實(shí)的圖片

訓(xùn)練過程中,生成網(wǎng)絡(luò)G的目標(biāo)就是盡量生成真實(shí)的圖片去欺騙判別網(wǎng)絡(luò)D。而D的目標(biāo)就是盡量辨別出G生成的假圖像和真實(shí)的圖像。這樣,G和D構(gòu)成了一個動態(tài)的“博弈過程”,最終的平衡點(diǎn)即納什均衡點(diǎn).


2. GAN的特點(diǎn):

●? 相比較傳統(tǒng)的模型,他存在兩個不同的網(wǎng)絡(luò),而不是單一的網(wǎng)絡(luò),并且訓(xùn)練方式采用的是對抗訓(xùn)練方式

●? GAN中G的梯度更新信息來自判別器D,而不是來自數(shù)據(jù)樣本


3.?GAN 的優(yōu)點(diǎn):

(以下部分摘自ian?goodfellow 在Quora的問答)

●? GAN是一種生成式模型,相比較其他生成模型(玻爾茲曼機(jī)和GSNs)只用到了反向傳播,而不需要復(fù)雜的馬爾科夫鏈

●? 相比其他所有模型, GAN可以產(chǎn)生更加清晰,真實(shí)的樣本

●? GAN采用的是一種無監(jiān)督的學(xué)習(xí)方式訓(xùn)練,可以被廣泛用在無監(jiān)督學(xué)習(xí)和半監(jiān)督學(xué)習(xí)領(lǐng)域

●? 相比于變分自編碼器, GANs沒有引入任何決定性偏置( deterministic bias),變分方法引入決定性偏置,因?yàn)樗麄儍?yōu)化對數(shù)似然的下界,而不是似然度本身,這看起來導(dǎo)致了VAEs生成的實(shí)例比GANs更模糊

●? 相比VAE, GANs沒有變分下界,如果鑒別器訓(xùn)練良好,那么生成器可以完美的學(xué)習(xí)到訓(xùn)練樣本的分布.換句話說,GANs是漸進(jìn)一致的,但是VAE是有偏差的

●? GAN應(yīng)用到一些場景上,比如圖片風(fēng)格遷移,超分辨率,圖像補(bǔ)全,去噪,避免了損失函數(shù)設(shè)計(jì)的困難,不管三七二十一,只要有一個的基準(zhǔn),直接上判別器,剩下的就交給對抗訓(xùn)練了。


4.?GAN的缺點(diǎn):

●? 訓(xùn)練GAN需要達(dá)到納什均衡,有時候可以用梯度下降法做到,有時候做不到.我們還沒有找到很好的達(dá)到納什均衡的方法,所以訓(xùn)練GAN相比VAE或者PixelRNN是不穩(wěn)定的,但我認(rèn)為在實(shí)踐中它還是比訓(xùn)練玻爾茲曼機(jī)穩(wěn)定的多

●? GAN不適合處理離散形式的數(shù)據(jù),比如文本

●? GAN存在訓(xùn)練不穩(wěn)定、梯度消失、模式崩潰的問題(目前已解決)


模式崩潰(model collapse)原因

一般出現(xiàn)在GAN訓(xùn)練不穩(wěn)定的時候,具體表現(xiàn)為生成出來的結(jié)果非常差,但是即使加長訓(xùn)練時間后也無法得到很好的改善。

具體原因可以解釋如下:GAN采用的是對抗訓(xùn)練的方式,G的梯度更新來自D,所以G生成的好不好,得看D怎么說。具體就是G生成一個樣本,交給D去評判,D會輸出生成的假樣本是真樣本的概率(0-1),相當(dāng)于告訴G生成的樣本有多大的真實(shí)性,G就會根據(jù)這個反饋不斷改善自己,提高D輸出的概率值。但是如果某一次G生成的樣本可能并不是很真實(shí),但是D給出了正確的評價,或者是G生成的結(jié)果中一些特征得到了D的認(rèn)可,這時候G就會認(rèn)為我輸出的正確的,那么接下來我就這樣輸出肯定D還會給出比較高的評價,實(shí)際上G生成的并不怎么樣,但是他們兩個就這樣自我欺騙下去了,導(dǎo)致最終生成結(jié)果缺失一些信息,特征不全。

關(guān)于梯度消失的問題可以參考鄭華濱的令人拍案叫絕的wassertein?GAN,里面給出了詳細(xì)的解釋,不過多重復(fù)。

局部極小值點(diǎn)


原始GAN中判別器要最小化如下?lián)p失函數(shù),盡可能把真實(shí)樣本分為正例,生成樣本分為負(fù)例:

?(公式1 )

其中是真實(shí)樣本分布,是由生成器產(chǎn)生的樣本分布。對于生成器,Goodfellow一開始提出來一個損失函數(shù),后來又提出了一個改進(jìn)的損失函數(shù),分別是

?(公式2)

?(公式3)


為什么GAN不適合處理文本數(shù)據(jù)

1.?文本數(shù)據(jù)相比較圖片數(shù)據(jù)來說是離散的,因?yàn)閷τ谖谋緛碚f,通常需要將一個詞映射為一個高維的向量,最終預(yù)測的輸出是一個one-hot向量,假設(shè)softmax的輸出是(0.2, 0.3, 0.1,0.2,0.15,0.05)那么變?yōu)閛nehot是(0,1,0,0,0,0),如果softmax輸出是(0.2, 0.25, 0.2, 0.1,0.15,0.1 ),one-hot仍然是(0, 1, 0, 0, 0, 0),所以對于生成器來說,G輸出了不同的結(jié)果但是D給出了同樣的判別結(jié)果,并不能將梯度更新信息很好的傳遞到G中去,所以D最終輸出的判別沒有意義。

2.?另外就是GAN的損失函數(shù)是JS散度,JS散度不適合衡量不想交分布之間的距離。

(WGAN雖然使用wassertein距離代替了JS散度,但是在生成文本上能力還是有限,GAN在生成文本上的應(yīng)用有seq-GAN,和強(qiáng)化學(xué)習(xí)結(jié)合的產(chǎn)物)


訓(xùn)練GAN的一些技巧

1.?輸入規(guī)范化到(-1,1)之間,最后一層的激活函數(shù)使用tanh(BEGAN除外)

2.?使用wassertein GAN的損失函數(shù),

3.?如果有標(biāo)簽數(shù)據(jù)的話,盡量使用標(biāo)簽,也有人提出使用反轉(zhuǎn)標(biāo)簽效果很好,另外使用標(biāo)簽平滑,單邊標(biāo)簽平滑或者雙邊標(biāo)簽平滑

4.?使用mini-batch norm, 如果不用batch?norm?可以使用instance?norm?或者weight?norm

5.?避免使用RELU和pooling層,減少稀疏梯度的可能性,可以使用leakrelu激活函數(shù)

6.?優(yōu)化器盡量選擇ADAM,學(xué)習(xí)率不要設(shè)置太大,初始1e-4可以參考,另外可以隨著訓(xùn)練進(jìn)行不斷縮小學(xué)習(xí)率,

7.?給D的網(wǎng)絡(luò)層增加高斯噪聲,相當(dāng)于是一種正則


2.DCGAN

【Paper】 :

????????????http://arxiv.org/abs/1511.06434

【github】 :

????????????https://github.com/Newmu/dcgan_code??theano

????????? ??https://github.com/carpedm20/DCGAN-tensorflow??tensorflow

????????? ??https://github.com/jacobgil/keras-dcgan????keras

????????????https://github.com/soumith/dcgan.torch??torch


DCGAN是繼GAN之后比較好的改進(jìn),其主要的改進(jìn)主要是在網(wǎng)絡(luò)結(jié)構(gòu)上,到目前為止,DCGAN的網(wǎng)絡(luò)結(jié)構(gòu)還是被廣泛的使用,DCGAN極大的提升了GAN訓(xùn)練的穩(wěn)定性以及生成結(jié)果質(zhì)量。

論文的主要貢獻(xiàn)是:

◆??為GAN的訓(xùn)練提供了一個很好的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。

◆??表明生成的特征具有向量的計(jì)算特性。

DCGAN的生成器網(wǎng)絡(luò)結(jié)構(gòu)如上圖所示,相較原始的GAN,DCGAN幾乎完全使用了卷積層代替全鏈接層,判別器幾乎是和生成器對稱的,從上圖中我們可以看到,整個網(wǎng)絡(luò)沒有pooling層和上采樣層的存在,實(shí)際上是使用了帶步長(fractional-strided)的卷積代替了上采樣,以增加訓(xùn)練的穩(wěn)定性。

DCGAN能改進(jìn)GAN訓(xùn)練穩(wěn)定的原因主要有:

◆??使用步長卷積代替上采樣層,卷積在提取圖像特征上具有很好的作用,并且使用卷積代替全連接層。

◆??生成器G和判別器D中幾乎每一層都使用batchnorm層,將特征層的輸出歸一化到一起,加速了訓(xùn)練,提升了訓(xùn)練的穩(wěn)定性。(生成器的最后一層和判別器的第一層不加batchnorm)

◆??在判別器中使用leakrelu激活函數(shù),而不是RELU,防止梯度稀疏,生成器中仍然采用relu,但是輸出層采用tanh

◆? 使用adam優(yōu)化器訓(xùn)練,并且學(xué)習(xí)率最好是0.0002,(我也試過其他學(xué)習(xí)率,不得不說0.0002是表現(xiàn)最好的了)

?主要改進(jìn)總結(jié):

1.將pooling層用convolutions替代。(對于判別模型,允許網(wǎng)絡(luò)學(xué)習(xí)自己的空間下采樣;対于生成模型,允許它學(xué)習(xí)自己的空間上采樣)

2.在generator和discriminator上都使用batchnorm:

解決初始化差的問題

幫助梯度傳播到每一層

防止generator把所有的樣本都收斂到同一個點(diǎn)

3.在CNN中移除全連接層

4.在generator的除了輸出層外的所有層使用ReLU,輸出層采用tanh

5.在discriminator的所有層上使用LeakyReLU.

問題:

DCGAN雖然有很好的架構(gòu),但是對GAN訓(xùn)練穩(wěn)定性來說是治標(biāo)不治本,沒有從根本上解決問題,而且訓(xùn)練的時候仍需要小心的平衡G,D的訓(xùn)練進(jìn)程,往往是訓(xùn)練一個多次,訓(xùn)練另一個一次。


3.WGAN

paper】:?

????????????https://arxiv.org/abs/1701.07875

GitHub】:

????????????https://github.com/hwalsuklee/tensorflow-generative-model-collections

? ? ? ? ? ? ? https://github.com/Zardinality/WGAN-tensorflow

DCGAN不同,WGAN主要從損失函數(shù)的角度對GAN做了改進(jìn),損失函數(shù)改進(jìn)之后的WGAN即使在全鏈接層上也能得到很好的表現(xiàn)結(jié)果,WGANGAN的改進(jìn)主要有:

? 判別器最后一層去掉sigmoid

? 生成器和判別器的loss不取log

? 對更新后的權(quán)重強(qiáng)制截?cái)嗟揭欢ǚ秶鷥?nèi),比如[-0.01,0.01],以滿足論文中提到的lipschitz連續(xù)性條件。

? 論文中也推薦使用SGD, RMSprop等優(yōu)化器,不要基于使用動量的優(yōu)化算法,比如adam,但是就我目前來說,訓(xùn)練GAN時,我還是adam用的多一些。

?

從上面看來,WGAN好像在代碼上很好實(shí)現(xiàn),基本上在原始GAN的代碼上不用更改什么,但是它的作用是巨大的

? WGAN理論上給出了GAN訓(xùn)練不穩(wěn)定的原因,即交叉熵(JS散度)不適合衡量具有不相交部分的分布之間的距離,轉(zhuǎn)而使用wassertein距離去衡量生成數(shù)據(jù)分布和真實(shí)數(shù)據(jù)分布之間的距離,理論上解決了訓(xùn)練不穩(wěn)定的問題。

? 解決了模式崩潰的(collapse mode)問題,生成結(jié)果多樣性更豐富。

? 對GAN的訓(xùn)練提供了一個指標(biāo),此指標(biāo)數(shù)值越小,表示GAN訓(xùn)練的越差,反之越好。可以說之前訓(xùn)練GAN完全就和買彩票一樣,訓(xùn)練好了算你中獎,沒中獎也不要?dú)怵H,多買幾注吧。

有關(guān)GAN和WGAN的解釋,可以參考鏈接:https://zhuanlan.zhihu.com/p/25071913

總的來說GAN中交叉熵(JS散度)不適合衡量生成數(shù)據(jù)分布和真實(shí)數(shù)據(jù)分布的距離,如果通過優(yōu)化JS散度訓(xùn)練GAN會導(dǎo)致找不到正確的優(yōu)化目標(biāo),所以,WGAN提出使用wassertein距離作為優(yōu)化方式訓(xùn)練GAN,但是數(shù)學(xué)上和真正代碼實(shí)現(xiàn)上還是有區(qū)別的,使用Wasserteion距離需要滿足很強(qiáng)的連續(xù)性條件—lipschitz連續(xù)性,為了滿足這個條件,作者使用了將權(quán)重限制到一個范圍的方式強(qiáng)制滿足lipschitz連續(xù)性,但是這也造成了隱患,接下來會詳細(xì)說。另外說實(shí)話,雖然理論證明很漂亮,但是實(shí)際上訓(xùn)練起來,以及生成結(jié)果并沒有期待的那么好。

Lipschitz限制是在樣本空間中,要求判別器函數(shù)D(x)梯度值不大于一個有限的常數(shù)K,通過權(quán)重值限制的方式保證了權(quán)重參數(shù)的有界性,間接限制了其梯度信息。


4.WGAN-GP (improved wgan)

paper】:

????????????https://arxiv.org/abs/1704.00028

GitHub】:

????????https://link.zhihu.com/?target=https%3A//github.com/igul222/improved_wgan_training

????????https://github.com/caogang/wgan-gp

WGAN-GP是WGAN之后的改進(jìn)版,主要還是改進(jìn)了連續(xù)性限制的條件,因?yàn)?#xff0c;作者也發(fā)現(xiàn)將權(quán)重剪切到一定范圍之后,比如剪切到[-0.01,+0.01]后,發(fā)生了這樣的情況,如下圖左邊表示。



發(fā)現(xiàn)大多數(shù)的權(quán)重都在-0.01?0.01上,這就意味了網(wǎng)絡(luò)的大部分權(quán)重只有兩個可能數(shù),對于深度神經(jīng)網(wǎng)絡(luò)來說不能充分發(fā)揮深度神經(jīng)網(wǎng)絡(luò)的擬合能力,簡直是極大的浪費(fèi)。并且,也發(fā)現(xiàn)強(qiáng)制剪切權(quán)重容易導(dǎo)致梯度消失或者梯度爆炸,梯度消失很好理解,就是權(quán)重得不到更新信息,梯度爆炸就是更新過猛了,權(quán)重每次更新都變化很大,很容易導(dǎo)致訓(xùn)練不穩(wěn)定。梯度消失與梯度爆炸原因均在于剪切范圍的選擇,選擇過小的話會導(dǎo)致梯度消失,如果設(shè)得稍微大了一點(diǎn),每經(jīng)過一層網(wǎng)絡(luò),梯度變大一點(diǎn)點(diǎn),多層之后就會發(fā)生梯度爆炸 。為了解決這個問題,并且找一個合適的方式滿足lipschitz連續(xù)性條件,作者提出了使用梯度懲罰(gradient penalty)的方式以滿足此連續(xù)性條件,其結(jié)果如上圖右邊所示。

?梯度懲罰就是既然Lipschitz限制是要求判別器的梯度不超過K,那么可以通過建立一個損失函數(shù)來滿足這個要求,即先求出判別器的梯度d(D(x)),然后建立與K之間的二范數(shù)就可以實(shí)現(xiàn)一個簡單的損失函數(shù)設(shè)計(jì)。但是注意到D的梯度的數(shù)值空間是整個樣本空間,對于圖片(既包含了真實(shí)數(shù)據(jù)集也包含了生成出的圖片集)這樣的數(shù)據(jù)集來說,維度及其高,顯然是及其不適合的計(jì)算的。作者提出沒必要對整個數(shù)據(jù)集(真的和生成的)做采樣,只要從每一批次的樣本中采樣就可以了,比如可以產(chǎn)生一個隨機(jī)數(shù),在生成數(shù)據(jù)和真實(shí)數(shù)據(jù)上做一個插值

????????????????


于是就算解決了在整個樣本空間上采樣的麻煩。

所以WGAN-GP的貢獻(xiàn)是:

? 提出了一種新的lipschitz連續(xù)性限制手法—梯度懲罰,解決了訓(xùn)練梯度消失梯度爆炸的問題。

? 比標(biāo)準(zhǔn)WGAN擁有更快的收斂速度,并能生成更高質(zhì)量的樣本

? 提供穩(wěn)定的GAN訓(xùn)練方式,幾乎不需要怎么調(diào)參,成功訓(xùn)練多種針對圖片生成和語言模型的GAN架構(gòu)

但是論文提出,由于是對每個batch中的每一個樣本都做了梯度懲罰(隨機(jī)數(shù)的維度是(batchsize,1)),因此判別器中不能使用batch norm,但是可以使用其他的normalization方法,比如Layer Normalization、Weight Normalization和Instance Normalization,論文中使用了Layer Normalization,weight?normalization效果也是可以的。為了比較,還是給出了下面這張圖,可以發(fā)現(xiàn)WGAN-GP完爆其他GAN:



5.LSGAN

最小二乘GAN

全稱是Least Squares Generative Adversarial Networks

【paper】

????????????https://arxiv.org/abs/1611.04076

【github】

????????????https://github.com/hwalsuklee/tensorflow-generative-model-collections

????????????https://github.com/guojunq/lsgan

LSGAN原理:

其實(shí)原理部分可以一句話概括,即使用了最小二乘損失函數(shù)代替了GAN的損失函數(shù)。

但是就這樣的改變,緩解了GAN訓(xùn)練不穩(wěn)定和生成圖像質(zhì)量差多樣性不足的問題。

事實(shí)上,作者認(rèn)為使用JS散度并不能拉近真實(shí)分布和生成分布之間的距離,使用最小二乘可以將圖像的分布盡可能的接近決策邊界,其損失函數(shù)定義如下:



其中作者設(shè)置a=c=1,b=0

論文里還是給了一些數(shù)學(xué)推導(dǎo)與證明,感興趣的可以去看看

生成結(jié)果展示:



6.BEGAN:

BEGAN全稱是Boundary Equilibrium GANs

【paper】:

????????????https://arxiv.org/abs/1703.10717

【GitHub】:

????????????https://github.com/carpedm20/BEGAN-tensorflow

????????????https://github.com/Heumi/BEGAN-tensorflow

????????????https://github.com/carpedm20/BEGAN-pytorch



BEGAN的主要貢獻(xiàn):

? 提出了一種新的簡單強(qiáng)大GAN,使用標(biāo)準(zhǔn)的訓(xùn)練方式,不加訓(xùn)練trick也能很快且穩(wěn)定的收斂

? 對于GAN中G,D的能力的平衡提出了一種均衡的概念(GAN的理論基礎(chǔ)就是goodfellow理論上證明了GAN均衡點(diǎn)的存在,但是一直沒有一個準(zhǔn)確的衡量指標(biāo)說明GAN的均衡程度)

? 提出了一種收斂程度的估計(jì),這個機(jī)制只在WGAN中出現(xiàn)過。作者在論文中也提到,他們的靈感來自于WGAN,在此之前只有wgan做到了

??提供了一個超參數(shù),這個超參數(shù)可以在圖像的多樣性和生成質(zhì)量之間做均衡(熟悉GAN的小伙伴就知道這又多難得)?

先說說BEGAN的主要原理,BEGAN和其他GAN不一樣,這里的D使用的是auto-encoder結(jié)構(gòu),就是下面這種,D的輸入是圖片,輸出是經(jīng)過編碼解碼后的圖片,

為了估計(jì)分布的誤差,作者使用了auto-encoder作為D,D的輸入是圖像V,維度為RNx,輸出的也是維度為RNx的圖片,本文中n=1,自編碼器的模型如下?


之前的GAN以及其變種都是希望生成器生成的數(shù)據(jù)分布盡可能的接近真實(shí)數(shù)據(jù)的分布,當(dāng)生成數(shù)據(jù)分布等同于真實(shí)數(shù)據(jù)分布時,我們就確定生成器G經(jīng)過訓(xùn)練可以生成和真實(shí)數(shù)據(jù)分布相同的樣本,即獲得了生成足以以假亂真數(shù)據(jù)的能力,所以從這一點(diǎn)出發(fā),研究者們設(shè)計(jì)了各種損失函數(shù)去令G的生成數(shù)據(jù)分布盡可能接近真實(shí)數(shù)據(jù)分布。BEGAN代替了這種估計(jì)概率分布方法,它不直接去估計(jì)生成分布Pg與真實(shí)分布Px的差距,進(jìn)而設(shè)計(jì)合理的損失函數(shù)拉近他們之間的距離,而是估計(jì)分布的誤差之間的距離,作者認(rèn)為只要分布的的誤差分布相近的話,也可以認(rèn)為這些分布是相近的。即如果我們認(rèn)為兩個人非常相似,又發(fā)現(xiàn)這兩人中的第二個人和第三個人很相似,那么我們就完全可以說第一個人和第三個人長的很像。

BEGAN中,第一個人相當(dāng)于訓(xùn)練的數(shù)據(jù)x,第二個人相當(dāng)于D對x編碼解碼后的圖像D(x),第三個人相當(dāng)于D以G的生成為輸入的結(jié)果D(g(z)),所以,如果||D(x)-x||?-?|| D(x)- D(g(z))?||?不斷趨近于0,那么隨著訓(xùn)練,D(x)會不斷接近x,那么D(g(z))?接近于D(x),豈不是就意味著 g(z) 的數(shù)據(jù)分布和x分布幾乎一樣了,那么就說明G學(xué)到了生成數(shù)據(jù)的能力。于是乎,假設(shè)圖片足夠大,像素很多。但是問題來了,如果||D(x)-x||?-?|| D(x)- D(g(z))?||剛好等于0,這時候,D(x)和x可能還差的很遠(yuǎn)呢,那不就什么也學(xué)不到了D(x)-x是一個圖片,假設(shè)圖片上的每一個像素都滿足獨(dú)立同分布條件,根據(jù)中心極限定理,像素的誤差近似滿足正太分布,假設(shè)期望是m1,方差是μ1,同理D(x)- D(g(z)),還有m2,?μ2這時候如果我們再用wassertein距離衡量m1與m2的距離,




trace是求跡操作。

再滿足下面這個條件下,




即他們成正比,這時候連lipschitz連續(xù)性條件也不需要了,

令D不斷的最大化m2,最小化m1,而G則不斷最小化m2,當(dāng)m2 接近m1的時候我們就認(rèn)為GAN完成了訓(xùn)練。?
分析到這里我們得出結(jié)論,我們可以去估計(jì)誤差的分布而不是直接估計(jì)分布去擬合GAN,但是損失函數(shù)究竟是怎么樣的呢?

有一個問題,當(dāng)m1m2很接近是,條件1是趨于無窮的,不可能再忽略,于是,boundary(限制)就來了,

設(shè)置一個位于[0~1]之間的數(shù)λ,強(qiáng)制將m1m2劃分開界限,具體的損失函數(shù)如下:



BEGAN的訓(xùn)練結(jié)果:不同的γ可以在圖片的質(zhì)量和生成多樣性之間做選擇。


7.SRGAN

SRGAN (Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network, arxiv, 21 Nov, 2016)將生成式對抗網(wǎng)絡(luò)(GAN)用于SR問題。其出發(fā)點(diǎn)是傳統(tǒng)的方法一般處理的是較小的放大倍數(shù),當(dāng)圖像的放大倍數(shù)在4以上時,很容易使得到的結(jié)果顯得過于平滑,而缺少一些細(xì)節(jié)上的真實(shí)感。因此SRGAN使用GAN來生成圖像中的細(xì)節(jié)。

傳統(tǒng)的方法使用的代價函數(shù)一般是最小均方差(MSE),即

該代價函數(shù)使重建結(jié)果有較高的信噪比,但是缺少了高頻信息,出現(xiàn)過度平滑的紋理。SRGAN認(rèn)為,應(yīng)當(dāng)使重建的高分辨率圖像與真實(shí)的高分辨率圖像無論是低層次的像素值上,還是高層次的抽象特征上,和整體概念和風(fēng)格上,都應(yīng)當(dāng)接近。整體概念和風(fēng)格如何來評估呢?可以使用一個判別器,判斷一副高分辨率圖像是由算法生成的還是真實(shí)的。如果一個判別器無法區(qū)分出來,那么由算法生成的圖像就達(dá)到了以假亂真的效果。

因此,該文章將代價函數(shù)改進(jìn)為

第一部分是基于內(nèi)容的代價函數(shù),第二部分是基于對抗學(xué)習(xí)的代價函數(shù)?;趦?nèi)容的代價函數(shù)除了上述像素空間的最小均方差以外,又包含了一個基于特征空間的最小均方差,該特征是利用VGG網(wǎng)絡(luò)提取的圖像高層次特征: 對抗學(xué)習(xí)的代價函數(shù)是基于判別器輸出的概率: 其中 是一個圖像屬于真實(shí)的高分辨率圖像的概率。 是重建的高分辨率圖像。SRGAN使用的生成式網(wǎng)絡(luò)和判別式網(wǎng)絡(luò)分別如下:

該方法的實(shí)驗(yàn)結(jié)果如下 從定量評價結(jié)果上來看,PSNR和SSIM這兩個指標(biāo)評價的是重建結(jié)果和金標(biāo)準(zhǔn)在像素值空間的差異。SRGAN得到的評價值不是最高。但是對于MOS(mean opinion score)的評價顯示,SRGAN生成的高分辨率圖像看起來更真實(shí)。

這里直介紹了一些對GAN在訓(xùn)練和生成上改進(jìn)的工作,具體還有很多很多很多很多沒有介紹到,這里只是挑選了一些典型的,用的比較多的來介紹一下。感興趣的可以去看看https://github.com/hindupuravinash/the-gan-zoo

GAN動物園,上百個GAN等著被翻牌。

Google研究原文請見:https://arxiv.org/abs/1711.10337


在此項(xiàng)研究中,Google此項(xiàng)研究中使用了minimax損失函數(shù)和用non-saturating損失函數(shù)的GAN,分別簡稱為MM GAN和NS GAN,對比了WGAN、WGAN GP、LS GAN、DRAGAN、BEGAN,除了DRAGAN上文都做了介紹,另外還對比的有VAE(變分自編碼器)。

?

結(jié)語:

雖然得出的結(jié)論是沒有明顯的證據(jù)說明其他GAN比原始GAN好,但是,有本事你用原始GAN生成一個2K的高清圖給我看看,此時BEGAN和PG-GAN相視一笑,默默不說話。大部分情況來說,還是wgan-gp用的更多一些。生成高清圖像BEGAN最簡單合適。

?

參考文獻(xiàn):

1.https://zhuanlan.zhihu.com/p/27159510?utm_source=wechat_session&utm_medium=social

2. https://www.zhihu.com/question/56171002/answer/148593584

3. http://www.inference.vc/instance-noise-a-trick-for-stabilising-gan-training/

4. https://github.com/soumith/ganhacks

5. https://github.com/hindupuravinash/the-gan-zoo

6. https://zhuanlan.zhihu.com/p/25071913

7. https://zhuanlan.zhihu.com/p/25071913

8.https://zhuanlan.zhihu.com/p/25532538?utm_medium=social&utm_source=weibo

新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎!定制產(chǎn)品紅包拿不停!

總結(jié)

以上是生活随笔為你收集整理的GAN总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。