作者簡介
Jakub Langr 畢業於牛津大學,是一間新創公司的聯合創始人,該公司使用 GAN 進行創意和廣告應用。Jakub 自 2013 年起就一直從事資料科學工作,最近則是在 Filtered.com 負責資料科學技術,並在 Mudano 從事資料科學研發工作。他還在伯明翰大學(英國)和眾多民營公司設計並教授資料科學課程,另兼任牛津大學客座講師。他也是《Entrepreneur First》第七屆深度技術人才投資者中的一位駐點創業者。Jakub 還是皇家統計學會的研究員,並受邀在各種國際會議上發表演說。他將本書的全部收益捐給英國非營利心臟基金會。Vladimir Bok 以優異成績取得哈佛大學計算機科學學士學位。他是在微軟研究院從事音樂風格轉換的相關研究時,見證到 GAN 的巨大潛力。他的工作經驗豐富,從 Y Combinator 投資的新創公司應用資料科學部門,到微軟的領導跨職能計劃皆有涉入。Vladimir 最近在紐約的一家新創公司管理資料科學專案,該公司針對線上旅行與電子商務網站提供機器學習服務,其中不乏《財訊》所列的五百大企業。他將本書的所有收益捐給非營利組織《Girls Who Code》。
章節目錄
第一篇 GAN 與生成模型入門1 GAN (對抗式生成網路) 簡介2 用 Autoencoder (AE) 做為生成模型3 你的第一個 GAN:生成手寫數字4 深度卷積 GAN (DCGAN)第二篇 GAN 的進階課題5 訓練 GAN 時所面臨的挑戰與解決之道6 漸進式 GAN (PGGAN)7 半監督式 GAN (SGAN)8 條件式 GAN (CGAN)9 CycleGAN第三篇 GAN 的實際應用及未來方向10 對抗性樣本 (Adversarial example)11 GAN 的實際應用12 展望未來[完整目錄]第一篇 GAN 與生成模型入門第 1 章 GAN (對抗式生成網路) 簡介1.1 什麼是 GAN (Generative Adversarial Network)?1.2 GAN 如何運作?1.3 GAN 的詳細運作流程1.3.1 GAN 的訓練方式1.3.2 何時達到均衡 (完成訓練)1.4 為何要學 GAN?第 2 章 用 Autoencoder (AE) 做為生成模型2.1 生成模型 (Generative model) 簡介2.2 Autoencoder 的運作原理 2.3 Autoencoder 的架構2.4 Autoencoder 與 GAN 有何不同?2.5 Autoencoder 的用途2.6 「非監督式」與「自監督式」學習 2.6.1 舊招新用2.6.2 用 Autoencoder 生成資料2.6.3 VAE (Variational Autoencoder)2.7 實例:寫程式實作 VAE 2.8 再論潛在空間 2.9 為何我們還是得用 GAN? 第 3 章 你的第一個 GAN:生成手寫數字3.1 GAN 的基礎:對抗訓練 3.1.1 損失函數3.1.2 訓練過程3.2 生成器與鑑別器的目標差異3.2.1 目標衝突3.2.2 混淆矩陣 (confusion matrix)3.3 GAN 的訓練程序 3.4 實例:生成手寫數字 3.4.1 匯入模組並設定模型輸入維度3.4.2 實作生成器3.4.3 實作鑑別器 3.4.4 建立並編譯訓練所需的模型3.4.5 撰寫訓練用的函式3.4.6 顯示生成的圖片3.4.7 開始訓練模型3.4.8 檢查結果3.5 結語第 4 章 深度卷積 GAN (DCGAN)4.1 卷積神經網路 (CNN)4.1.1 卷積濾鏡 (Convolutional filter)4.1.2 將 CNN 的概念視覺化4.2 DCGAN 簡史4.3 批次正規化 (Batch normalization)4.3.1 了解正規化4.3.2 批次正規化計算4.4 實例:用 DCGAN 生成手寫數字 4.4.1 匯入模組並設定模型輸入的維度4.4.2 實作 DCGAN 的生成器4.4.3 實作 DCGAN 的鑑別器4.4.4 建立並運行 DCGAN4.4.5 模型輸出4.5 結語第二篇 GAN 的進階課題第 5 章 訓練 GAN 時所面臨的挑戰與解決之道5.1 評估訓練成效的方法5.1.1 各種可能的評估方法5.1.2 起始分數 (IS)5.1.3 Fréchet 初始距離 (FID)5.2 訓練上的挑戰5.2.1 逐步增加神經網路的深度5.2.2 更改賽局的設計與評估方式5.2.3 Min-Max GAN5.2.4 非飽和 GAN (NS-GAN)5.2.5 何時該結束訓練5.2.6 Wasserstein GAN (WGAN)5.3 賽局設計的重點整理 5.4 訓練 GAN 的實用技巧5.4.1 將輸入正規化5.4.2 批次正規化5.4.3 梯度懲罰5.4.4 給鑑別器更多的訓練5.4.5 避免稀疏梯度5.4.6 使用標籤平滑或增加標籤雜訊第 6 章 漸進式 GAN (PGGAN)6.1 於潛在空間中做插值6.2 進展快速的 PGGAN6.2.1 以漸進方式擴充圖層解析度6.2.2 程式觀摩6.2.3 小批次標準差6.2.4 均等學習率6.2.5 生成器的逐像素特徵正規化6.3 PGGAN 的關鍵改良總結6.4 TensorFlow Hub 入門6.5 實際應用第 7 章 半監督式 GAN (SGAN)7.1 認識 SGAN7.1.1 什麼是 SGAN?7.1.2 SGAN 的輸入、輸出、與目標7.1.3 SGAN 的訓練過程7.1.4 SGAN 的訓練目標7.2 實例:實作 SGAN7.2.1 SGAN 的架構圖7.2.2 行前說明7.2.3 程式初始設置7.2.4 準備資料集7.2.5 設計生成器 7.2.6 設計鑑別器7.2.7 建立並編譯模型7.2.8 開始訓練7.3 與全監督式分類器比較7.4 結語第 8 章 條件式 GAN (CGAN)8.1 CGAN 的發展動機8.2 CGAN 的原理與架構8.2.1 CGAN 的生成器8.2.2 CGAN 的鑑別器8.2.3 總結表8.2.4 架構圖8.3 實例:實作 CGAN8.3.1 行前說明8.3.2 初始設置8.3.3 設計生成器8.3.4 設計鑑別器8.3.5 建立並編譯模型8.3.6 設計訓練迴圈8.3.7 顯示樣本影像8.3.8 實際開始訓練模型8.3.9 檢視輸出結果:是否生成指定種類的資料8.4 結語第 9 章 CycleGAN9.1 圖像轉譯9.2 來回一致損失 (Cycle-consistency loss):先轉過去再轉回來9.3 對抗損失 (Adversarial loss)9.4 特質損失 (Identity loss)9.5 CycleGAN 的架構9.5.1 整體架構:CycleGAN 的 4 個神經網路9.5.2 生成器的架構9.5.3 鑑別器的架構9.6 GAN 的物件導向設計9.7 實例:實作 CycleGAN9.7.1 建立 CycleGAN 的 4 個神經網路9.7.2 建立生成器的 method9.7.3 建立鑑別器的 method9.7.4 訓練模型的 method9.7.5 實際開始訓練9.8 CycleGAN 的強化和應用9.8.1 CycleGAN 加強版 (Augmented CycleGAN)9.8.2 CycleGAN 的各種應用第三篇 GAN 的實際應用及未來方向第 10 章 對抗性樣本 (Adversarial example)10.1 對抗性樣本的用途10.2 深度學習的潛在弱點:容易被騙10.3 訓練方法的善用與濫用10.4 樣本中的訊號與雜訊10.5 還不到絕望的時候10.6 解鈴還須繫鈴人,該 GAN 出馬了10.7 結語 第 11 章 GAN 的實際應用11.1 GAN 在醫學方面的應用11.1.1 用 GAN 提高診斷準確率11.1.2 擴增訓練樣本的方法11.1.3 應用的成果11.2 GAN 在時尚方面的應用11.2.1 用 GAN「設計」時尚11.2.2 把 CGAN 用到時尚領域11.2.3 創造符合個人偏好的新商品11.2.4 針對個人偏好改良現有商品11.3 結語第 12 章 展望未來12.1 GAN 的道德考量12.2 GAN 的最新改良12.2.1 RGAN (相對 GAN)12.2.2 SAGAN (自我注意 GAN)12.2.3 BigGAN12.3 更多潛力 GAN 的參考資料 12.4 本書的回顧與結語