深入理解GAN对抗生成网络
文章目錄
- 什么是GAN
- 納什均衡
- GAN的學(xué)習(xí)過(guò)程
- GAN的局限性
- 如何改善GAN的局限性
什么是GAN
Generative Adversarial Networks,生成式對(duì)抗網(wǎng)絡(luò),Ian Goodfellow 在2014 年提出的一種生成式模型
基本思想來(lái)自博弈論的二人零和博弈(納什均衡), 由一個(gè)生成器和一個(gè)判別器構(gòu)成,通過(guò)對(duì)抗學(xué)習(xí)來(lái)訓(xùn)練
- 生成器的目的是盡量去學(xué)習(xí)真實(shí)的數(shù)據(jù)分布
- 判別器的目的是盡量正確判別輸入數(shù)據(jù)是來(lái)自真實(shí)數(shù)據(jù)還是來(lái)自生成器
- 生成器和判別器就是一個(gè)矛和盾互相PK的過(guò)程
- 為了取得游戲勝利,這兩個(gè)游戲參與者需要不斷優(yōu)化, 各自提高自己的生成能力和判別能力,這個(gè)學(xué)習(xí)優(yōu)化過(guò)程就是尋找二者之間的一個(gè)納什均衡
G代表生成器,D代表判別器,Z是輸入源,稱為Noise source,就是一個(gè)隨機(jī)編碼。給出一個(gè)random code(即Z)由生成器G生成假數(shù)據(jù)X’,假數(shù)據(jù)X’和真實(shí)數(shù)據(jù)X喂給判別器D,由D判別出哪個(gè)是real,哪個(gè)是fake,這個(gè)就是gan的基本原理
納什均衡
我們以囚徒困境的例子來(lái)解釋納什均衡的含義
A和B屬于零和游戲,需要在A和B的決策中進(jìn)行Trade Off(權(quán)衡),由此看出,抵賴對(duì)兩個(gè)人來(lái)說(shuō)都是最優(yōu)的結(jié)果,這個(gè)就是納什均衡。
亞當(dāng)·斯密的“看不見(jiàn)的手”,在市場(chǎng)經(jīng)濟(jì)中,每一個(gè)人都從利己的目的出發(fā),不斷調(diào)和與迭代,最終全社會(huì)達(dá)到利他的效果
GAN的學(xué)習(xí)過(guò)程
GAN的學(xué)習(xí)過(guò)程其實(shí)就是把D和G達(dá)成一個(gè)均衡,這是我們的目標(biāo),因此不僅要訓(xùn)練G,也要訓(xùn)練D
為什么D和G是對(duì)抗的?
G是生成器,它生成的數(shù)據(jù)是虛假的,它目標(biāo)是讓生成的數(shù)據(jù)騙過(guò)D。D是判別器,它的目標(biāo)是要把虛假的數(shù)據(jù)給找出來(lái),因此D和G是對(duì)抗的
對(duì)于 GAN 的學(xué)習(xí)過(guò)程 ,需要訓(xùn)練模型D來(lái)最大化判別數(shù)據(jù)來(lái)源于真實(shí)數(shù)據(jù)或者偽數(shù)據(jù)分布 ,同時(shí),我們需要訓(xùn)練模型 G來(lái)最小化 loss。
我們?cè)摬捎迷鯓拥膬?yōu)化方法,對(duì)生成器G和判別器D進(jìn)行優(yōu)化呢?
- Step1,固定生成器 G=>優(yōu)化判別器 D,讓D的判別準(zhǔn)確率最大化
- Step2,固定判別器 D => 優(yōu)化生成器 G,讓D的判別準(zhǔn)確率最小化
訓(xùn)練 GAN 時(shí),在同一輪參數(shù)更新中,通常對(duì) D 的參數(shù)更新 k 次,再對(duì) G的參數(shù)更新 1 次,這樣做的目的是讓D學(xué)的更快點(diǎn),因?yàn)槲覀冏罱K要的是G,為此需要把D這個(gè)教練先變得越來(lái)越好,由此才能訓(xùn)練出更好的G
Generator與Discriminator的工作原理
- Generator,在輸入一個(gè)隨機(jī)編碼(random code)z之后,它將輸出一幅由神經(jīng)網(wǎng)絡(luò)自動(dòng)生成的、假的圖片G(z)
- Discriminator,接受G輸出的圖像作為輸入,然后判斷這幅圖像的真假,真的輸出1,假的輸出0
- G生成的圖像會(huì)越來(lái)越逼真,D也越來(lái)越會(huì)判斷圖片的真假,最后我們就不要D了,直接用G來(lái)生成圖像
我們就是要在最大化D的能力的前提下,最小化D對(duì)G的判斷能力 ,所以稱之為 最小最大值問(wèn)題
損失函實(shí)際上是一個(gè)交叉熵,判別器的目的是盡可能的令D(x)接近1(對(duì)于真圖像x的處理評(píng)分要高),令D(G(z))接近0(對(duì)于假圖像G(z)的處理評(píng)分要盡量降低),所以D主要是最大化上面的損失函數(shù)(讓D的辨別能力更強(qiáng)),G恰恰相反,他主要是最小化上述損失函數(shù)(讓生成的假圖像G(z)變得更真實(shí))。
為了增強(qiáng)D的能力,我們分別考慮輸入真的圖像和假的圖像的情況
D的目標(biāo)是什么?G的目標(biāo)是什么?
- D的目標(biāo)是:D(G(z))處理的是假圖像G(z) => 評(píng)分D(G(z))要盡量降低,對(duì)于真圖像x的處理 => 評(píng)分要高,這樣D的辨別能力才會(huì)更強(qiáng)
- G的目標(biāo)是:讓生成的假圖像G(z)變得更真實(shí)、更逼真,讓D難以辨別
GAN的局限性
用戶輸入random code由生成器G參數(shù) fake image即G(Z),傳統(tǒng)的GAN中會(huì)出現(xiàn)如下局限性:
這里user input 是指輸入的random code,output是G生成的G(Z),還要從現(xiàn)實(shí)世界中取一張或者畫(huà)一張真實(shí)圖像,與output一起輸入判別器
生成的圖片看起來(lái)不錯(cuò),但放大看,會(huì)發(fā)現(xiàn)細(xì)節(jié)相當(dāng)模糊
如何改善GAN的局限性
如改善GAN的局限性可以從以下兩個(gè)方面入手:
- 提高GAN的用戶控制能力
- 提高GAN生成圖片的分辨率和質(zhì)量
從以上兩個(gè)方面提出新的算法模型:
pix2pix,有條件的使用用戶輸入,使用成對(duì)的數(shù)據(jù)(paired data)進(jìn)行訓(xùn)練。比如,輸入的是貓?jiān)谧筮?#xff0c;你就不能生成貓?jiān)谟疫叺膱D。Pix2pix的缺點(diǎn):在訓(xùn)練過(guò)程中,需要人為給它標(biāo)出數(shù)據(jù)的對(duì)應(yīng)關(guān)系,比如 現(xiàn)在的輸入條件是貓?jiān)谧筮?#xff0c;人要給它畫(huà)一張或找一張貓?jiān)谧筮叺膱D像,才會(huì)讓G更好的學(xué)習(xí),以產(chǎn)生貓?jiān)谟疫叺膱D像,這對(duì)數(shù)據(jù)源的要求會(huì)很高
CycleGAN,使用不成對(duì)的數(shù)據(jù)(unpaired data)就能訓(xùn)練。
以馬為例,馬訓(xùn)練馬是成對(duì)的數(shù)據(jù),用馬生成斑馬,是不成對(duì)數(shù)據(jù)。由于現(xiàn)實(shí)生活中成對(duì)的樣本比較少,對(duì)于沒(méi)有成對(duì)樣本的情況,使用CycleGAN,CycleGAN有兩個(gè)生成器,馬->斑馬,斑馬->馬,我們最終想要的是馬->斑馬,利用理論上開(kāi)始的馬和馬->斑馬->馬是一樣的,同時(shí)優(yōu)化馬->斑馬,斑馬->馬兩個(gè)生成器,最終使用馬->斑馬。
CycleGAN本質(zhì)是優(yōu)化生成器的一個(gè)思想,拿文本翻譯來(lái)說(shuō),你把一段英文翻譯成中文,再把中文翻譯回英文,假如翻譯回來(lái)的英文和一開(kāi)始的英文天差地別,那么這個(gè)兩次翻譯的結(jié)果肯定是很差的;反之,如果能夠讓翻譯回來(lái)的英文和原本的一樣,就相當(dāng)于是改進(jìn)了兩次翻譯的效果,CycleGAN利用這種方式來(lái)優(yōu)化生成器。
pix2pixHD,生成高分辨率、高質(zhì)量的圖像
未來(lái)還會(huì)持續(xù)更新:
- Conditional GAN
- pix2pix
- CycleGAN
- GauGAN
謝謝支持!
總結(jié)
以上是生活随笔為你收集整理的深入理解GAN对抗生成网络的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 闪存类型测试软件,轻松测闪存类型 测试软
- 下一篇: 一款小巧好用的全局鼠标手势软件——Mou