一文通俗了解对抗生成网络(GAN)核心思想
目前有時(shí)間的時(shí)候?qū)W習(xí)一下gan的知識(shí),但是時(shí)間也不多,這里記錄一下所學(xué),不要太期待喔,完全是學(xué)習(xí)李宏毅老師課程的筆記,由于是新手,歡迎大家交流指錯(cuò)。
引言
GAN已經(jīng)作為一種思想來(lái)滲透在ML的其余領(lǐng)域,做出了很多很Amazing的東西。被Yann LeCun評(píng)價(jià)為近十年最有趣的idea,所以相關(guān)研究方向的同學(xué)gan成了一個(gè)必須要學(xué)的思想和方法。
Basic Idea of GAN (Generator)
GAN中包括兩個(gè)最基本的組件,其中一個(gè)就是Generator,對(duì)于Image Generation過(guò)程來(lái)說(shuō),你給它一個(gè)向量,它輸出一個(gè)圖片(image)。
input: vector
output: image
如下所示:
對(duì)于Sentence Generation來(lái)說(shuō),你給它一個(gè)向量,它輸出一個(gè)句子(sentence)。
input: vector
output: sentence
如下所示:
其中我們以image generation過(guò)程來(lái)仔細(xì)說(shuō)明一下其中過(guò)程原理!
實(shí)際上Generator就是一個(gè)NN網(wǎng)絡(luò),輸入是一個(gè)vector,它的輸出是一個(gè)高維的向量,比如image是16*16,那么它的輸出就是256維的向量。
如圖所示:
其中,輸入向量的每一個(gè)維度都可以代表輸出image的某些特征,比如說(shuō)第一維度的值,代表著image人物的頭發(fā)長(zhǎng)短。
那么我們?cè)谡{(diào)大input vector的第一維的值的時(shí)候,我們可以看到生成的image的頭發(fā)變長(zhǎng),如下圖所示:
比如說(shuō),input vector某一個(gè)維度的值大小代表生成image的頭發(fā)顏色藍(lán)色深淺,調(diào)大后,生成的image頭發(fā)變得更藍(lán)一些:
或者說(shuō),input vector某一個(gè)維度的值大小代表生成image的口張開(kāi)的大小,調(diào)大后,生成的image人物中口張的更大一些:
總而言之,GAN中的Generator就是一個(gè)神經(jīng)網(wǎng)絡(luò),丟給它一個(gè)輸入向量,輸出也是一個(gè)向量。
在不同的任務(wù)中,生成的東西不同,輸入向量的每一個(gè)維度都代表著輸出image的特定特征。
Basic Idea of GAN(Discriminator)?
講完了Generator之后,我們來(lái)看GAN的另一個(gè)組件,Discriminator。Discriminator也是一個(gè)NN網(wǎng)絡(luò),它的輸入是Generator的輸出或者是真實(shí)的image...,輸出是一個(gè)標(biāo)量,代表接受的輸入的quality有多好,數(shù)值越大,代表越好,數(shù)值越小,代表越差。
如下圖:
比如給它輸入是真實(shí)的image,那么經(jīng)過(guò)Discriminator之后應(yīng)該是輸出的標(biāo)量值很大,代表送入給它的image的質(zhì)量很高。
比如給它輸入是差的image,那么經(jīng)過(guò)Discriminator之后應(yīng)該是輸出的標(biāo)量值很小,代表送入給它的image的質(zhì)量很低。
Algorithm of GAN
下面我們來(lái)介紹一下最基本的gan的訓(xùn)練算法,不夠嚴(yán)謹(jǐn),但是容易接受。
首先,跟任何網(wǎng)絡(luò)訓(xùn)練一樣,我們需要初始化生成器G,和判別器D的參數(shù)
形式化公式就是如下:
1、然后在每一輪中,首先固定住G,訓(xùn)練D,具體怎么訓(xùn)練呢?
我們?nèi)我膺x取一些向量,送給G,同時(shí)從database中挑選出一些數(shù)據(jù),使得判別器學(xué)會(huì)從database挑選出真實(shí)的圖片打分高,任意選取向量從G中生成的圖片,打分低。這樣就是在訓(xùn)練判別器:
形式化公式如下:
稍微解釋一下圖片中的公式,訓(xùn)練判別器就是希望它對(duì)于真實(shí)的圖片打分高,生成的圖片打分低。而公式中是最大化那個(gè)式子,分解來(lái)看完全對(duì)應(yīng)文字的解釋:
對(duì)應(yīng)真正的圖片打分高,也就是最大化如下公式,公式如下:
2、第二步是固定判別器D,訓(xùn)練生成器G,我們還是任意給定一些向量,這些向量送給G,生成一些圖片,然后喂進(jìn)判別器進(jìn)行判別。
首先我們的目的是使得生成器能夠生成非常真實(shí)的圖片,對(duì)于真正真實(shí)的圖片來(lái)說(shuō),判別器的打分是高的,那么也就是說(shuō),我們需要訓(xùn)練生成器,使得通過(guò)生成器生成出來(lái)的圖片讓判別器打分高,盡可能的迷惑判別器,這樣通過(guò)生成器生成出來(lái)的圖片就是接近“真實(shí)的”,土話說(shuō)就是跟真的好像啊。
形式化公式如下:
公式解釋為:最大化使得判別器對(duì)于生成器生成的圖片打分。
這里需要注意的是訓(xùn)練生成器的時(shí)候,一定要固定判別器的參數(shù),因?yàn)樵趯?shí)際實(shí)現(xiàn)中,生成器和判別器會(huì)構(gòu)成一個(gè)大網(wǎng)絡(luò),如果不固定判別器的參數(shù)去訓(xùn)練生成器的話。
因?yàn)槟繕?biāo)是使得最后的得分高,網(wǎng)絡(luò)這個(gè)時(shí)候僅僅更新最后一層的參數(shù)就能讓最后的輸出標(biāo)量非常大,很顯然這不是我們希望的,如果固定了判別器后面幾個(gè)layer,訓(xùn)練前面生成器的參數(shù)就能正常學(xué)習(xí)。
實(shí)例
最后李宏毅老師給出了他自己用gan生成二次元頭像的實(shí)例,下面分別給出訓(xùn)練了不同輪次的生成結(jié)果,給大家一個(gè)直觀的感覺(jué):
GAN的魅力
可能不少人會(huì)有疑問(wèn),就是生成一些牛逼的圖像有什么用,模型再厲害,我拿一個(gè)照相機(jī)照出來(lái)的難度會(huì)比你差,這里解釋一下,如果僅僅只能生成見(jiàn)過(guò)的圖片,確實(shí)沒(méi)有什么厲害的地方,但是如果可以“合理”的生成沒(méi)有見(jiàn)過(guò)的圖像,是不是就很有意思呢?如下圖,中間的圖片就是訓(xùn)練集中重來(lái)沒(méi)有出現(xiàn):
它居然自己學(xué)到了,在中間參數(shù)的時(shí)候,頭像的轉(zhuǎn)向等等特質(zhì),非常的amazing
視頻資料如下:
https://www.bilibili.com/video/av23316535from=search&seid=13825323076277645807
備注:公眾號(hào)菜單包含了整理了一本AI小抄,非常適合在通勤路上用學(xué)習(xí)。
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)在線手冊(cè)AI基礎(chǔ)下載(第一部分)備注:加入本站微信群或者qq群,請(qǐng)回復(fù)“加群”獲取一折本站知識(shí)星球優(yōu)惠券,請(qǐng)回復(fù)“知識(shí)星球”喜歡文章,點(diǎn)個(gè)在看
總結(jié)
以上是生活随笔為你收集整理的一文通俗了解对抗生成网络(GAN)核心思想的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 你一定不能错过的pandas 1.0.0
- 下一篇: 机器学习案例:scikit-learn实