生成式對抗網(wǎng)絡(luò)GANs簡介

學(xué)號:16020120050

姓名:吳言凡

轉(zhuǎn)自:http://36kr.com/p/5086889.html

【嵌牛導(dǎo)讀】:介紹GAN的概念报强,并解釋其工作原理和面臨的挑戰(zhàn)

【嵌牛鼻子】:生成式對抗網(wǎng)絡(luò)GANs

【嵌牛提問】:什么是GANs劝评?GANs如何工作?

【嵌牛正文】:

神經(jīng)網(wǎng)絡(luò)取得了長足的進步,目前識別圖像和聲音的水平已經(jīng)和人類相當(dāng)撇叁,在自然語言理解方面也達到了很好的效果。但即使如此柔纵,討論用機器來自動化人類任務(wù)看起來還是有些勉強笆载。畢竟,我們做的不僅僅是識別圖像和聲音鳍征、或者了解我們周圍的人在說什么黍翎,不是嗎?

讓我們看一些需要人類創(chuàng)造力的例子:

通過學(xué)習(xí)大數(shù)據(jù)文摘過去的文章艳丛,訓(xùn)練一個可以撰寫文章并將數(shù)據(jù)科學(xué)概念以非常簡單的方式向社區(qū)解釋的人工智能作者

你不能從著名畫家那里買到一幅名畫匣掸。但你可不可以創(chuàng)造一個人工智能畫家,通過從畫家過去的作品中學(xué)習(xí)氮双,然后像任何藝術(shù)家一樣畫畫碰酝?

這些任務(wù)確實難以自動化,但是生成式對抗網(wǎng)絡(luò)(GAN)已經(jīng)開始使其中的某些任務(wù)成為可能戴差。

如果你感到被GAN的名字所嚇倒砰粹,別擔(dān)心,看完這篇科普文章你就會發(fā)現(xiàn)這不是一個高深莫測的東西造挽。

在本文中碱璃,我將向您介紹GAN的概念,并解釋其工作原理和面臨的挑戰(zhàn)饭入。我還將讓你了解人們使用GAN所做的一些很酷的事情嵌器,并提供一些重要資源的鏈接,以深入了解這些技術(shù)谐丢。

不好意思爽航,但是什么是GAN?

深度學(xué)習(xí)領(lǐng)域的杰出代表Yann LeCun在Quora上寫道:

“生成式對抗網(wǎng)絡(luò)(GAN)及其相關(guān)的變化乾忱,是我認(rèn)為的機器學(xué)習(xí)領(lǐng)域近十年最有趣的想法讥珍。”

當(dāng)然他會有這樣的觀點窄瘟。當(dāng)我看到生成式對抗網(wǎng)絡(luò)被最大程度執(zhí)行時的驚人表現(xiàn)衷佃,我也同樣印象深刻。

但是什么是GAN呢蹄葱?

讓我用個類比來解釋這個概念:

如果你想更加擅長某種東西氏义,比如下棋锄列,你會怎么做?你可能會和比你更強的對手對弈惯悠。你會分析你做錯了什么邻邮、對方做對了什么,并思考下一場比賽如何才能擊敗他(她)克婶。

你會重復(fù)這一步驟筒严,直到你擊敗對手。這個概念可以被納入到構(gòu)建更好的模型中情萤。所以簡單來說萝风,要獲得一個強大的英雄(即生成器generator),我們需要一個更強大的對手(即鑒別器discriminator)紫岩。

真實生活的另一個類比:

一個更真實的類比是偽造者和調(diào)查員之間的關(guān)系。

偽造者的任務(wù)是模仿著名藝術(shù)家的畫作睬塌。如果這個偽造的作品能夠超越原始的作品泉蝌,那么這個偽造者就可以賣出這張作品換很多錢。

另一方面揩晴,藝術(shù)品調(diào)查員的任務(wù)是抓住這些造假的偽造者勋陪。怎么做呢,他知道什么屬性能把原作和贗品區(qū)分開來硫兰。通過檢驗手中的作品是否是真的诅愚,他可以評估自己的知識。

偽造者與調(diào)查員的競賽繼續(xù)進行劫映,最終催生了世界級的調(diào)查員(很不幸以及世界級的偽造者)违孝。 這是一場善與惡之間的斗爭。

GANs如何工作

我們已經(jīng)知道了GAN的概要泳赋,現(xiàn)在繼續(xù)去了解細(xì)節(jié)部分雌桑。

正如我們看到的,GAN有兩個主要組成部分祖今,生成器神經(jīng)網(wǎng)絡(luò)(Generator Neural Network)和鑒別器神經(jīng)網(wǎng)絡(luò)(Discriminator Neural Network)校坑。

生成網(wǎng)絡(luò)采用隨機輸入,嘗試輸出數(shù)據(jù)樣本千诬。在上述圖像中耍目,我們可以看到生成器G(z)從p(z)獲取了輸入z,其中z是來自概率分布p(z)的樣本徐绑。生成器產(chǎn)生一個數(shù)據(jù)邪驮,將其送入鑒別器網(wǎng)絡(luò)D(x)。鑒別網(wǎng)絡(luò)的任務(wù)是接收真實數(shù)據(jù)或者生成數(shù)據(jù)傲茄,并嘗試預(yù)測輸入是真實還是生成的耕捞。它需要一個來自pdata(x)的輸入x衔掸,其中pdata(x)是我們的真實數(shù)據(jù)分布。 D(x)然后使用Sigmoid函數(shù)解決二元分類問題俺抽,并輸出0到1的值敞映。

我們先定義GAN的標(biāo)記符號:

Pdata(x) -> 真實數(shù)據(jù)的分布

X -> pdata(x)的樣本

P(z) -> 生成器的分布

Z -> p(z)的樣本

G(z) -> 生成網(wǎng)絡(luò)

D(x) -> 鑒別網(wǎng)絡(luò)

現(xiàn)在作為生成器和鑒別器之間的斗爭,GAN的訓(xùn)練已經(jīng)完成磷斧≌裨福可以用數(shù)學(xué)表示為:

在我們的函數(shù)V(D,G)中,第一項是來自實際分布(pdata(x))的數(shù)據(jù)通過鑒別器(也稱為最佳情況)的熵(Entropy)弛饭。鑒別器試圖將其最大化為1冕末。第二項是來自隨機輸入(p(z))的數(shù)據(jù)通過發(fā)生器的熵。生成器產(chǎn)生一個假樣本侣颂, 通過鑒別器識別虛假(也稱為最壞的情況)档桃。在這一項中,鑒別器嘗試將其最大化為0(即生成的數(shù)據(jù)是偽造的的概率的對數(shù)是0)憔晒。所以總體而言藻肄,鑒別器正在嘗試最大化函數(shù)V(D,G)。

另一方面拒担,生成器的任務(wù)完全相反嘹屯,它試圖最小化函數(shù)V(D,G),使真實數(shù)據(jù)和假數(shù)據(jù)之間的區(qū)別最小化从撼。這就是說州弟,生成器和鑒別器像在玩貓和老鼠的游戲。

注意:這種訓(xùn)練GAN的方法源自于博弈論中的Minimax Game低零。

如何訓(xùn)練GAN

概括來講訓(xùn)練階段包括順序完成的兩個階段——

第一階段:訓(xùn)練鑒別器婆翔,凍結(jié)生成器(凍結(jié)意思是不訓(xùn)練讨越,神經(jīng)網(wǎng)絡(luò)只向前傳播崇决,不進行Backpropagation反向傳播)

第二階段:訓(xùn)練生成器搅轿,凍結(jié)鑒別器垒迂。

訓(xùn)練GAN的步驟

第1步:定義問題颠放。你想生成假的圖像還是文字峻呕?你需要完全定義問題并收集數(shù)據(jù)糜烹。

第2步:定義GAN的架構(gòu)娶靡。GAN看起來是怎么樣的茎芭,生成器和鑒別器應(yīng)該是多層感知器還是卷積神經(jīng)網(wǎng)絡(luò)揖膜?這一步取決于你要解決的問題。

第3步:用真實數(shù)據(jù)訓(xùn)練鑒別器N個epoch梅桩。訓(xùn)練鑒別器正確預(yù)測真實數(shù)據(jù)為真壹粟。這里N可以設(shè)置為1到無窮大之間的任意自然數(shù)。

第4步:用生成器產(chǎn)生假的輸入數(shù)據(jù),用來訓(xùn)練鑒別器趁仙。訓(xùn)練鑒別器正確預(yù)測假的數(shù)據(jù)為假洪添。

第5步:用鑒別器的出入訓(xùn)練生成器。當(dāng)鑒別器被訓(xùn)練后雀费,將其預(yù)測值作為標(biāo)記來訓(xùn)練生成器干奢。訓(xùn)練生成器來迷惑鑒別器。

第6步:重復(fù)第3到第5步多個epoch

第7步:手動檢查假數(shù)據(jù)是否合理盏袄。如果看起來合適就停止訓(xùn)練忿峻,否則回到第3步。這是一個手動任務(wù)辕羽,手動評估數(shù)據(jù)是檢查其假冒程度的最佳方式逛尚。當(dāng)這個步驟結(jié)束時,就可以評估GAN是否表現(xiàn)良好刁愿。

喘口氣绰寞,看一下這項技術(shù)有什么樣的含義。假設(shè)你有一個功能完整的生成器铣口,可以復(fù)制幾乎任何東西滤钱。給你一些例子,你可以生成假新聞枷踏、不可思議的書籍和小說、自動應(yīng)答服務(wù)等等掰曾。你可以擁有一個近乎現(xiàn)實的人工智能旭蠕,一個真正的人工智能!這就是夢想旷坦。

伴隨GAN而來的挑戰(zhàn)

你可能會問掏熬,如果我們知道這些美麗的生物(怪物)能做什么,為什么現(xiàn)在什么也沒發(fā)生秒梅?這是因為我們還僅僅只接觸到它的表面旗芬。在創(chuàng)造一個足夠好的GAN的過程中有太多的障礙還沒有清除。有一整個學(xué)術(shù)領(lǐng)域就是為了找出如何訓(xùn)練GAN捆蜀。

訓(xùn)練GAN時最重要的障礙是穩(wěn)定疮丛。你開始訓(xùn)練GAN,如果鑒別器比與其對應(yīng)的發(fā)生器更強大辆它,則發(fā)生器將無法有效訓(xùn)練誊薄。這反過來又會影響你的GAN的訓(xùn)練。另一方面锰茉,如果鑒別器過于寬松呢蔫,理論上它可以允許生成器產(chǎn)生任何圖像。這意味著你的GAN是無用的飒筑。

瀏覽GAN的穩(wěn)定性的另一種方法是將其看做一個整體收斂的問題片吊。生成器和鑒別器都是相互競爭的绽昏,力求領(lǐng)先對方一步。此外俏脊,他們依賴彼此進行有效的培訓(xùn)全谤。如果其中一個失敗,整個系統(tǒng)就會失敗联予。所以你必須確保它們不會崩掉啼县。

這就像波斯王子游戲中的影子一樣。你必須保衛(wèi)自己免受影子的襲擊沸久,它試圖殺死你季眷。如果你殺死你的影子,你會死卷胯;但如果你不做任何事情子刮,你也一定會死!

關(guān)于其他的問題窑睁,請參考http://www.iangoodfellow.com/slides/2016-12-04-NIPS.pdf

注意:下面提到的圖像是由ImageNet數(shù)據(jù)集訓(xùn)練的GAN生成的挺峡。

計數(shù)問題:GAN無法區(qū)分特定對象在某個位置應(yīng)發(fā)生的數(shù)量。正如我們在下面看到的担钮,它在頭上生成的眼睛個數(shù)比自然狀態(tài)更多橱赠。

need-to-insert-img

透視問題:GAN無法適應(yīng)3D對象。它不理解視角箫津,即前視圖和后視圖之間的差異狭姨。如下所示,它給出3D對象的平面(2D)展開苏遥。

全局結(jié)構(gòu)問題:與透視問題相同饼拍,GAN不了解整體結(jié)構(gòu)。例如田炭,在左下角的圖像中师抄,它給出了一只四足牛的生成圖像,即母牛站立在其后腿上教硫,同時又站立在所有四條腿上叨吮。這在現(xiàn)實中絕對不可能!

大量的研究正被用來處理這些問題瞬矩。很多比過去擁有更好結(jié)果的新模型被提出挤安,比如DCGAN, WassersteinGan。

實現(xiàn)一個簡單的GAN

讓我們實現(xiàn)一個簡化的GAN來加強理論丧鸯。我們將嘗試通過在Identify the Digits數(shù)據(jù)集上訓(xùn)練GAN來生成數(shù)字蛤铜。數(shù)據(jù)集包含了28x28的黑白圖像,所有圖像都是“.png”格式。我們的任務(wù)中只需要訓(xùn)練集围肥。你可以在這里下載到數(shù)據(jù):https://datahack.analyticsvidhya.com/contest/practice-problem-identify-the-digits/剿干。

你需要安裝一些Python的包:

numpy

pandas

tensorflow

keras

keras_adversarial

在開始編寫代碼之前,讓我們先了解內(nèi)部工作的原理穆刻,訓(xùn)練GAN的偽代碼如下:

來源鏈接

注意:這是在論文中發(fā)表的GAN的第一個實現(xiàn)置尔。在最近論文的偽碼中可以看到許多改進和更新,例如在生成和鑒別網(wǎng)絡(luò)中添加批量歸一化(Batch Normalization)氢伟,訓(xùn)練生成器k等榜轿。

現(xiàn)在開始寫代碼!

首先導(dǎo)入所有模塊朵锣。

為了讓確定性的隨機可復(fù)現(xiàn)谬盐,設(shè)置一個Seed值。

設(shè)置數(shù)據(jù)和工作目錄的路徑诚些。

need-to-insert-img

加載數(shù)據(jù)飞傀。

我們繪制一個圖形看看數(shù)據(jù)是什么樣的。

定義稍后將要使用的變量诬烹。

# define variables

# define vars g_input_shape = 100 d_input_shape = (28, 28) hidden_1_num_units = 500 hidden_2_num_units = 500 g_output_num_units = 784 d_output_num_units = 1 epochs = 25 batch_size = 128

現(xiàn)在定義生成網(wǎng)絡(luò)和鑒別網(wǎng)絡(luò)砸烦。

need-to-insert-img

這里是我們神經(jīng)網(wǎng)絡(luò)的架構(gòu)。

need-to-insert-img

我們現(xiàn)在定義GAN绞吁。首先導(dǎo)入一些重要模塊幢痘。

編譯GAN并開始訓(xùn)練。

這是我們的GAN的樣子家破。

need-to-insert-img

我們訓(xùn)練10個Epoch后得到的圖表颜说。

need-to-insert-img

訓(xùn)練100個Epoch后,生成的圖像如下员舵。

need-to-insert-img

瞧脑沿!你已經(jīng)建立了你的第一個生成模型藕畔!

GAN的應(yīng)用

我們了解了這些事情的工作原理马僻,以及訓(xùn)練過程中的挑戰(zhàn)。我們現(xiàn)在將要看到使用GAN完成的前沿研究注服。

預(yù)測視頻中的下一幀:在視頻序列上訓(xùn)練GAN韭邓,并預(yù)測下一步會發(fā)生什么

論文

增加圖像分辨率:從較低分辨率照片生成高分辨率照片

論文

need-to-insert-img

交互式圖像生成:繪制簡單的筆畫,讓GAN為你畫出令人印象深刻的圖畫

鏈接

need-to-insert-img

圖像翻譯:從一個圖像生成另一個圖像溶弟。例如女淑,左邊給出了帶標(biāo)簽的街景,你可以用GAN生成真實的照片辜御。在右邊鸭你,給出簡單的手提包繪畫草稿,你會得到真正的手提包。

論文

need-to-insert-img

文本到圖像生成:只需向GAN說你想看到什么袱巨,就可以獲得一個所描述物體的真實照片阁谆。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市愉老,隨后出現(xiàn)的幾起案子场绿,更是在濱河造成了極大的恐慌,老刑警劉巖嫉入,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件焰盗,死亡現(xiàn)場離奇詭異,居然都是意外死亡咒林,警方通過查閱死者的電腦和手機熬拒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來映九,“玉大人梦湘,你說我怎么就攤上這事〖” “怎么了捌议?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長引有。 經(jīng)常有香客問我瓣颅,道長,這世上最難降的妖魔是什么譬正? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任宫补,我火速辦了婚禮,結(jié)果婚禮上曾我,老公的妹妹穿的比我還像新娘粉怕。我一直安慰自己,他們只是感情好抒巢,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布贫贝。 她就那樣靜靜地躺著,像睡著了一般蛉谜。 火紅的嫁衣襯著肌膚如雪稚晚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天型诚,我揣著相機與錄音客燕,去河邊找鬼。 笑死狰贯,一個胖子當(dāng)著我的面吹牛也搓,可吹牛的內(nèi)容都是我干的赏廓。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼傍妒,長吁一口氣:“原來是場噩夢啊……” “哼楚昭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拍顷,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤抚太,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后昔案,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尿贫,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年踏揣,在試婚紗的時候發(fā)現(xiàn)自己被綠了庆亡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡捞稿,死狀恐怖又谋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情娱局,我是刑警寧澤彰亥,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站衰齐,受9級特大地震影響任斋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜耻涛,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一废酷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抹缕,春花似錦澈蟆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鉴分,卻和暖如春哮幢,著一層夾襖步出監(jiān)牢的瞬間带膀,已是汗流浹背志珍。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留垛叨,地道東北人伦糯。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓柜某,卻偏偏與公主長得像,于是被迫代替她去往敵國和親敛纲。 傳聞我的和親對象是個殘疾皇子喂击,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

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