自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一文看懂生成式對(duì)抗網(wǎng)絡(luò)GANs:介紹指南及前景展望

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

[[202416]]

作者 | FAIZAN SHAIKH

編譯 | 曹翔,寒小陽(yáng),Aileen

神經(jīng)網(wǎng)絡(luò)取得了長(zhǎng)足的進(jìn)步,目前識(shí)別圖像和聲音的水平已經(jīng)和人類(lèi)相當(dāng),在自然語(yǔ)言理解方面也達(dá)到了很好的效果。但即使如此,討論用機(jī)器來(lái)自動(dòng)化人類(lèi)任務(wù)看起來(lái)還是有些勉強(qiáng)。畢竟,我們做的不僅僅是識(shí)別圖像和聲音、或者了解我們周?chē)娜嗽谡f(shuō)什么,不是嗎?

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

  • 通過(guò)學(xué)習(xí)大數(shù)據(jù)文摘過(guò)去的文章,訓(xùn)練一個(gè)可以撰寫(xiě)文章并將數(shù)據(jù)科學(xué)概念以非常簡(jiǎn)單的方式向社區(qū)解釋的人工智能作者
  • 你不能從著名畫(huà)家那里買(mǎi)到一幅名畫(huà)。但你可不可以創(chuàng)造一個(gè)人工智能畫(huà)家,通過(guò)從畫(huà)家過(guò)去的作品中學(xué)習(xí),然后像任何藝術(shù)家一樣畫(huà)畫(huà)?

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

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

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

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

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

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

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

但是什么是GAN呢?

讓我用個(gè)類(lèi)比來(lái)解釋這個(gè)概念:

如果你想更加擅長(zhǎng)某種東西,比如下棋,你會(huì)怎么做?你可能會(huì)和比你更強(qiáng)的對(duì)手對(duì)弈。你會(huì)分析你做錯(cuò)了什么、對(duì)方做對(duì)了什么,并思考下一場(chǎng)比賽如何才能擊敗他(她)。

你會(huì)重復(fù)這一步驟,直到你擊敗對(duì)手。這個(gè)概念可以被納入到構(gòu)建更好的模型中。所以簡(jiǎn)單來(lái)說(shuō),要獲得一個(gè)強(qiáng)大的英雄(即生成器generator),我們需要一個(gè)更強(qiáng)大的對(duì)手(即鑒別器discriminator)。

真實(shí)生活的另一個(gè)類(lèi)比:一個(gè)更真實(shí)的類(lèi)比是偽造者和調(diào)查員之間的關(guān)系。

[[202417]]

偽造者的任務(wù)是模仿著名藝術(shù)家的畫(huà)作。如果這個(gè)偽造的作品能夠超越原始的作品,那么這個(gè)偽造者就可以賣(mài)出這張作品換很多錢(qián)。

另一方面,藝術(shù)品調(diào)查員的任務(wù)是抓住這些造假的偽造者。怎么做呢,他知道什么屬性能把原作和贗品區(qū)分開(kāi)來(lái)。通過(guò)檢驗(yàn)手中的作品是否是真的,他可以評(píng)估自己的知識(shí)。

偽造者與調(diào)查員的競(jìng)賽繼續(xù)進(jìn)行,最終催生了***的調(diào)查員(很不幸以及***的偽造者)。 這是一場(chǎng)善與惡之間的斗爭(zhēng)。

GANs如何工作

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

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

GANs如何工作

生成網(wǎng)絡(luò)采用隨機(jī)輸入,嘗試輸出數(shù)據(jù)樣本。在上述圖像中,我們可以看到生成器G(z)從p(z)獲取了輸入z,其中z是來(lái)自概率分布p(z)的樣本。生成器產(chǎn)生一個(gè)數(shù)據(jù),將其送入鑒別器網(wǎng)絡(luò)D(x)。鑒別網(wǎng)絡(luò)的任務(wù)是接收真實(shí)數(shù)據(jù)或者生成數(shù)據(jù),并嘗試預(yù)測(cè)輸入是真實(shí)還是生成的。它需要一個(gè)來(lái)自pdata(x)的輸入x,其中pdata(x)是我們的真實(shí)數(shù)據(jù)分布。 D(x)然后使用Sigmoid函數(shù)解決二元分類(lèi)問(wèn)題,并輸出0到1的值。

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

  • Pdata(x) -> 真實(shí)數(shù)據(jù)的分布
  • X -> pdata(x)的樣本
  • P(z) -> 生成器的分布
  • Z -> p(z)的樣本
  • G(z) -> 生成網(wǎng)絡(luò)
  • D(x) -> 鑒別網(wǎng)絡(luò)

現(xiàn)在作為生成器和鑒別器之間的斗爭(zhēng),GAN的訓(xùn)練已經(jīng)完成??梢杂脭?shù)學(xué)表示為:

GAN的訓(xùn)練

在我們的函數(shù)V(D,G)中,***項(xiàng)是來(lái)自實(shí)際分布(pdata(x))的數(shù)據(jù)通過(guò)鑒別器(也稱為***情況)的熵(Entropy)。鑒別器試圖將其***化為1。第二項(xiàng)是來(lái)自隨機(jī)輸入(p(z))的數(shù)據(jù)通過(guò)發(fā)生器的熵。生成器產(chǎn)生一個(gè)假樣本, 通過(guò)鑒別器識(shí)別虛假(也稱為最壞的情況)。在這一項(xiàng)中,鑒別器嘗試將其***化為0(即生成的數(shù)據(jù)是偽造的的概率的對(duì)數(shù)是0)。所以總體而言,鑒別器正在嘗試***化函數(shù)V(D,G)。

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

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

如何訓(xùn)練GAN

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

  • ***階段:訓(xùn)練鑒別器,凍結(jié)生成器(凍結(jié)意思是不訓(xùn)練,神經(jīng)網(wǎng)絡(luò)只向前傳播,不進(jìn)行Backpropagation反向傳播)
  • 第二階段:訓(xùn)練生成器,凍結(jié)鑒別器。

如何訓(xùn)練GAN

訓(xùn)練GAN的步驟

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

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

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

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

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

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

第7步:手動(dòng)檢查假數(shù)據(jù)是否合理。如果看起來(lái)合適就停止訓(xùn)練,否則回到第3步。這是一個(gè)手動(dòng)任務(wù),手動(dòng)評(píng)估數(shù)據(jù)是檢查其假冒程度的***方式。當(dāng)這個(gè)步驟結(jié)束時(shí),就可以評(píng)估GAN是否表現(xiàn)良好。

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

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

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

訓(xùn)練GAN時(shí)最重要的障礙是穩(wěn)定。你開(kāi)始訓(xùn)練GAN,如果鑒別器比與其對(duì)應(yīng)的發(fā)生器更強(qiáng)大,則發(fā)生器將無(wú)法有效訓(xùn)練。這反過(guò)來(lái)又會(huì)影響你的GAN的訓(xùn)練。另一方面,如果鑒別器過(guò)于寬松,理論上它可以允許生成器產(chǎn)生任何圖像。這意味著你的GAN是無(wú)用的。

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

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

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

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

  • 計(jì)數(shù)問(wèn)題:GAN無(wú)法區(qū)分特定對(duì)象在某個(gè)位置應(yīng)發(fā)生的數(shù)量。正如我們?cè)谙旅婵吹降模陬^上生成的眼睛個(gè)數(shù)比自然狀態(tài)更多。
  • 透視問(wèn)題:GAN無(wú)法適應(yīng)3D對(duì)象。它不理解視角,即前視圖和后視圖之間的差異。如下所示,它給出3D對(duì)象的平面(2D)展開(kāi)。
  • 全局結(jié)構(gòu)問(wèn)題:與透視問(wèn)題相同,GAN不了解整體結(jié)構(gòu)。例如,在左下角的圖像中,它給出了一只四足牛的生成圖像,即母牛站立在其后腿上,同時(shí)又站立在所有四條腿上。這在現(xiàn)實(shí)中絕對(duì)不可能!

大量的研究正被用來(lái)處理這些問(wèn)題。很多比過(guò)去擁有更好結(jié)果的新模型被提出,比如DCGAN, WassersteinGan。

實(shí)現(xiàn)一個(gè)簡(jiǎn)單的GAN

讓我們實(shí)現(xiàn)一個(gè)簡(jiǎn)化的GAN來(lái)加強(qiáng)理論。我們將嘗試通過(guò)在Identify the Digits數(shù)據(jù)集上訓(xùn)練GAN來(lái)生成數(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

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

訓(xùn)練GAN的偽代碼

來(lái)源: http://papers.nips.cc/paper/5423-generative-adversarial

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

現(xiàn)在開(kāi)始寫(xiě)代碼!

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

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

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

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

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

[[202422]]

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

  1. # define variables 
  2.  
  3. # 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ò)。

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

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

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

這是我們的GAN的樣子。

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

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

瞧!你已經(jīng)建立了你的***個(gè)生成模型!

GAN的應(yīng)用

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

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

GAN的應(yīng)用

論文 : https://arxiv.org/pdf/1511.06380.pdf

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

論文:https://arxiv.org/pdf/1609.04802.pdf

3. 交互式圖像生成:繪制簡(jiǎn)單的筆畫(huà),讓GAN為你畫(huà)出令人印象深刻的圖畫(huà)

鏈接: https://github.com/junyanz/iGAN

4. 圖像翻譯:從一個(gè)圖像生成另一個(gè)圖像。例如,左邊給出了帶標(biāo)簽的街景,你可以用GAN生成真實(shí)的照片。在右邊,給出簡(jiǎn)單的手提包繪畫(huà)草稿,你會(huì)得到真正的手提包。

論文: https://arxiv.org/pdf/1611.07004.pdf

5. 文本到圖像生成:只需向GAN說(shuō)你想看到什么,就可以獲得一個(gè)所描述物體的真實(shí)照片。

論文: https://arxiv.org/pdf/1605.05396.pdf

資源

這里有一些資源可以幫助你更深入地了解GAN:

  • 關(guān)于GAN的論文:https://github.com/zhangqianhui/AdversarialNetsPapers
  • DeepLearning書(shū)中的有關(guān)章節(jié):http://www.deeplearningbook.org/contents/generative_models.html
  • Ian Goodfellow關(guān)于GAN的講座:https://channel9.msdn.com/Events/Neural-Information-Processing-Systems-Conference/Neural-Information-Processing-Systems-Conference-NIPS-2016/Generative-Adversarial-Networks
  • NIPS 2016關(guān)于訓(xùn)練GAN的講座:https://www.youtube.com/playlist?list=PLJscN9YDD1buxCitmej1pjJkR5PMhenTF

我希望你現(xiàn)在對(duì)未來(lái)感到興奮,就像我***次讀到GAN時(shí)一樣。它們將改變機(jī)器能為人類(lèi)所做的事。想想吧,從準(zhǔn)備新的食譜到創(chuàng)造圖畫(huà),GAN擁有***的可能性。

原文:https://www.analyticsvidhya.com/blog/2017/06/introductory-generative-adversarial-networks-gans/

【本文是51CTO專(zhuān)欄機(jī)構(gòu)大數(shù)據(jù)文摘的原創(chuàng)譯文,微信公眾號(hào)“大數(shù)據(jù)文摘( id: BigDataDigest)”】

     大數(shù)據(jù)文摘二維碼

 

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專(zhuān)欄
相關(guān)推薦

2016-08-18 00:21:12

網(wǎng)絡(luò)爬蟲(chóng)抓取網(wǎng)絡(luò)

2023-10-31 10:33:35

對(duì)抗網(wǎng)絡(luò)人工智能

2019-05-13 09:45:41

生成式對(duì)抗網(wǎng)絡(luò)GANs深度學(xué)習(xí)

2020-03-31 14:40:24

HashMap源碼Java

2021-04-20 14:56:26

比特幣加密貨幣金融

2017-04-17 13:10:09

神經(jīng)網(wǎng)絡(luò)人工智能網(wǎng)絡(luò)

2023-12-26 01:14:20

函數(shù)式編程死鎖

2024-08-12 12:30:27

2025-01-20 09:15:00

iOS 18.3蘋(píng)果iOS 18

2021-08-02 06:56:19

TypeScript編程語(yǔ)言編譯器

2019-07-01 09:22:15

Linux操作系統(tǒng)硬件

2019-05-22 09:50:42

Python沙箱逃逸網(wǎng)絡(luò)攻擊

2022-07-05 10:03:19

網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2019-06-17 10:01:10

SAN網(wǎng)絡(luò)運(yùn)維

2019-07-31 10:48:32

移動(dòng)互聯(lián)網(wǎng)技術(shù)工程師

2021-02-21 11:25:17

云計(jì)算IaaSPaaS

2021-05-11 10:40:29

JUCAQSJava

2021-05-12 15:16:17

JUCAQSJava

2024-10-10 17:55:57

LinuxACL訪問(wèn)控制列表

2022-12-07 07:38:07

存儲(chǔ)管理HSM
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)