背景:在監督學習中,訓練集需要大量的人工標註資料,並且需要人工判斷生成結構好壞,這個過程是高成本且低效率的;GAN能自動完成這個過程,效率高成本低。
定義:生成對抗網路(GAN,generative adversarial network),是一種常用於學習類別特徵的神經網路結構;主要有兩部分組成,分別是生成網路、判別網路。
生成對抗網路GAN讓機器能作詩、作曲、作畫。
GAN 的應用十分廣泛,它的應用包括影象合成、影象編輯、風格遷移、影象超解析度以及影象轉換,資料增強等。
影象風格遷移是將影象A的風格轉換到影象B中去,得到新的影象,取個名字為new B。其中new B中即包含影象B的內容,也包含影象A的風格。
影象生成的目的是生成與訓練樣本影象類似的影象,其中被廣泛應用的一種網路結構是深度折積對抗網路(DCGAN,Deep Convolutional Generative Adversarial Network)
比如:動漫頭像生成、人臉生成等等。
通過學習各種型別音樂的特點,深度學習網路可以創作出對應型別的音樂。
Maddelta是一個線上AI音樂生成的網站,可以通過選擇歌曲型別來隨機生成對應型別的音樂。
判別式學習:人工神經網路ANN、折積神經網路CNN、迴圈神經網路RNN 這些神經網路模型均屬於判別式學習演演算法。該類演演算法根據改定特徵x,計算樣本屬於y的概率。
生成式學習:生成對抗網路GAN 這種神經網路模型屬於生成式學習演演算法。該類演演算法先從訓練集中總結出各個類別的特徵,即先得到,再把待預測樣本的特徵與各個類別的特徵進行比較,以判斷出其所屬的類別。
生成式學習演演算法的核心在於求解;生成式演演算法能夠獲取類別本身的特徵,這使得演演算法具有創造出新樣本的可能。
生成對抗網路(GAN,generative adversarial network),是一種常用於學習類別特徵的神經網路結構;主要有兩部分組成,分別是生成網路、判別網路。
生成網路(也稱:生成器 Generator):用於生成(合成)資料,目的是「騙過」判別器。
判別網路(也稱:判別器 Discriminator):用於判別生成的資料是否真實,目的是找出生成器做的「假資料」。
兩個網路同時訓練,直到判別網路不能鑑別生成資料的真假。
GAN原理圖:
生成網路和判別網路,兩者的訓練目的是為了打敗彼此,兩者有互相對抗。
1、初始化生成器G和判別器D
2、開始迭代訓練:
訓練技巧
1、一個模型訓練K次、另一個模型訓練1次;
2、單邊標籤平滑:正則化、防止判別器梯度過大。
對於MNIST,判別器網路是一個標準的折積網路,可以對饋送到其的影象進行分類,二項式分類器將影象標記為真實或偽造。
從某種意義上說,生成器是逆折積網路:雖然標準折積分類器獲取影象並對其進行下取樣以產生概率,但生成器獲取隨機噪聲的向量並將其上取樣至影象。第一個通過諸如maxpooling之類的下取樣技術丟棄資料,第二個生成新資料。
生成器和判別器相互博弈,隨著判別器改變,生成器也隨之變化;判別器需要判斷是真實圖片,還是假圖片(生成器生成的);生成器需要儘可能生成真實的圖片,以騙過判別器。
論文名稱:Generative Adversarial Nets
論文地址: https://arxiv.org/abs/1406.2661
「GAN之父」 Ian Goodfellow 發表的第一篇提出 GAN 的論文,提出了 GAN 這個模型框架,討論了非飽和的損失函數,然後對於最佳判別器(optimal discriminator)給出其導數,然後進行證明;最後是在 Mnist、TFD、CIFAR-10 資料集上進行了實驗。
論文名稱:Conditional Generative Adversarial Nets
論文地址:https://arxiv.org/abs/1411.1784
cGAN 在生成器部分新增了類別標籤這個輸入,通過這個改進,緩和了 GAN 的一大問題--訓練不穩定。
「引入先驗知識的做法」,這種思想,在如今大多數非常有名的 GAN 中都採用這種做法,後面介紹的生成圖片的 BigGAN,或者是圖片轉換的 Pix2Pix,都是這種思想, cGAN 的提出非常關鍵。
論文名稱:Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks
論文地址:https://arxiv.org/abs/1511.0643
採用 CNN 結構成功實現 GAN 模型,它介紹如何使用折積層,並給出一些額外的結構上的指導建議來實現。採用反折積構建生成器和判別器,新增BN駕駛學習和收斂過程。
它還討論如何視覺化 GAN 的特徵、隱空間的插值、利用判別器特徵訓練分類器以及評估結果。
論文名稱:Improved Techniques for Training GANs
論文地址:https://arxiv.org/abs/1606.0349
介紹了很多如何構建一個 GAN 結構的建議,它可以幫助你理解 GAN 不穩定性的原因,給出很多穩定訓練 DCGANs 的建議,比如特徵匹配(feature matching)、最小批次判別(minibatch discrimination)、單邊標籤平滑(one-sided label smoothing)、虛擬批歸一化(virtual batch normalization)等等,利用這些建議來實現 DCGAN 模型是一個很好學習瞭解 GANs 的做法。
論文名稱:Image-to-Image Translation with Conditional Adversarial Networks
論文地址:https://arxiv.org/abs/1611.0700
用原始圖片生成新風格的圖片;這個模型在訓練時候需要採用成對的訓練資料,並對 GAN 模型採用了不同的設定。
論文名稱:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
論文地址:https://arxiv.org/abs/1703.1059
這篇論文提出了一個非常好的方法--迴圈一致性(Cycle-Consistency)損失函數;CycleGAN僅僅需要準備兩個領域的資料集即可,但不需要一一對應。
論文名稱:Progressive Growing of GANs for Improved Quality, Stability, and Variation
論文地址:https://arxiv.org/abs/1710.10196
它取得非常好的結果以及對於 GAN 問題的創造性方法;它利用一個多尺度結構,從 4*4
到 8*8
一直提升到 1024*1024
的解析度。
論文名稱:Large Scale GAN Training for High Fidelity Natural Image Synthesis
論文地址:https://arxiv.org/abs/1809.11096
BigGAN 應該是當前 ImageNet 上圖片生成最好的模型了,它的生成結果非常的逼真,但這篇論文比較難在本地電腦上進行復現,它同時結合了很多結構和技術,包括自注意機制(Self-Attention)、譜歸一化(Spectral Normalization)等,這些在論文都有很好的介紹和說明。
論文名稱:AdversarialNAS: Adversarial Neural Architecture Search for GANs
論文地址:https://arxiv.org/abs/1912.02037
程式碼地址:https://github.com/chengaopro/AdversarialNAS
提出一種專門針對生成對抗網路(GAN)量身客製化的Adversarial NAS方法,以搜尋無條件影象生成任務中的高階生成模型。網路架構自動化設計的神經架構搜尋(NAS),在許多計算機視覺領域取得了可喜的成果。
這裡收集了大量 GAN 論文的 Github 專案,並且根據應用方向劃分論文:https://github.com/zhangqianhui/AdversarialNetsPapers
人工神經網路 (Artificial Neural Network, ANN),由人工神經元構成的網路,模擬人類的大腦;它模擬生物過程以反映人腦某些特徵的計算結構。
神經元及其突觸是神經網路的基本器件;模擬生物網路首先模擬生物神經元。
折積神經網路(Convolutional Neural Network, CNN),在計算機視覺中得到了廣泛的應用。
折積神經網路通過折積層與池化層的疊加實現對輸入資料的特徵提取,最後連線全連線層實現分類。
折積神經網路是前饋網路;前饋神經網路是一個靜態網路,資訊的傳遞是單向的,網路的輸出只依賴於當前的輸入,不具備記憶能力。即:處理的資料是一個一個輸入的,前後資料沒有關係的。實際生活中,很多資料都是有上下文相關性的,這些資料稱為序列資料;處理的時候,不能只考慮當前的輸入就進行判斷,需要考慮前後輸入之間的關係。
迴圈神經網路(Recurrent Neural Networks,RNN),是一種反饋網路,模擬「人腦記憶功能」,常用於語言識別、機器翻譯、視訊分析、生成影象描述等。
RNN能有效處理序列特性的資料,它能挖掘資料中的時序資訊以及語意資訊。
1)西安電子科技大學《人工智慧導論》課程;
2)北京交通大學《影象處理與機器學習》課程;
3)上海交通大學《人工智慧技術》課程;
4)https://zhuanlan.zhihu.com/p/80128600
如有錯誤,歡迎指出;歡迎交流~
宣告:本篇文章,未經許可,謝絕轉載。
3 個復現多種 GANs 模型的 github 專案,分別是目前主流的三個框架,TensorFlow、PyTorch 和 Keras:
搜尋論文:大佬們的優秀成果都喜歡放在arxiv上,不妨直接去arxiv網站上找,http://cn.arxiv.org/