前言
Generative Adversarial Nets,生成對抗網絡,也就是大家經常聽到的 GAN,由Ian Goodfellow於2014年首先提出,之後迅速風靡學術圈。就連深度學習先驅之一的Yann LeCun也給予了高度評價,認爲"GAN及其變種是數十年來機器學習領域最有趣的點子"。有關GAN的研究層出不窮,彷彿沒有什麼是“GAN”不出來的。
發展現狀
根據GAN的發展情況,梳理相關內容:
名稱 | 發表時間 | 解決問題 | 中文名稱 | 論文鏈接 |
---|---|---|---|---|
GAN | 10 Jun 2014 | GAN系列的開山之作 | 生成對抗網絡 | https://arxiv.org/pdf/1406.2661.pdf |
CGAN | 6 Nov 2014 | 原始GANs通過輸入隨機噪聲來生成數據,但是無法指定生成內容。CGAN通過將一個one-hot向量連接到輸入的隨機噪聲以告訴生成器生成特定類別的圖像,從而解決輸出不可控的問題。 | 條件生成對抗網絡 | https://arxiv.org/pdf/1411.1784.pdf |
DCGAN | 19 Nov 2015 | 原始GANs不一定使用基於卷積的操作,而是依賴於標準的多層感知器架構。DCGAN通過巧妙的設計卷積網絡和採用策略改進原始GANs。 | 深度卷積生成對抗網絡 | https://arxiv.org/pdf/1511.06434.pdf |
CoGAN | 24 Jun 2016 | 比一個GAN更好的是什麼?兩個GAN!CoGAN所訓練的就是兩個GAN而不是一個。 | 耦合生成對抗網絡 | https://arxiv.org/pdf/1606.07536v2.pdf |
CycleGAN | 30 Mar 2017 | CycleGAN 致力於解決圖像到圖像映射的問題,主要用於風格遷移。可以進行未配對的圖像到圖像的轉換。 | Cycle生成對抗網絡 | https://arxiv.org/pdf/1703.10593.pdf |
WGAN | 26 Jan 2017 | WGAN提出了一種新的損失函數,有着非常好的性質。 | Wasserstein 生成對抗網絡 | https://arxiv.org/pdf/1701.07875.pdf |
ProGAN | 27 Oct 2017 | ProGAN通過增加生成圖像的分辨率來幫助穩定 GAN的訓練。 | 生成對抗網絡的漸進式增長 | https://arxiv.org/pdf/1710.10196.pdf |
SAGAN | 21 May 2018 | SAGAN 使用了自注意力機制。 | 自注意力生成對抗網絡 | https://arxiv.org/pdf/1805.08318.pdf |
BigGAN | 28 Sep 2018 | 大Batch Size,採用先驗分佈 z 的“截斷技巧”,對模型穩定性的控制。 | 大生成對抗性網絡 | https://arxiv.org/pdf/1809.11096.pdf |
StyleGAN | 12 Dec 2018 | StyleGAN 不專注於架構和損失函數,而是改進了GANs對生成的圖像進行精細控制的能力 。它可以與任何GAN一起使用。 | 基於風格的生成對抗網絡 | https://arxiv.org/pdf/1812.04948.pdf |
··· | ··· | ··· | ··· | ··· |
論文《Generative Adversarial Nets》探祕
一、什麼是GAN?
百度百科:生成式對抗網絡(GAN, Generative Adversarial Networks )是一種深度學習模型,是近年來複雜分佈上無監督學習最具前景的方法之一。模型通過框架中(至少)兩個模塊:生成模型(Generative Model)和判別模型(Discriminative Model)的互相博弈學習產生相當好的輸出。原始 GAN 理論中,並不要求 G 和 D 都是神經網絡,只需要是能擬合相應生成和判別的函數即可。但實用中一般均使用深度神經網絡作爲 G 和 D 。一個優秀的GAN應用需要有良好的訓練方法,否則可能由於神經網絡模型的自由性而導致輸出不理想。
百科中大致說明了GAN的結構、核心思想和問題。
GAN由兩個部分組成:
- 生成器 Generator,例如生成一張新的貓咪圖片(不在數據集裏)
- 判別器 Discriminator,例如給定一張圖,判斷這張圖裏的動物是貓還是狗
核心思想:
零和博弈,通過讓生成器 Generator和判別器 Discriminator相互對抗,Generator試圖生成接近真實的數據,Discriminator試圖區分真實的數據和由Generator生成的數據。最終達到一個“平衡”,即Generator生成的數據足夠真實,Discriminator只是是隨機猜測,無法再區分真實數據與生成數據的區別。
存在的問題:
- 難訓練
- 有模式崩潰(Model Collapse)的可能
二、能GAN什麼?
- 圖像生成
GAN最常使用的地方就是圖像生成,如超分辨率任務,語義分割等等。 - 數據增廣
對於小數據集,數據量不足,可以通過使用GAN生成的圖像來做數據增廣。
三、GAN的原理
真實數據集的分佈爲,對於生成器Generator而言,它的目標是希望能夠學習到真實樣本的分佈,這樣就可以隨機生成以假亂真的樣本。
給定輸入噪聲 ,現有的 Generator 生成的數據分佈假設爲,這是一個由 控制的分佈,是這個分佈的參數(如果是高斯混合模型,那麼就是每個高斯分佈的平均值和方差)。然後定義判別器,其中表示來自而非的概率。
我們的目標是訓練判斷器D以使其能最大可能地區分來自和的樣本,同時訓練生成器G以最小化,從而生成D難辨真假的數據。D和G的博弈的價值函數:
其中,表示D判斷真實數據是否是真實的概率,表示D判斷G生成的數據是否是真實的概率。
G希望儘可能大,此時會變小,即。
D希望儘可能大,儘可能小,此時會變大,即。
交替訓練最終達到納什平衡狀態。
論文中給出的網絡訓練算法如下,詳解後續再做補充:
論文鏈接:
https://arxiv.org/pdf/1406.2661.pdf
代碼鏈接:
http://www.github.com/goodfeli/adversarial
參考資料:
[1] 深度學習最強資源推薦:一文看盡 GAN 的前世今生,https://www.sohu.com/a/325882199_114877
[2] GAN(生成式對抗網絡)百度百科,https://baike.baidu.com/item/Gan/22181905?fr=aladdin
[3] GAN筆記——理論與實現,https://www.cnblogs.com/fydeblog/p/9439024.html
[4] GAN原理學習筆記,https://zhuanlan.zhihu.com/p/27295635
[5] AdversarialNetsPapers, https://github.com/zhangqianhui/AdversarialNetsPapers