手把手教你搭建一個GAN

一.GAN網(wǎng)絡(luò)機(jī)理

????????首先先從一幅圖入手,如圖1所示:

圖1. GAN作用機(jī)理

????????假設(shè)在訓(xùn)練開始時,真實樣本分布、生成樣本分布以及判別模型分別是圖中的黑線、綠線和藍(lán)線,其中噪聲就是圖中的z,目的就是為了生成綠線。

? ? ? ? 第二小圖所示,固定生成樣本,先讓判斷器判斷準(zhǔn),以藍(lán)線和黑線交點為起點,以右判斷為真實,以左判斷為假,感覺自己很聰明能夠判斷真假。

? ? ? ? 然后來到第三小圖,生成器去和真實樣本數(shù)據(jù)做一個擬合,從而誤導(dǎo)判決器,但判決器還是能辨認(rèn)出來,生成器騙不了它。

? ? ? ? 第四小圖為,當(dāng)生成器的數(shù)據(jù)概率分別和真實數(shù)據(jù)概率分布重合時,判決器從此就變得傻了,不能對其辨別真?zhèn)危?b>判決器失敗,生成器成功,以假亂真。



二.分析問題

? ? ? ? 圖2為GAN流程圖:

圖2 GAN大體流程

? ? ??????我們有了上述思路和流程圖,就可以來確定問題去實現(xiàn)它了(明確幾個問題去解決):

? ? ? ? 1.? 目標(biāo)函數(shù)該如何設(shè)定??

? ??????2.? 如何生成圖片??

? ??????3.? G(判決器)和D(生成器)應(yīng)該如何設(shè)置??

? ??????4.? 如何進(jìn)行訓(xùn)練?


1.GAN目標(biāo)函數(shù)確定

? ? ? ? ? ?判別模型的目標(biāo)函數(shù)如下:

判別模型目標(biāo)函數(shù)

? ? ? ??1.?整個式子由兩項構(gòu)成。x表示真實圖片,z表示輸入G網(wǎng)絡(luò)的噪聲,而G(z)表示G網(wǎng)絡(luò)生成的圖片。

? ? ? ? 2. D(x)表示D網(wǎng)絡(luò)判斷真實圖片是否真實的概率(因為x就是真實的。所以對于D來說,這個值越接近1越好)。而D(G(z))是D網(wǎng)絡(luò)判斷G生成的圖片的是否真實的概率。

? ? ? ? 3. G的目的:G應(yīng)該希望自己生成的圖片越接近真實越好。

? ? ? ? 4. D的目的:D的能力越強(qiáng),D(x)應(yīng)該越大,D(G(x))應(yīng)該越小。這時V(D,G)會變大。因此式子對于D來說是求最大(max_D)

? ? ? ? ?5. trick:為了前期加快訓(xùn)練,生成器的訓(xùn)練可以把log(1-D(G(z)))換成-log(D(G(z)))

2.GAN圖片生成? ?訓(xùn)練方法

????以下為論文原文:

下圖為形象化的GAN訓(xùn)練方案

形象化的訓(xùn)練方案

input1為真實數(shù)據(jù);input2為生成數(shù)據(jù)

對于判決器而言,其標(biāo)簽認(rèn)定,對于input1的輸出正常應(yīng)該為“1”,input2的輸出正常應(yīng)該為“0”

第一步,首先把左圖的“T”(生成器)固定住,生成一批樣本,然后和真實數(shù)據(jù)一塊送至判決器判決,這步為訓(xùn)練的判決器,希望判決器能把它倆區(qū)分開,分別打上“1”和“0”標(biāo)簽

第二步,先把右圖的“T”(判決器)固定住了,然后調(diào)節(jié)生成器,讓生成的數(shù)據(jù)也為“1”,去把判決器混淆。這步為訓(xùn)練生成器。

注:所有的圖片都是靠噪音來生成的


本文中展示的腳本都添加了注釋,若難以理解,可參見keras文檔

具體代碼,參見github源碼


3.GAN圖片生成? 生成器G


設(shè)置生成器G

以下是生成器G的腳本:


4.GAN圖片生成? 判別器D

參見github源碼:https://github.com/jacobgi

設(shè)置判別器D

以下是判別器D的腳本:


5.GAN圖片生成? 輔助函數(shù)

把判別器D固定,使其能夠調(diào)整生成器G。


6.GAN圖片生成? 訓(xùn)練

然后就可以開始進(jìn)行訓(xùn)練了~~~


7.GAN圖片生成? 生成

這就形成了噪音經(jīng)過一個G網(wǎng)絡(luò),生成了一個圖像,這幅圖像就成功騙過了判決器D。


三.總結(jié)

???以上就是淺談了GAN網(wǎng)絡(luò)的原理,并且搭建了一個原始的GAN網(wǎng)絡(luò)。

? ?感興趣的小伙伴~可以實現(xiàn)CGAN制定類的輸出,DCGAN穩(wěn)定訓(xùn)練網(wǎng)絡(luò),infoGAN實現(xiàn)等。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容