生成對(duì)抗網(wǎng)絡(luò)GAN(Generative adversarial network)是由Goodfellow大神在NIPS2014上提出栖雾,論文地址如下:https://arxiv.org/pdf/1406.2661.pdf
1.GAN能做什么尝偎?
學(xué)習(xí)是需要理由和動(dòng)力的,讓我們來看看非常熱門的GAN到底有什么什么魔力寓涨,GAN的就是生成不存在于真實(shí)世界但又類似真實(shí)世界的數(shù)據(jù),GAN是將創(chuàng)造力和想象力賦予AI的state-of-the-art,目前GAN的應(yīng)用場景主要如下:
a.AI畫家咆耿,讓AI去作畫;
b.將模糊圖像變清晰(超分辨率爹橱、去霧萨螺、去馬賽克等),需要用AI的“想象力”去腦補(bǔ)丟失的細(xì)節(jié)信息愧驱;
c.數(shù)據(jù)增強(qiáng)慰技,根據(jù)現(xiàn)有的數(shù)據(jù)生成新的與現(xiàn)有數(shù)據(jù)分布相似的數(shù)據(jù),用于擴(kuò)增數(shù)據(jù)组砚;
d.隨著GAN的發(fā)展會(huì)有更多的實(shí)用場景會(huì)用到這種技術(shù)
2.什么是GAN?
GAN主要由兩部分構(gòu)成吻商,也可以理解成兩個(gè)網(wǎng)絡(luò):生成網(wǎng)絡(luò)(Generator)和判別網(wǎng)絡(luò)D(Discrimination)
Generator:G主要用來學(xué)習(xí)真實(shí)圖像分布從而自身生成逼近或超越真實(shí)的圖像,G接收一個(gè)隨機(jī)噪聲z糟红,通過這個(gè)噪聲生成圖片艾帐,記做G(z)。
Discrimination:D是一個(gè)判別網(wǎng)絡(luò)盆偿,判別一張圖片是不是“真實(shí)的”掩蛤,它的輸入?yún)?shù)是x,x代表一張圖片陈肛,輸出D(x)代表x為真實(shí)圖片的概率揍鸟,如果為1,就代表100%是真實(shí)的圖片句旱,而輸出為0阳藻,就代表不可能是真實(shí)的圖片。
在訓(xùn)練過程中谈撒,生成器努力的生成真實(shí)的圖像去欺騙判別器腥泥;而判別器則努力的把生成的圖像和真實(shí)圖像辨別開。這樣啃匿,G和D便構(gòu)成了一個(gè)動(dòng)態(tài)的對(duì)“對(duì)抗過程”蛔外。
對(duì)抗的結(jié)果是什么蛆楞?在最為理想的情況下,對(duì)于G夹厌,它能夠生成“以假亂真”的圖像G(z)歪泳;對(duì)于D齿桃,它難以判別G生成的圖像的真假,也就是D(G(z))=0.5。這樣“對(duì)抗”就結(jié)束了蜗巧,我們獲得了一個(gè)能夠“以假亂真”的圖像生成器G诲锹。
下面具體的說一下"對(duì)抗"的過程古劲。首先肴敛,我們有一個(gè)第一代Generator,G產(chǎn)生一些圖片采够,然后我們把這些圖片和一些真實(shí)的圖片丟到第一代的D里面去學(xué)習(xí)肄方,讓第一代的D能夠分辨生成的圖像和真實(shí)的圖像,然后我們又有了第二代的G蹬癌,第二代的G產(chǎn)生的圖片扒秸,能夠騙過第一代的D,此時(shí)冀瓦,我們?cè)谟?xùn)練第二代的D,依次類推写烤。
下面用數(shù)學(xué)語言來描述這個(gè)過程翼闽。假設(shè)用于訓(xùn)練的真實(shí)圖像數(shù)據(jù)是x,圖像數(shù)據(jù)分布為洲炊,G就是要學(xué)習(xí)到真實(shí)的數(shù)據(jù)分布
感局,
未知。噪聲z的分布為
暂衡,
已知询微。在理想對(duì)抗條件下,學(xué)習(xí)到的
的分布應(yīng)該盡可能接近
狂巢,
將已知分布
映射到了未知分布
上了撑毛。
因?yàn)镈的輸出是一個(gè)二分類問題,所以可根據(jù)交叉熵?fù)p失函數(shù)構(gòu)造GAN的損失函數(shù):
損失函數(shù)中是指訓(xùn)練數(shù)據(jù)x中國的真實(shí)樣本唧领,
指從已知的噪聲分布中提取的樣本藻雌;
- 整個(gè)式子由兩項(xiàng)構(gòu)成。x表示真實(shí)圖片斩个,z表示輸入G網(wǎng)絡(luò)的噪聲胯杭,而G(z)表示G網(wǎng)絡(luò)生成的圖片。
- G的目的:G應(yīng)該希望自己生成的圖片“越接近真實(shí)越好”受啥。也就是說做个,G希望D(G(z))D(G(z))盡可能得大鸽心,這是V(D,G)V(D,G)會(huì)變小。
- 第一項(xiàng)
D(x)越強(qiáng)居暖,值越接近1顽频,
越接近0;
- D的目的:D的能力越強(qiáng)膝但,D(x)D(x)應(yīng)該越大冲九,D(G(x))D(G(x))應(yīng)該越小。因此D的目的和G不同跟束,D希望V(D,G)V(D,G)越大越好莺奸。
3.DCGAN
深度學(xué)習(xí)中處理圖像最好的模型是CNN,DCGAN就是將CNN與GAN進(jìn)行了結(jié)合冀宴,并對(duì)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了一些改變灭贷,以提高收斂速度
取消所有pooling層。G網(wǎng)絡(luò)中使用轉(zhuǎn)置卷積(transposed convolutional layer)進(jìn)行上采樣略贮,D網(wǎng)絡(luò)中用加入stride的卷積代替pooling
在D和G中均使用batch normalization
去掉FC層甚疟,使網(wǎng)絡(luò)變?yōu)槿矸e網(wǎng)絡(luò)
G網(wǎng)絡(luò)中使用ReLU作為激活函數(shù),最后一層使用tanh
D網(wǎng)絡(luò)中使用LeakyReLU作為激活函數(shù)