「GAN 是近年來機器學習領域中最有趣的點子!」這是臉書首席 AI 科學家、也是當今深度學習三巨頭之一的 Yann LeCun 對 GAN (對抗式生成網路) 技術下的註解。
GAN 從誕生至今已經創造了許多令人瞠目結舌的驚人應用,從最早貓圖片的自動產生器、虛擬人臉生成器、到 Deepfake 影片/照片換臉特效,都是 GAN 的應用。光是 GAN 的開山論文,被引用次數就足足是 TensorFlow 的 2.5 倍,不只在技術領域,就連麥肯錫 (McKinsey & Company) 等主流媒體,GAN 的相關討論也時常出現。
但要搞懂這最尖端、最熱門的技術可不容易,網路上許多似是而非的說法,加上漏洞百出的數學推導,讓初學者不得其門而入。
本書目標是針對想從基礎開始學習 GAN(對抗式生成網路)的人,提供最可靠的原理教學與實戰指南。我們將從最簡單的範例開始上手,然後介紹各種最先進的 GAN 技術並用程式實作,包括生成高解析度圖片、圖像轉譯、或製作對抗性樣本等。我們會提供最直觀的解說,讓讀者只需要具備基礎的 Python、深度學習、與數學相關知識,就能直接探索這項如魔法般的尖端科技。
我們希望讀者不但能了解 GAN 到目前為止所取得的成就,還能獲得必要的知識與工具來充實自己,以便進一步展開新的應用。對於充滿企圖心的人來說,GAN 可是具有無窮的潛力,一旦上手,未來在學術界或生活應用上必能大放異彩,很高興您能加入我們的行列。
本書特色:
●本書由施威銘研究室監修,內容易讀易懂,並加入大量「編註」與「小編補充」以幫助理解及補充必要知識。
●內容涵蓋 Autoencoder/VAE 及各種 GAN 技術,包括 DCGAN、PGGAN、SGAN、CGAN、CycleGAN、NS-GAN、Min-Max GAN、WGAN、BigGANigGAN、StyleGAN、...等,還有對抗性樣本、以及 GAN 在醫學界與時尚界的應用案例。
●不求花俏吸睛,腳踏實地帶你一步步揭開各種 GAN 的神祕面紗。從原理、演算法、架構圖、再到程式實作,讓您一氣呵成、深入體驗 GAN 的奧妙。
●所有範例程式小編都已在 Colab 上實測過,並針對可能因版本不同而遇到的狀況提供說明及解決方案。建議讀者也在免費的 Colab 上執行範例程式,可避免一些環境設定或相容性等問題。
名人推薦:
"全面且深入介紹了 AI 的未來" - Simeon Leyzerzon, Excelsior Software
"超級實用, 將理論與實作完美整合" - Dana Robinson, The HDF Group
"對於發展快速且應用廣泛的 GAN 知識, 做了非常有系統的介紹" - Grigory V. Sapunov, Intento
"出色的寫作、加上易於理解的數學解釋" - Bachir Chihani, C3
"在「程式設計書、學術理論書、網誌」之間取得了極佳的平衡" - Erik Sapper博士, 加利福尼亞州立理工大學
作者簡介:
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 建立並運行 DCGAN
4.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 GAN
5.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 進展快速的 PGGAN
6.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 認識 SGAN
7.1.1 什麼是 SGAN?
7.1.2 SGAN 的輸入、輸出、與目標
7.1.3 SGAN 的訓練過程
7.1.4 SGAN 的訓練目標
7.2 實例:實作 SGAN
7.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 實例:實作 CGAN
8.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 章 CycleGAN
9.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 實例:實作 CycleGAN
9.7.1 建立 CycleGAN 的 4 個神經網路
9.7.2 建立生成器的 method
9.7.3 建立鑑別器的 method
9.7.4 訓練模型的 method
9.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 BigGAN
12.3 更多潛力 GAN 的參考資料
12.4 本書的回顧與結語
第一篇 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...