天天看點

GAN(Generative Adversarial Network )對抗生成網絡

以下圖檔來自于我的課程開課吧老師PPT,如有侵權請告知!

GAN(Generative Adversarial Network )對抗生成網絡

GAN(Generative Adversarial Network 對抗生成網絡)

GAN實際是一種方法,表述的是一個過程(這種了解是比較重要的),它不是網絡結構。

生成器與決策器(判别器),生成器生成一張圖檔,決策器去判斷他是真還是假,什麼時候是最佳呢?其實是要達到一種平衡,生成器給出一張圖檔,判别器不能判斷真假,都是0.5的機率。

這是一個過程,訓練決策器可以判别真圖檔,生成器生成加入高斯噪聲的圖檔,和真實圖檔同時輸入到判别器進行判斷,然後再改善生成情況。

GAN(Generative Adversarial Network )對抗生成網絡

一個完美的數學公式呈現出來,請死死記住,符号都别錯,細化到每個字母。這個太重要了,重要到怎麼強調都不過分。

開課吧的老師标了8個序号,第一個序号就是黃顔色的V,這是個什麼,這其實就是相當于損失函數Loss,隻不過這裡使用的是強化學習裡價值函數的概念,具體的請看圖檔解釋,也就是說,現在就是生成器和決策器對抗的過程。生成器是一個agent,判别器執行一個動作。

GAN(Generative Adversarial Network )對抗生成網絡

這裡解釋的就是2了,D(x)就是判别器判斷的結果,或者機率,确定圖檔是真的就是1,是假的就是0,并且D(x)最大值隻能是1,是以可以看到上方那個綠色圖像橫坐标,就是D(x)的取值範圍。是以當判别器最優的時候,D(x)=1,D(G(z))=0,下面這個函數值為0,是以下面這個務必要記住的函數最大值是0

maxD就是指最棒的判别器

GAN(Generative Adversarial Network )對抗生成網絡
GAN(Generative Adversarial Network )對抗生成網絡

那生成器是想幹什麼?讓D(G(z))=1,就是說我生成一張假圖,讓判别器判定為真圖,這就是生成器的目的,是以如果有一個理想的生成器,可以把判别器玩弄于鼓掌之中,就可以讓公式 的5部分趨向于負無窮,是以這就是公式中3的意思。

綜合以上可以總結什麼是minG和maxD的意思,就是使判别器使vf最大,生成器使vf最小。

這個過程希望達到一種平衡,生成器和判别器誰也不能占誰的便宜,交替進行,對抗生成。

這個過程中經驗了解先生成判别器好一點,但是理論上不管這一套。

零和博弈(zero-sum game),又稱零和遊戲,與非零和博弈相對,是博弈論的一個概念,屬非合作博弈。它是指參與博弈的各方,在嚴格競争下,一方的收益必然意味着另一方的損失,博弈各方的收益和損失相加總和永遠為“零”,雙方不存在合作的可能。

生成器和判别器之間就是這種關系和過程,也稱min-max-game。

GAN(Generative Adversarial Network )對抗生成網絡

再看看關于公式的6部分,x代表真實資料,我們是假設它服從某種分布的,此處是p-data分布,這是從機率上來考慮的,高維資料也一定服從某種分布。

訓練資料使用的camera-1的資料,為什麼測試資料也要使用camera-1的資料,不能輸用camera-2的資料,這就是因為在機率上兩者資料不屬于同一重分布,測試起來沒有意義,如果還不好了解的話,此處老師舉了一個例子,為什麼訓練的彩色圖檔不能用黑白圖檔測試,因為channel不一樣,也可以了解為兩者資料服從的分布不一樣。

GAN(Generative Adversarial Network )對抗生成網絡

再看一下公式的7部分,其實是一樣的,隻不過這裡z是噪聲,它符合一個噪聲的p-z分布,每個噪聲樣本都是随機變量,它可能符合我們未知的一種p-z分布(大家不要問為什麼,如果需要探求為什麼就符合某種分布,這得從機率上解釋了,比如為什麼某随意分布的樣本均值的抽樣分布符合正态分布呢?抽樣的樣本和也符合正态分布呢?這我肯定解釋不了,書上這麼寫的,所有人都這麼講的,我的接受來源是實驗模拟,當然有公式推導,有興趣的同學可以去研究一樣,但是咱不是專門研究機率的,不要鑽牛角尖,研究錯了方向)

GAN(Generative Adversarial Network )對抗生成網絡

這個是公式的第8部分,也是最後一部分,首先是連續分布的期望定義,其次就是結合其定義看一下我們公式裡這是什麼意思,表達的是誰的期望,上面老師手寫的應該可以看清,我解釋一下是什麼意思,首先就是按照定義公式中的864部分寫成一種什麼形式,然後是875部分寫成一種什麼形式,這是一種可以計算的形式。求的是logD(x)的期望,因為對抗過程中我們就是計算這個值,對抗過程生成的值很多,怎麼用數學工具很好的表示這麼多數值呢,或者說對抗過程的情況呢,采用的就是期望,通俗的了解就是整個對抗過程中所有logD(x)的均值,另一個同一個意思,然後通過這兩個期望得到我們的vf函數,0就代表判别器最優,負無窮就代表生成器最優。

然後就是化簡公式,我們的G(z)是假的圖檔,就想讓它等于X的,X是真的圖檔,這是我們的目的,是以我們直接替換了,這時,z本來服從p-z分布,此時對整個分布進行了G運算,是以整個分布情況變化了,這種分布通過G的運算變成了p-g分布,這其實就是生成器優化的過程,将假圖檔生成真圖檔,自然要和真圖檔是同一種分布,圖上寫的p-g,如果生成器最優,最終其實就是p-data,隻是老師為了解釋過程寫的一個過渡。

GAN(Generative Adversarial Network )對抗生成網絡

看下這個解釋,就是我上面說的内容。好了,現在我們已經完全了解了這個公式,下面就是計算過程。

總結一下就是:判别器要使vf值最大,生成器要使vf值最小。

第一步:讓判别器達到最優,就是一個訓練過程,使用多分類感覺機,CNN等能夠判别圖像;

第二步:生成器使vf值最小,就是上面所說,G(z)最好的極限就是X,是以用了X代替,然後化簡了公式,得到了如下圖綠框所示公式,對其進行求導并等于0,得到D的值,帶入可以求的綠框表達式最大值,此時得到最優判别器。那麼正如上面所述,在生成器進化過程中,是否p-g分布最終等于了p-data分布,就取得了最小值?

現在綠框中的式子表示的是生成器最優的情況,然後就是計算一下兩個分布相等的時候,得到的值是不是最小值,下面是老師的證明過程。

将綠框中的式子對D求導(這個我也不是很了解,先略過。我找到原因了,後面給連結),并=0,求得D的值(紅色字型部分),然後帶入vf表達式,右側綠色字型部分,我們假設的是兩個分布相等,可求得

vf=-log4,那麼下一步就是驗證,-log4是不是價值函數vf的最小值。

GAN(Generative Adversarial Network )對抗生成網絡

再看下面這張圖檔是驗證過程,中間有個配參數的過程,當兩個分布相等的時候,得到最後一個結果,-log4就是最小值

GAN(Generative Adversarial Network )對抗生成網絡

JSD是個啥,為什麼大于等于0。請看下圖,Dkl和JSD都是描述分布間的離散度的,表示兩個分布的離散程度,比如兩個點的距離,是可以計算,兩個分布的離散程度同樣可以度量,之前沒接觸過,老師說這個是這樣的就先記下。

GAN(Generative Adversarial Network )對抗生成網絡

是以說問題的答案就出來了,p-g=p-data的時候,是全局最優的情況嗎?答案是肯定的,那能取到嗎?這是問題2,本節課結束了,下節課再說。

GAN(Generative Adversarial Network )對抗生成網絡

對于求導過程,我找到不了解的原因了,也找到可以了解的版本了,但是我還是沒了解,這個涉及到其他的數學知識,我還不具備,包括資訊論,泛函變分。現在還不适合細究這個,先規劃着吧。

連結奉上:https://www.jianshu.com/p/59c3f7945e9f

繼續閱讀