- GAN實戰(zhàn)
- (英)雅各布·朗格爾 (美)弗拉基米爾·博克
- 2608字
- 2021-03-18 18:36:01
前 言
本書旨在引導對生成對抗網(wǎng)絡(GAN)有興趣的人從頭開始學習。本書從最簡單的例子開始,介紹一些最具創(chuàng)新性的GAN的實現(xiàn)和技術(shù)細節(jié),進而對這些研究進展做出直觀的解釋,并完整地呈現(xiàn)所涉及的一切內(nèi)容(不包括最基本的數(shù)學和原理),讓最前沿的研究變得觸手可及。
本書的最終目標是提供必要的知識和工具,讓你不僅能全面了解對GAN迄今為止取得的成就,還能有能力自由選擇開發(fā)新的應用。生成對抗這一模式充滿潛力,等著像你這樣懷有進取心、想在學術(shù)研究和實際應用中做出點成就的人去挖掘!歡迎你加入我們的GAN之旅。
讀者對象
本書適合已經(jīng)有一些機器學習和神經(jīng)網(wǎng)絡相關(guān)經(jīng)驗的讀者閱讀。下面列出了理想情況下讀者應該提前知悉的內(nèi)容。盡管本書盡力讓內(nèi)容顯得通俗易懂,但你至少應該對下面70%的知識有信心。
能夠運行書中的Python程序,不需要精通Python,但至少應該有兩年的Python工作經(jīng)驗(最好有全職的數(shù)據(jù)科學家或軟件工程師工作背景)。
了解面向?qū)ο蟮木幊獭⑷绾问褂脤ο笠约叭绾握页鏊鼈兊膶傩院头椒ǎ焕斫獾湫偷腜ython對象(如Pandas DataFrame)和非典型對象(如Keras層)。
了解機器學習理論的基礎知識,如訓練集和測試集的分割、過擬合、權(quán)重和超參數(shù),以及監(jiān)督學習、無監(jiān)督學習和強化學習。熟悉準確率和均方誤差等指標。
了解基本的統(tǒng)計學和微積分的知識,如概率、密度函數(shù)、概率分布、微分和簡單的優(yōu)化。
了解基本的線性代數(shù)知識,如矩陣、高維空間,還應該了解主成分分析的概念。
了解深度學習的基礎知識,如前饋網(wǎng)絡、權(quán)重和偏置、激活函數(shù)、正則化、隨機梯度下降和反向傳播。
需要基本熟悉或自學基于Python 的機器學習庫——Keras。
以上要求不是危言聳聽,而是為了確保你能充分利用本書所講的內(nèi)容。當然,不管怎樣,你都可以學習,但是之前了解的內(nèi)容越少,需要你在線檢索學習的內(nèi)容就越多。如果你感覺上面的要求不足為懼,那就開始學習吧!
代碼說明
本書有許多包含源代碼的示例,放在有編號的列表中或者內(nèi)嵌在普通文本中。這兩種情況下源代碼的格式都是以等寬字體樣式顯示的。有時也用加粗樣式突出顯示代碼,表示與先前所示代碼不同(有所更改),例如向現(xiàn)有代碼行中添加新功能。
本書對大部分源代碼做了格式化,以適應本書頁面的排版。此外,若正文中有對代碼的解釋說明,則通常會刪除源代碼中的注釋。為了突出重要概念,清單都給出了注釋。本書示例的代碼可以從異步社區(qū)本書詳情頁的“配套資源”處下載。
本書使用數(shù)據(jù)科學教育的標準用具——Jupyter Notebook,所以你應先掌握這個工具的用法。這對于中級Python學習者來說應該不難。訪問GPU或者使其所有功能正常運行有時候會遇到困難,特別是在Windows系統(tǒng),所以有些章節(jié)提供了谷歌Colaboratory(縮寫為Colab)Notebook。這是谷歌的免費平臺,并預先封裝了必要的數(shù)據(jù)科學工具以及有限時長內(nèi)免費的GPU。你可以直接在瀏覽器中運行這些代碼,也可以將其他章節(jié)的代碼上傳到Colab——它們是兼容的。
其他在線資源
GAN是一個擁有良好(盡管是零散的)資源的活躍領(lǐng)域。有學術(shù)傾向的人可以在arXiv官方網(wǎng)站找到相關(guān)的最新論文。arXiv是康奈爾大學擁有和運營的學術(shù)論文電子預印本在線存儲庫。
本書作者都是 Medium 寫作平臺的活躍撰稿人(特別是以技術(shù)為核心的出版物 Towards Data Science和Hacker Noon),你可以在那里找到他們寫的最新內(nèi)容。
本書內(nèi)容結(jié)構(gòu)
本書力求在理論和實踐之間取得平衡。全書分為如下三部分。
第一部分生成對抗網(wǎng)絡(GAN)與生成模型導論 這部分介紹生成學習和GAN的基本概念,并實現(xiàn)幾種GAN最典型的變體。
第1章介紹了生成對抗網(wǎng)絡(GAN),并在高層面上對其工作原理進行闡述。通過學習本章內(nèi)容,你會了解到GAN是由兩個獨立的神經(jīng)網(wǎng)絡(生成器和鑒別器)組成的——它們通過動態(tài)競爭進行訓練。掌握本章的知識可為理解本書其余部分的內(nèi)容奠定基礎。
第2章討論了自編碼器,它在許多方面被視為GAN的前身。鑒于生成學習的新穎性,增加這一章內(nèi)容有助于將GAN置于更廣闊的背景下。本章給出了第一個代碼教程,用于構(gòu)建一個自編碼器來生成手寫數(shù)字——我們在后面幾章的GAN教程中也會探索相同的任務。如果你已經(jīng)熟悉自編碼器的相關(guān)內(nèi)容或想直接研究GAN,可以跳過這一章。
第3章深入研究了GAN和對抗性學習背后的理論。本章解釋了GAN和傳統(tǒng)神經(jīng)網(wǎng)絡的主要區(qū)別,即討論了它們的代價函數(shù)和訓練過程上的差異。在本章結(jié)尾的代碼教程中,我們將應用所學知識在Keras中實現(xiàn)GAN,并訓練它生成手寫數(shù)字。
第4章介紹了卷積神經(jīng)網(wǎng)絡和批歸一化。本章實現(xiàn)了一種先進的GAN結(jié)構(gòu),它使用卷積網(wǎng)絡作為其生成器和鑒別器,并利用批歸一化處理來穩(wěn)定訓練過程。
第二部分 GAN的前沿主題
在第一部分的基礎上,這部分深入研究了GAN的基礎理論,并實現(xiàn)了一系列高級的GAN架構(gòu)。
第5章討論了許多訓練GAN的理論和實踐障礙以及克服這些障礙的方法。本章根據(jù)相關(guān)的學術(shù)論文和演講全面概述了訓練GAN的首選做法,還涵蓋了用于評估GAN性能的選項以及需要擔心這個問題的原因。
第6章探索了漸進式增長生成對抗網(wǎng)絡(PGGAN),一種生成器和鑒別器的前沿訓練方法。PGGAN通過在訓練過程中添加新的層獲得了非常好的圖像質(zhì)量和分辨率。本章給出了真實的代碼示例,并使用TensorFlow Hub(TFHub)從理論上和實踐上來解釋它的作用原理。
第7章繼續(xù)探索基于核心GAN模型的創(chuàng)新。你會了解到通過半監(jiān)督學習僅使用一小部分帶標簽的訓練樣本就可提高分類準確率的巨大實際意義。使用本章實現(xiàn)了半監(jiān)督生成對抗網(wǎng)絡(SGAN),并解釋了它是如何使用標簽將鑒別器轉(zhuǎn)換成一個健壯的多類分類器的。
第8章展示了另一種在訓練中使用標簽的GAN架構(gòu)。通過在訓練生成器和鑒別器時使用標簽或者其他條件信息,條件生成對抗網(wǎng)絡(CGAN)解決了生成器的主要缺點之一——無法明確指定要合成的樣本。本章最后實現(xiàn)了一個CGAN,用于直接查看目標數(shù)據(jù)的生成。
第 9 章討論了最有趣的 GAN 架構(gòu)之一:循環(huán)一致性生成對抗網(wǎng)絡(CycleGAN)。此技術(shù)可以將一幅圖像轉(zhuǎn)換成另一幅圖像,例如將馬的圖像轉(zhuǎn)換成斑馬的圖像。本章介紹了CycleGAN的架構(gòu)并解釋其主要組成和創(chuàng)新點,并在教程中用CycleGAN把蘋果轉(zhuǎn)換成了橙子(也可以將橙子轉(zhuǎn)換成蘋果)。
第三部分 何去何從
這一部分討論了如何應用GAN和對抗學習以及在何處應用它們。
第10章介紹了對抗樣本。對抗樣本是一種故意欺騙機器學習模型使其犯錯的技術(shù)。本章從理論和實際層面討論了它們的重要性,并探討了它們和GAN的關(guān)系。
第11章介紹了GAN的實際應用,探索了如何將前幾章介紹的技術(shù)用于醫(yī)學和時尚領(lǐng)域的實際用例:在醫(yī)學領(lǐng)域,如何使用GAN來擴充小數(shù)據(jù)集以提高分類準確率;在時尚領(lǐng)域,GAN是如何推動個性化定制發(fā)展的。
第12章總結(jié)了迄今為止GAN的主要收獲,討論了GAN的相關(guān)道德倫理考量,并介紹了一些新興的GAN技術(shù)。
- 實時流計算系統(tǒng)設計與實現(xiàn)
- 網(wǎng)上生活必備
- 小型電動機實用設計手冊
- 工業(yè)機器人現(xiàn)場編程(FANUC)
- DevOps:Continuous Delivery,Integration,and Deployment with DevOps
- Windows游戲程序設計基礎
- Applied Data Visualization with R and ggplot2
- 網(wǎng)絡服務搭建、配置與管理大全(Linux版)
- 液壓機智能故障診斷方法集成技術(shù)
- Visual Studio 2010 (C#) Windows數(shù)據(jù)庫項目開發(fā)
- Generative Adversarial Networks Projects
- 大數(shù)據(jù)時代的調(diào)查師
- 菜鳥起飛五筆打字高手
- 玩轉(zhuǎn)機器人:基于Proteus的電路原理仿真(移動視頻版)
- Hadoop大數(shù)據(jù)開發(fā)基礎