生成對抗網路終極說明,從圖像處理到自然語言
一本就搞懂GAN! 自從AI時代大爆發,人必言神經網路,然而除了圖像處理之外,似乎沒什麼書有完整講解生成對抗網路(GAN)了。
人工智慧之父Yann LeCun曾經說過「GAN大概是這10年來深度學習最好玩的一個應用了吧」。
本書從模型與數學的角度來理解GAN 變體,希望透過數學符號表達出不同GAN 變體的核心思維。也是市面上少見針對單一技術,但卻能跨到不同領域上的應用最完整的大全。
首先從Python 基本語法開始討論,逐步介紹必備的數學知識與神經網絡的基本知識,並利用討論的內容編寫一個深度學習框架TensorPy,有了這些知識作為鋪墊後,就開始討論生成對抗網絡(GAN)相關的內容。
本書使用比較簡單的語言來描述GAN 涉及的思維、模型與數學原理,接著就透過TensorFlow實現傳統的GAN,並討論為何一定需要生成器或判別器。接下來,重點介紹GAN 各種常見的變體,包括卷積生成對抗網絡、條件對抗生成網絡、循環一致性、改進生成對抗網絡、漸近增強式生成對抗網絡等內容。
適合讀者群 人工智慧、機器學習、計算機視覺相關專業的人員學習使用。
【本書特色】◎容易入門:本書會討論線性代數、微積分、機率論、資訊理論等內容,並從原理角度去講解為後面篇幅做好鋪陳。
◎內容更深:介紹GAN 的各種變形時,除了介紹架構以外,並從數學層面去推導證實,重視不同類別GAN 架構的底層思維,並從數學上表示它。
◎涉及面廣:囊括GAN 的各個應用領域等10 多個方向。
◎實戰性強:提供很多程式,並列出運行結果,講解生成器、判別器、損失定義、具體訓練邏輯等主要內容。
作者簡介:
廖茂文
遊戲AI研究員、高級工程師
研究興趣為自然語言處理、生成對抗網路、 遊戲AI,曾參與多項機器學習專案。
潘志宏
高級工程師
研究興趣為機器學習、深度學習、物聯網。發表論文18篇、申請實用新型專利共8項,其中已授權3項。指導學生獲得50個以上獎項,多次獲得優秀指導教師獎。
作者序
【 前言 】
生成對抗網路(GAN),在2014 年被提出,隨後便引起了大量深度學習研究人員與從業者的關注。GAN 以兩個網路相互對抗的方式進行訓練從而獲得有價值的模型,相比於傳統的無監督學習的想法,GAN 更加清晰易懂,並避開了傳統無監督學習中遇到的困難,是這幾年論文發表數最多的主題之一。據統計,至2018 年年底,每20 分鐘就會有一篇GAN 方面的論文。
目前,GAN 在圖型和視覺領域運用是最廣泛的,GAN 已經可以生成超高畫質的逼真圖型,人類已經難以分辨出這些圖型是生成的還是真實的,透過這種方法可以實現圖型的修復、模糊圖型高畫質化、馬賽克去除、視訊生成、為其他模型提供訓練資料等,除此之外,GAN 還在自然語言處理、強化學習、音訊視訊以及安全領域大展手腳,可以看出GAN 擁有巨大的研究與運用前景。
GAN 可以實現傳統程式難以實現的目標,如馬賽克去除、圖型修復、逼真圖型的生成等,筆者在編寫實現不同GAN 變形的過程中,常常會驚歎於其提供的各種巧妙的解決方法,在感受GAN 魅力的同時,也感受到了其模型底層對應的數學之美。
關於GAN 的書很少,沒有原創的書籍,筆者結合多年的開發經驗,編寫了本書,以幫助讀者快速學習生成對抗網路。
☘ 本書特色
1. 容易入門:本書會討論線性代數、微積分、機率論、資訊理論等內容,儘量只提及後面內容需要的數學知識,並從原理角度去講解這塊內容,為後面篇幅做好鋪陳。
2. 內容更深:介紹GAN 的各種變形時,除了介紹架構以外,還會講解目標函數為何要這樣設計,並從數學層面去推導證實,可以說本書比較重視不同類別GAN 架構的底層思維,並從數學上表示它。
3. 涉及面廣:囊括了GAN 的各個應用領域,包括傳統GAN、DCGAN、CGAN、ColorGAN、CycleGAN、StarGAN、DTN、XGAN、WGAN、WGAN-GP、SN-GAN、StackGAN-v1、StackGAN-v2、PGGAN 等10 多個方向。
4. 實戰性強:提供了很多程式,並列出運行結果。考慮到篇幅原因,並沒有將每個類別的所有程式都放上去,而是主要講解生成器、判別器、損失定義、具體訓練邏輯等主要內容。
☘ 本書內容
本書分為3 個部分。
第一部分(第1 ∼ 3 章)介紹背景知識,包括Python 的基礎用法和一些進階技巧、線性代數積分、機率論、資訊率、神經網路以及最佳化演算法以及實現自己的深度學習框架TensorPy。
第二部分(第4 章和第5 章)介紹GAN 的基礎知識,包括傳統GAN 的模型結構、數學原理以及TensorFlow 實現方法,同時探討為何不可以單獨使用生成器或單獨使用判別器進行圖型生成。
第三部分(第6 ∼ 11 章)介紹各種GAN 變形,包括DCGAN、CGAN、ColorGAN、CycleGAN、StarGAN、DTN、XGAN、WGAN、WGAN-GP、SN-GAN、StackGAN-v1、StackGAN-v2、PGGAN、InfoGAN、VAE-GAN等。
☘ 作者介紹
廖茂文:遊戲AI 研究員、進階工程師、中國人工智慧學會高級會員。研究興趣為自然語言處理、生成對抗網路、遊戲AI,曾參與多項機器學習專案。
潘志宏:高級工程師,中山大學新華學院「百名骨幹教師」,中國人工智慧學會高級會員、中國電腦學會會員。研究興趣為機器學習、深度學習、物聯網。主持和參與省市級、校級專案10 餘項,其中主持廣東省普通大專院校青年創新人才項目、教育部產學合作協作育人項目各一項。發表論文18篇,其中SCI、EI、北大核心期刊12 篇,第一作者論文獲得北大核心期刊優秀論文、東莞市電腦學會優秀論文。申請發明專利、實用新型專利共 8項,其中已授權3 項,獲得軟體著作權3 項,已出版教材3 部。指導學生獲得國家級和省級競賽獎項50 餘項,多次獲得國家級和省級優秀指導教師獎。
☘ 本書適合讀者群
■ 深度學習相關程式設計師
■ 演算法工程師
■ 人工智慧開發人員
■ 遊戲開發人員
■ 電腦視覺開發人員
■ 各類院校的學生
■ 其他對 GAN 感興趣的各類人員
【 前言 】
生成對抗網路(GAN),在2014 年被提出,隨後便引起了大量深度學習研究人員與從業者的關注。GAN 以兩個網路相互對抗的方式進行訓練從而獲得有價值的模型,相比於傳統的無監督學習的想法,GAN 更加清晰易懂,並避開了傳統無監督學習中遇到的困難,是這幾年論文發表數最多的主題之一。據統計,至2018 年年底,每20 分鐘就會有一篇GAN 方面的論文。
目前,GAN 在圖型和視覺領域運用是最廣泛的,GAN 已經可以生成超高畫質的逼真圖型,人類已經難以分辨出這些圖型是生成的還是真實的,透過這種方法可以實現圖型的修復、模糊圖型...
目錄
前言
01 優雅Python
1.1 Anaconda
1.2 Python 基礎
1.3 Python 進階
1.4 小結
02 優雅的數學
2.1 向量與矩陣
2.2 微積分
2.3 機率論
2.4 資訊理論
2.5 小結
03 初識神經網路
3.1 什麼是神經網路
3.2 神經網路中常見的概念
3.3 動手實現深度學習框架TensorPy
3.4 TensorFlow 簡介
3.5 小結
04 初識生成對抗網路
4.1 什麼是生成對抗網路
4.2 GAN 基本原理
4.3 TensorFlow 實現樸素GAN
4.4 關於GAN 的幾個問題
4.5 小結
05 生成對抗網路的數學原理
5.1 擬合真實分佈
5.2 生成對抗網路
5.3 統一框架F-GAN
5.4 GAN 訓練過程視覺化
5.5 小結
06 卷積生成對抗網路
6.1 初識卷積神經網路
6.2 TensorFlow 實現卷積網路
6.3 TensorFlow 實現DCGAN網路
6.4 小結
07 條件生成對抗網路
7.1 如何實現圖型間風格轉換
7.2 條件生成對抗網路
7.3 ColorGAN 的實現
7.4 實現文字轉圖型
7.5 實現句子轉圖型
7.6 小結
08 迴圈一致性
8.1 以無監督的方式實現風格轉換
8.2 CycleGAN
8.3 StarGAN
8.4 語義樣式不變的圖型跨域轉換
8.5 小結
09 改進生成對抗網路
9.1 傳統GAN 存在的問題
9.2 Wasserstein GAN
9.3 Improved WGAN(WGAN-GP)
9.4 SN-GAN
9.5 小結
10 漸近增強式生成對抗網路
10.1 堆疊式生成對抗網路StackGAN
10.2 TensorFlow 資料處理
10.3 漸近增長生成對抗網路PGGAN
10.4 小結
11 GAN 進行特徵學習
11.1 近似推斷
11.2 InfoGAN
11.3 VAE-GAN
11.4 小結
12 GAN 在NLP 中的運用
12.1 GAN 在文字生成中遇到的困境
12.2 GAN 生成離散資料的方法
12.3 強化學習簡述
12.4 SeqGAN
12.5 MaskGAN
12.6 小結
前言
01 優雅Python
1.1 Anaconda
1.2 Python 基礎
1.3 Python 進階
1.4 小結
02 優雅的數學
2.1 向量與矩陣
2.2 微積分
2.3 機率論
2.4 資訊理論
2.5 小結
03 初識神經網路
3.1 什麼是神經網路
3.2 神經網路中常見的概念
3.3 動手實現深度學習框架TensorPy
3.4 TensorFlow 簡介
3.5 小結
04 初識生成對抗網路
4.1 什麼是生成對抗網路
4.2 GAN 基本原理
4.3 TensorFlow 實現樸素GAN
4.4 關於GAN 的幾個問題
4.5 小結
05 生成對抗網路的數學原理
5.1 擬合真實分佈
5.2 生成對抗網路
5.3 統一框架...