生成式对抗网络Generative Adversarial Networks(GANs)
1. 前言
2. 參考資料
3. 研究背景
4. GAN的框架
4.1 對(duì)抗框架(Adeversarial Nets)
*關(guān)于“無(wú)監(jiān)督學(xué)習(xí)”的說(shuō)明
4.2 Minimax two-player game(Loss)
4.3 Training procedure
5. GAN的應(yīng)用
6. 結(jié)語(yǔ)
1. 前言
GAN(Generative Adversarial Networks),是生成對(duì)抗網(wǎng)絡(luò)于2014年由Ian Good fellow在他的論文Generative Adversarial Nets提出。
在GAN被提出之后,立刻在機(jī)器學(xué)習(xí)領(lǐng)域得到了巨大反響,并且被科學(xué)工作者們應(yīng)用在許多領(lǐng)域,且取得了令人印象深刻的成果。在2016NIPS會(huì)議上,Goodfellow對(duì)GAN做了一次長(zhǎng)達(dá)2個(gè)小時(shí)的報(bào)告,將GAN的原理,訓(xùn)練tips,以及一些影響比較大的GAN變體等等綜合在一起,信息量比較大。
2. 參考資料
Paper: Generative Adversarial Nets.
Slide:”Generative Adversarial Networks,” NIPS 2016 tutorial.
3. 研究背景
其實(shí)在機(jī)器學(xué)習(xí)中主要分為兩類(lèi)模型:
1. 判別模型(Discriminative model)
實(shí)現(xiàn)高維的、人可以感知的信息(如聲音、圖片等)到一個(gè)標(biāo)簽(可以是語(yǔ)義,類(lèi)別)的映射,如上圖,我們向判別模型輸入一張貓的圖片,就能輸出”cat”的標(biāo)簽。
2. 生成模型(Generative model)
學(xué)習(xí)的是真實(shí)數(shù)據(jù)的概率分布,并且模擬真實(shí)數(shù)據(jù)的生成。對(duì)大家來(lái)說(shuō)可能較為常見(jiàn)的例子就是自動(dòng)編碼器(Autoencoder)和反卷積(Transposed convolution),對(duì)這兩者我稍微解釋一下。
- 自動(dòng)編碼器:見(jiàn)上圖,自動(dòng)編碼器分為encoder(編碼器)和decoder(解碼器)。將圖片輸入自動(dòng)編碼器時(shí),編碼器首先對(duì)圖像進(jìn)行編碼,然后通過(guò)解碼器恢復(fù)成原圖。在整個(gè)網(wǎng)絡(luò)訓(xùn)練好以后,如果我們將編碼器去掉,留下從code通過(guò)解碼器的一個(gè)結(jié)構(gòu),那這個(gè)就是生成真實(shí)數(shù)據(jù)的過(guò)程,因此code通過(guò)decoder這部分結(jié)構(gòu)這屬于一種生成模型。
- 反卷積:卷積實(shí)際上會(huì)對(duì)圖片進(jìn)行下采樣,而反卷積的過(guò)程會(huì)對(duì)圖像進(jìn)行上采樣,這個(gè)上采樣的過(guò)程也是一種生成的過(guò)程,因此也屬于生成模型。在討論的時(shí)候,學(xué)長(zhǎng)提到反卷積可以被歸為自動(dòng)編碼器,因?yàn)榫矸e和反卷積的kernel是互為轉(zhuǎn)置的關(guān)系,與解碼器與編碼器之間的關(guān)系一致,但是我表示不同意啦,因?yàn)樵谟?xùn)練時(shí),自動(dòng)編碼器的編碼器和解碼器是一起訓(xùn)練的,但是反卷積的核是利用訓(xùn)練好的卷積核進(jìn)行變換的,即不是聯(lián)合訓(xùn)練得到的。(Update:17.9.14,還沒(méi)研究過(guò)反卷積,日后可能需要修改。)
生成模型的任務(wù)是學(xué)習(xí)概率密度并且生成數(shù)據(jù),但在求解真實(shí)數(shù)據(jù)的概率密度分布的過(guò)程中有很大難度,常用的方法有最大似然估計(jì)(Maximum likelihood estimation)等,要求解概率幾乎無(wú)法進(jìn)行。
而Goodfellow就想到一種超奇妙的方法,利用判別網(wǎng)絡(luò)(D)和生成網(wǎng)絡(luò)(G)兩個(gè)網(wǎng)絡(luò)一起訓(xùn)練,成功繞開(kāi)以上的難點(diǎn),模擬真實(shí)數(shù)據(jù)的生成。
4. GAN的框架
論文提出了一個(gè)新的網(wǎng)絡(luò),通過(guò)一個(gè)對(duì)抗的過(guò)程來(lái)估計(jì)生成模型。在這個(gè)過(guò)程中會(huì)同時(shí)訓(xùn)練兩個(gè)模型:一個(gè)生成模型GG用于估計(jì)數(shù)據(jù)分布,一個(gè)判別模型DD來(lái)預(yù)測(cè)一個(gè)樣本是來(lái)自訓(xùn)練集(真實(shí)數(shù)據(jù)集)而非GG的概率。對(duì)于GG來(lái)說(shuō)訓(xùn)練過(guò)程就是要使DD判斷錯(cuò)誤的可能性最大化。
形象一點(diǎn)說(shuō),生成模型GG是一個(gè)造假幣的人,而辨別模型DD是一個(gè)鑒別真假幣的人,GG的目標(biāo)是造出能夠以假亂真的假幣,而DD的目標(biāo)是正確判別真假,倆人最開(kāi)始都是新手,DD鑒別能力如果變強(qiáng),則GG的造假能力也必須變強(qiáng)才能蒙蔽DD的雙眼;GG造假能力變強(qiáng)之后,DD也必須提高自己的鑒別能力才能做一個(gè)合格的鑒別師。于是DD和GG在相互博弈的過(guò)程當(dāng)中不斷提高各自的能力,理論上來(lái)說(shuō),最終GG則能夠造出接近和真幣一樣的假幣。
4.1 對(duì)抗框架(Adeversarial Nets)
將這個(gè)框架應(yīng)用到圖像生成上,就有了下面這個(gè)框架:
同樣,框架中涉及到兩個(gè)網(wǎng)絡(luò)GG和DD,對(duì)這倆網(wǎng)絡(luò)參數(shù)進(jìn)行更加詳細(xì)的解釋:
xfake=G(z;θ(G))xfake=G(z;θ(G)):表示GG的輸入是噪聲zz(符合特定分布),輸出xx,即假的圖片,而θ(G)θ(G)則是生成器GG里的待訓(xùn)練權(quán)重集合;
D(x;θ(D))∈[0,1]D(x;θ(D))∈[0,1]:表示DD的輸入是xx(分為xfakexfake和xrealxreal),DD會(huì)對(duì)輸入的圖片xx做一個(gè)判斷,得到xx是真的概率,由此輸出一個(gè)范圍在[0,1][0,1]之間的數(shù),θ(D)θ(D)則是辨別器DD里的待訓(xùn)練參數(shù)集合。
上圖中的工作流程解釋:
從符合特定分布的噪聲中采樣一定數(shù)目的點(diǎn)zz輸入生成器,生成假造的數(shù)據(jù)xfakexfake向DD輸入,另外向DD同時(shí)輸入的還有真實(shí)數(shù)據(jù)xrealxreal。按照DD和GG各自的目標(biāo):DD希望辨別真假的能力強(qiáng),則希望相應(yīng)的D(xreal)D(xreal)接近1,而D(xfake)D(xfake)(即D(G(z))D(G(z)))接近0;而GG的任務(wù)是希望D(xfake)D(xfake)(即D(G(z))D(G(z)))接近1。
上述的”1”和”0”其實(shí)可以看作是對(duì)輸入打上的標(biāo)簽,那么GG和DD的矛盾點(diǎn)在于,對(duì)于輸入DD中的G(z)G(z),DD希望D(G(z))D(G(z))能對(duì)應(yīng)標(biāo)簽0,而GG希望它對(duì)應(yīng)標(biāo)簽1。
*關(guān)于“無(wú)監(jiān)督學(xué)習(xí)”的說(shuō)明
GAN還很吸引人的一點(diǎn)是,它是無(wú)監(jiān)督學(xué)習(xí),也就是說(shuō)輸入數(shù)據(jù)時(shí)是不需要輸入標(biāo)簽的,那就讓人很好奇了,要同時(shí)訓(xùn)練新手GG和新手DD,GG由DD引導(dǎo)學(xué)習(xí),那沒(méi)有標(biāo)簽的情況下誰(shuí)來(lái)引導(dǎo)DD學(xué)習(xí)呢?
所以這里要說(shuō)明的一點(diǎn)是,確實(shí)我們不需要向DD輸入標(biāo)簽,但不代表在訓(xùn)練的時(shí)候沒(méi)有標(biāo)簽。上圖有表明,xx的數(shù)據(jù)來(lái)源有兩個(gè),一個(gè)是輸入的training data,一個(gè)是G(z)G(z),這就是說(shuō)只要是輸入的數(shù)據(jù)一定是real,而生成的數(shù)據(jù)一定是fake,由此根據(jù)數(shù)據(jù)來(lái)源不同就可以確定樣本是real還是fake,在程序中就可以根據(jù)數(shù)據(jù)來(lái)源給數(shù)據(jù)打上相應(yīng)標(biāo)簽”1”或者”0”。所以DD在訓(xùn)練的時(shí)候是有標(biāo)簽的,training data(real)的標(biāo)簽是”1”,generated data(fake)的標(biāo)簽是”0”,所以其實(shí)DD就是一個(gè)普通的判別器,在訓(xùn)練的時(shí)候既有數(shù)據(jù)又有標(biāo)簽,利用標(biāo)簽和DD輸出的loss利用隨機(jī)梯度下降的方法(STD)來(lái)求解DD中的參數(shù)θ(D)θ(D)。
4.2 Minimax two-player game(Loss)
前文已經(jīng)到DD和GG的各自目標(biāo),以及兩者在數(shù)據(jù)G(z)G(z)上的矛盾。將這個(gè)矛盾以數(shù)學(xué)公式的形式表示出來(lái)如下:
這個(gè)公式就叫做GG和DD之間的Minimax two-player game。
以下從GG和DD的角度對(duì)這個(gè)公式進(jìn)行分析:
1. DD的角度:
上述公式左邊部分表示DD希望V(D,G)V(D,G)的值盡量大。
公式右邊前半部分
————————————————
版權(quán)聲明:本文為CSDN博主「yucicheung」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/yucicheung/article/details/77950324
總結(jié)
以上是生活随笔為你收集整理的生成式对抗网络Generative Adversarial Networks(GANs)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 二叉树的四种遍历方式
- 下一篇: SpringCloud底层原理