GANs简述 Generative Adversarial Nets
0、說在開頭
????????最近接觸到基于機器學習進行入侵檢測的項目,加上研討班上需要面向畢設(shè)預開題,在看了最近一些論文之后打算開始小白的GANs之旅,這篇先從Goodfellow在2014年最早提出GANs這一概念的文章說起,講述一下自己對于GANs框架的一些想法和理解,方便日后回顧,若有錯誤歡迎大佬指出,初學者可能有些細節(jié)講的不算清楚。
1、現(xiàn)狀
?
? ? ? ? 在Goodfellow大神提出GAN以后,關(guān)于GANs的研究數(shù)量直線上升,如圖(圖自:GAN-zoo) 那么什么是GANs呢,全稱Generative Adversarial Nets,翻譯為生成對抗網(wǎng)絡(luò)。意味著GANs框架可以分為Generative跟Adversarial,即生成跟對抗兩個主要思路。
2、Basic Idea
????????生成對抗網(wǎng)絡(luò)主要有兩部分組成,分別是生成器G跟判別器D。判別器在本質(zhì)上其實就是一個二分類模型,根據(jù)一定的判別界限,通過這個判別界限去區(qū)分樣本。如下圖,D的輸入是來自G的輸出G(z)以及真實數(shù)據(jù)X,D的輸出則是一個得分,該得分越高則表明輸入屬于真實數(shù)據(jù)集X的概率越大。而生成器是需要在給定的條件內(nèi)產(chǎn)生數(shù)據(jù)的分布, 比如高斯分布,需要使得生成的數(shù)據(jù)擬合該分布。
????????
????????圖自Recent Progress on Generative AdversarialNetworks (GANs): A Survey
? ? ? ? ?簡而言之,GANs的思路是使用兩個模型,生成模型G跟判別模型D,以圖像任務(wù)為例,判別模型D用于判斷輸入的圖像是否屬于真實數(shù)據(jù)集,生成模型G的任務(wù)則是生成盡可能貼近真實數(shù)據(jù)集的圖片,欺騙判別器,讓判別器難以判斷這張圖片的真假,這就是GANs中A所代表的對抗所在。在原文中作者將G比喻成造假鈔的人,而D比喻為警察。通過兩個模型的對抗訓練,兩個模型的能力在理論上會越來越強,即生成器能生成越來越真實的數(shù)據(jù),而判別器對真假數(shù)據(jù)的判別能力越來越強,最終兩個模型的能力達到一個納什均衡,即生成器生成的對抗樣本以假亂真,判別器的準確率約為0.5,雙方的利益都達到最大化,且不再更新自己的策略。
? ? ? ? 如上圖,將生成器比作枯葉蝶,將判別器比作捕食者,一開始枯葉蝶顏色艷麗,捕食者根據(jù)學習發(fā)現(xiàn)枯葉蝶不是棕色的,所以遇到顏色鮮艷的蝴蝶捕食者可以判斷其為枯葉蝶。后來枯葉蝶進化了,將自己進化為棕色,躲避捕食者。而與此同時,捕食者也相應(yīng)進化,改變自己的判斷策略,學習到枯葉蝶可能是沒有葉脈紋路的,之后枯葉蝶進一步進化,而捕食者可能又進而更新策略,不斷進化。
3、Generation
? ? ? ? 生成器輸入一些隨機分布,然后生成指定的數(shù)據(jù),我們可以使用不同的算法使生成器生成不同類型的數(shù)據(jù),如圖像或者文字。
? ? ? ? 如圖,生成器的基本思想即為輸入一個低維的vector向量?生成一個高維的對象,而生成器自身是一個Neural Network(NN),也可以將其理解為一個函數(shù)(function)。而輸入向量的不同元素可能代表了最終輸出數(shù)據(jù)的不同表現(xiàn),如下圖。
4、Discriminator
? ? ? ? ?判別器理論上是一個二分類模型,對輸入數(shù)據(jù)進行二分類任務(wù),如下圖,給來自真實數(shù)據(jù)庫的數(shù)據(jù)打高分(接近1),給來自生成器的數(shù)據(jù)打低分(接近0)。
5、Algorithm
? ? ? ? GANs模型的目標函數(shù)如下:
? ? ? ? ?首先是maxD,意思是使得判別器能在最大概率區(qū)分訓練樣本,而生成器G的目標則是使得1-D(G(z))最小,即使得D難以區(qū)分G根據(jù)隨機分布z生成的G(z),使得D的loss最大化。我們也可以將log(1-D(G(z)))理解為生成器G的loss。
? ? ? ? GANs模型的訓練模式分為幾個步驟:
(1)固定生成器G,更新判別器D:
? ? ? ? 首先在真實數(shù)據(jù)集中采部分樣本,?并標記為1,將根據(jù)隨機分布輸入固定生成器G生成的數(shù)據(jù)標記為0,對判別器D進行訓練,使其能夠初步識別真假數(shù)據(jù)。
(2)固定判別器D,更新生成器G
? ? ? ? 將步驟(1)中訓練得到的模型作為固定的判別器,生成器不斷更新,試圖欺騙第一階段的判器。
?(3)重復步驟1、2,得到最終模型
? ? ? ? 在訓練過程中,生成器生成的數(shù)據(jù)會越來越接近真實數(shù)據(jù),在原文中作者給出了理論上的訓練效果,如下圖:
? ? ? ? 對于圖a,判別器D剛開始訓練,本身能力有限,有波動,只能初步區(qū)分生成數(shù)據(jù)與真實數(shù)據(jù)。在圖b中可以看見判別器D的能力有所提升,能較為明顯區(qū)分真實與生成數(shù)據(jù)。對于圖c,綠色線與黑色線之間的距離更近,說明生成器在沿著藍色的線向高處訓練,隨著訓練的持續(xù),作者認為會達到圖d的情況,即判別器D已經(jīng)無法分辨生成數(shù)據(jù)與真實數(shù)據(jù),兩個模型達到了納什均衡,雙方策略無法進一步更新。但后續(xù)也有研究指出最終情況與作者提出的有區(qū)別,判別器D最終并不會完全失去判斷能力,而在14年以后也有大量研究使用GANs訓練后得到的判別器D執(zhí)行更加精確的分類任務(wù),如果真如作者想象,判別器D應(yīng)該無法進一步執(zhí)行分類任務(wù),在之后的文章我會進一步補充這方面的內(nèi)容。
6、思考
? ? ? ? 最后提出一個思考,并在后續(xù)的文章中進一步解釋。關(guān)于GANs框架,也存在一個和平的比喻,將生成器G比作學生,將判別器D比作老師。
? ? ? ? 生成器需要學習如何繪制二次元人物頭像,但最開始畫出來的圖像清晰度不夠,或者沒有顏色,也無法看出來這是一個人物,此時初代的判別器D告訴生成器,二次元人物應(yīng)該有兩個圈,表示眼睛。生成器進一步學習,畫出了黑白的頭像,此時判別器D進一步提出,二次元人物應(yīng)該是彩色的,然后不斷重復繪畫與提出建議的過程,老師跟學生共同進步。
????????基于這個比喻,很自然的我們會想,為什么學生不能自學?而老師知道真正的頭像長什么樣,為什么老師不能自己畫呢?這是我們后續(xù)探討的問題,在下一篇文章中我會爭取解釋這部分的問題。?
總結(jié)
以上是生活随笔為你收集整理的GANs简述 Generative Adversarial Nets的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tensorflow实现CNN识别手写数
- 下一篇: html特殊字符表和颜色代码表