生成對(duì)抗網(wǎng)絡(luò)(Generative Adversarial Networks,GAN)——讓機(jī)器學(xué)習(xí)具有創(chuàng)造力

1 生成對(duì)抗網(wǎng)絡(luò)概述

有時(shí)候我們希望網(wǎng)絡(luò)具有一定的創(chuàng)造力午绳,比如畫(huà)畫(huà)、編曲等等马篮,能否實(shí)現(xiàn)呢沾乘?是可以實(shí)現(xiàn)的,大家可以鑒別一下下面這幾張照片浑测,哪些是真實(shí)的人臉翅阵,哪些是機(jī)器生成的人臉。很難判斷吧?本節(jié)最后會(huì)給出答案掷匠。

到底哪些是機(jī)器產(chǎn)生的读慎?

要實(shí)現(xiàn)上述能力,就要用到一種新的網(wǎng)絡(luò)架構(gòu)— 生成對(duì)抗網(wǎng)絡(luò)(Generative Adversarial Net槐雾,GAN
夭委。首先,我們大概來(lái)了解一下什么是 “生成” 募强,什么是 “對(duì)抗”株灸。

8.1.1 對(duì)“生成”的理解

假設(shè)我們?cè)O(shè)計(jì)一個(gè)網(wǎng)絡(luò),將其稱為 “生成器(Generator)”擎值。生成器的輸入是一個(gè)向量z慌烧,該向量一般是低維向量,它是通過(guò)一個(gè)特定的分布采樣出來(lái)的鸠儿,例如正態(tài)分布屹蚊。生成器的輸出是另一個(gè)向量y,該向量是一個(gè)高維向量进每,比如一個(gè)二次元的人臉汹粤。由于生成器的輸入向量是通過(guò)一個(gè)分布隨機(jī)采樣的,所以輸入向量每次都是不一樣的田晚,因此生成器每次的輸出也是不一樣的嘱兼,會(huì)形成一個(gè)復(fù)雜的分布。盡管輸出向量不一樣贤徒,但是我們要求這些輸出向量都是二次元的人臉芹壕,而不是其它。也就是說(shuō)期望生成器輸出的復(fù)雜分布要和某個(gè)特定分布(例如所有二次元人臉的集合)盡可能相似接奈,如何做到呢踢涌?這就要用到“對(duì)抗”。

生成(Generator)

1.2 對(duì)“對(duì)抗”的理解

我們常說(shuō)要“感謝對(duì)手”序宦,為什么呢睁壁?因?yàn)閷?duì)手逼得我們不斷想辦法進(jìn)步,最后讓我們進(jìn)化成長(zhǎng)為優(yōu)秀的人挨厚。為了使生成網(wǎng)絡(luò)不斷進(jìn)化以成為畫(huà)畫(huà)高手堡僻,我們還需要訓(xùn)練另外一個(gè)網(wǎng)絡(luò),叫做 “鑒別器(Discriminator)” 疫剃。鑒別器是專門(mén)用來(lái)和生成網(wǎng)絡(luò)進(jìn)行對(duì)抗的,就是用它來(lái)逼得生成網(wǎng)絡(luò)不斷進(jìn)化硼讽。鑒別器的輸入是一張圖片巢价,它的輸出則是一個(gè)0-1的數(shù)字,數(shù)字越大就越認(rèn)為這張圖片是一個(gè)二次元圖片,數(shù)字越小呢就越認(rèn)為這張圖片不是一個(gè)二次元圖片壤躲。比如下圖中上面兩張圖片很清楚是二次元城菊,所以鑒別器輸出1.0,而下面兩張圖片很模糊碉克,所以鑒別器輸出0.1凌唬。因此,簡(jiǎn)單點(diǎn)講漏麦,鑒別器的功能就是判斷某張圖片到底是不是二次元圖片客税。

鑒別器

現(xiàn)在我們把這個(gè)鑒別器拿過(guò)來(lái)和生成器進(jìn)行對(duì)抗:

  • ①版本1的生成器的參數(shù)是隨機(jī)生成的,所以其生成的圖片啥都不是撕贞。這 時(shí)候更耻,我們對(duì)鑒別器進(jìn)行訓(xùn)練,以使鑒別器能夠鑒別出哪些是生成器生成的圖片捏膨,哪些是真實(shí)的二次元人臉秧均。經(jīng)過(guò)訓(xùn)練后,我們得到了版本1的鑒別器号涯。
  • ②在版本1的鑒別器的基礎(chǔ)上目胡,我們?cè)賮?lái)訓(xùn)練生成器,訓(xùn)練的目的是讓鑒別器分辨不出哪些是生成器生成的圖片链快,哪些是真實(shí)的二次元人臉讶隐。通過(guò)訓(xùn)練之后,得到了版本2的生成器久又,此時(shí)生成的圖片有一點(diǎn)點(diǎn)像二次元了巫延,足以騙過(guò)版本1的鑒別器。
  • ③在版本2的生成器的基礎(chǔ)上地消,我們接著訓(xùn)練鑒別器炉峰,同樣是要使鑒別器能夠鑒別出哪些是版本2生成器生成的圖片,哪些是真實(shí)的二次元人臉脉执。通過(guò)訓(xùn)練之后疼阔,得到了版本2的鑒別器。
  • ④重復(fù)上述過(guò)程半夷,不斷進(jìn)化生成器和鑒別器婆廊,最后生成器可以生成非常逼真的二次元人臉。

通過(guò)上述過(guò)程我們可以看出巫橄,生成器和鑒別器在不斷的對(duì)抗過(guò)程中淘邻,兩者都在不斷的進(jìn)步,可以說(shuō)是對(duì)抗成就了對(duì)方湘换。所以宾舅,它們亦敵亦友统阿,相愛(ài)相殺,既對(duì)立又統(tǒng)一筹我。

對(duì)抗的基本思路

2 生成對(duì)抗網(wǎng)絡(luò)的理論基礎(chǔ)

我們剛才提到生成器的輸入是由一個(gè)簡(jiǎn)單的分布(如正態(tài)分布)采樣得到的一堆向量扶平,輸出是一堆向量構(gòu)成另一個(gè)一個(gè)復(fù)雜的分布,用P_G表示蔬蕊。我們期望P_G和某個(gè)特定的分布盡可能地相似结澄,而這個(gè)分布來(lái)自于一堆真實(shí)的數(shù)據(jù),這個(gè)分布表示為P_{data}岸夯。如果我們用Div(P_G,P_{data})來(lái)表示這兩個(gè)分布的Divergence(這個(gè)英文不好翻譯麻献,暫且理解為“差異程度”吧),那么我們的目標(biāo)就是尋找一個(gè)生成器G^*要使Div(P_G,P_{data})最小囱修,即赎瑰,G^*=arg\min_{G} Div(P_G,P_{data})我們知道在機(jī)器學(xué)習(xí)中,訓(xùn)練的目標(biāo)是要使損失函數(shù)最小破镰,所以在該任務(wù)中損失函數(shù)就是Div(P_G,P_{data})餐曼。但是有一個(gè)很關(guān)鍵的問(wèn)題,我們?nèi)绾斡?jì)算這兩個(gè)分布的Divergence呢鲜漩?好像沒(méi)法用解析式去描述這兩個(gè)分布的Divergence源譬,那怎么辦呢?我們可以通過(guò)采樣的方式來(lái)計(jì)算這兩個(gè)分布的Divergence孕似。

生成網(wǎng)絡(luò)的目標(biāo)

采樣是很好辦的踩娘,以二次元人臉生成器為例。P_{data}的采樣很簡(jiǎn)單喉祭,我們從一堆二次元的圖庫(kù)中隨機(jī)采樣一些圖片就行了养渴。P_{G}的采樣也很簡(jiǎn)單,我們從正態(tài)分布中采樣一些向量泛烙,生成器輸出一些圖片理卑,就得到P_{G}的采樣圖片了。我們有了P_{data}P_{G}的采樣了蔽氨,那么怎么計(jì)算Div(P_G,P_{data})呢藐唠?這就需要用到鑒別器了。
通過(guò)采樣來(lái)計(jì)算兩個(gè)分布的Divergence

假設(shè)從P_{data}采樣得到的數(shù)據(jù)用藍(lán)色五角星表示鹉究,從P_{G}采樣得到的數(shù)據(jù)用黃色五角星表示宇立。鑒別器的目的就是遇到藍(lán)色五角星時(shí)輸出的分?jǐn)?shù)要盡量高,遇到黃色五角星時(shí)輸出的分?jǐn)?shù)要盡量低自赔。如果用V(D,G)鑒別器訓(xùn)練的目標(biāo)函數(shù)(最大化一般稱為目標(biāo)函數(shù)妈嘹,最小化一般稱為損失函數(shù)),那么就有匿级,V(G, D)=E_{y \sim P_{\text {data }}}[\log D(y)]+E_{y \sim P_{G}}[\log (1-D(y))]其中E_{y \sim P_{\text {data }}}[\log D(y)]表示當(dāng)yP_{data}中采樣蟋滴,通過(guò)鑒別器后的輸出D(y)要盡可能大染厅,E_{y \sim P_{G}}[\log (1-D(y))]表示當(dāng)yP_{data}中采樣痘绎,通過(guò)鑒別器后的輸出D(y)要盡可能小津函,因此加了個(gè)負(fù)號(hào)」乱常可以看出該式中還專門(mén)取了個(gè)對(duì)數(shù)尔苦,這是為了和分類問(wèn)題中的交叉熵保持一致,因?yàn)樵撌郊觽€(gè)負(fù)號(hào)就是分類問(wèn)題中的交叉熵了行施。在訓(xùn)練分類器的時(shí)候是要最小化交叉熵允坚,這里要最大化V(D,G),所以兩者是等同的蛾号。因此稠项,鑒別器也可以看成一個(gè)二分類器,一類數(shù)據(jù)從P_{data}采樣得到鲜结,一類數(shù)據(jù)P_{G}采樣得到展运。
最重要的一點(diǎn)是,\max_{D}V(D,G)和上面提到的Divergence是相關(guān)的精刷,這一點(diǎn)在GAN最原始的文章中有嚴(yán)格的數(shù)學(xué)推理拗胜。
鑒別器

我們可以從直觀上來(lái)理解為什么\max_{D}V(D,G)Div(P_G,P_{data})是相關(guān)的。假設(shè)Div(P_G,P_{data})比較小怒允,表示這兩者很相似埂软,那么從P_{G}P_{data}采樣得到的數(shù)據(jù)混到一起就很難被鑒別,因此鑒別器的\max_{D}V(D,G)就不會(huì)太大纫事;相反地勘畔,如果Div(P_G,P_{data})比較大,表示這兩者差異性很大丽惶,那么從P_{G}P_{data}采樣得到的數(shù)據(jù)混到一起就比較容易被鑒別炫七,因此鑒別器的\max_{D}V(D,G)就會(huì)比較大。希望了解詳情的蚊夫,請(qǐng)移步GAN的原文诉字。
image.png

既然我們已經(jīng)知道\max_{D}V(D,G)Div(P_G,P_{data})是相關(guān)的,而且是正相關(guān)的知纷。所以生成器的損失函數(shù)中的Div(P_G,P_{data})就可以用\max_{D}V(D,G)來(lái)進(jìn)行替換壤圃,可以得到,G^*=arg\min_{G} \max_{D}V(D,G)這個(gè)損失函數(shù)有點(diǎn)復(fù)雜琅轧,又是\min伍绳,又是\max。其實(shí)這個(gè)損失函數(shù)包含了兩個(gè)優(yōu)化問(wèn)題:首先是在固定生成器G的情況下乍桂,找到一個(gè)鑒別器G使V(D,G)最大冲杀,然后是要找到鑒別器G效床,使\max_{D}V(D,G)最小。因此权谁,前面提到的對(duì)抗過(guò)程就是求解G^*=arg\min_{G} \max_{D}V(D,G)的過(guò)程剩檀。所以生成對(duì)抗網(wǎng)絡(luò)的訓(xùn)練如下圖所示。
image.png

對(duì)了旺芽,本節(jié)最前面的人臉全部是由機(jī)器生成的沪猴,驚嘆吧!采章?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末运嗜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子悯舟,更是在濱河造成了極大的恐慌担租,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抵怎,死亡現(xiàn)場(chǎng)離奇詭異奋救,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)便贵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)菠镇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人承璃,你說(shuō)我怎么就攤上這事利耍。” “怎么了盔粹?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵隘梨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我舷嗡,道長(zhǎng)轴猎,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任进萄,我火速辦了婚禮捻脖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘中鼠。我一直安慰自己可婶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布援雇。 她就那樣靜靜地躺著矛渴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惫搏。 梳的紋絲不亂的頭發(fā)上具温,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天蚕涤,我揣著相機(jī)與錄音,去河邊找鬼铣猩。 笑死揖铜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的剂习。 我是一名探鬼主播蛮位,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼较沪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鳞绕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起尸曼,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤们何,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后控轿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體冤竹,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年茬射,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鹦蠕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡在抛,死狀恐怖钟病,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情刚梭,我是刑警寧澤肠阱,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站朴读,受9級(jí)特大地震影響屹徘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜衅金,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一噪伊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧氮唯,春花似錦鉴吹、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至琳水,卻和暖如春肆糕,著一層夾襖步出監(jiān)牢的瞬間般堆,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工诚啃, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留淮摔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓始赎,卻偏偏與公主長(zhǎng)得像和橙,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子造垛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容