乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       NeuAlec 2017-08-07

      大數(shù)據(jù)文摘作品,轉(zhuǎn)載要求見文末

      作者 | FAIZAN SHAIKH

      編譯 | 曹翔,寒小陽,Aileen

       

      神經(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)的變化,是我認為的機器學(xué)習(xí)領(lǐng)域近十年最有趣的想法?!?/span>

      當(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ù)去了解細節(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./slides/2016-12-04-NIPS.pdf

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

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

      • 透視問題: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./contest/practice-problem-identify-the-digits/。

      你需要安裝一些Python的包:

      • numpy

      • pandas

      • tensorflow

      • keras

      • keras_adversarial


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

      來源: http://papers./paper/5423-generative-adversarial

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

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

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

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

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

      加載數(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ò)。

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

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

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

      這是我們的GAN的樣子。

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

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

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


      GAN的應(yīng)用

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

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

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

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

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

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

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

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

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

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

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

      資源

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

      • 關(guān)于GAN的論文:https://github.com/zhangqianhui/AdversarialNetsPapers

      • DeepLearning書中的有關(guān)章節(jié):http://www./contents/generative_models.html

      • Ian Goodfellow關(guān)于GAN的講座:https://channel9./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./playlist?list=PLJscN9YDD1buxCitmej1pjJkR5PMhenTF

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

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

      20177《頂級數(shù)據(jù)團隊建設(shè)全景報告》下載

      關(guān)于轉(zhuǎn)載

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多