個人總結:Generative Adversarial Nets GAN原始公式的得來與推導
根據文章所述, 為原始資料, 使用的噪聲資料,, 為batch_size的大小。
而 為通過生成器生成的資料,也就是說 與是能夠互相對立的競爭對手。生成器生成了妄圖模擬到的效果達到“欺騙”判別器的目的。
............................(1)
對於判別器來說,其中是判別器認定為真假的概率,在0到1之間,這個地方大家很容易理所當然,一定要記住記住記住,因為對於後續公式的理解很重要。它認為越“真”的資料,給出的概率就越接近1,所以對(1)式左邊,它有兩個目的
對於(1)式右邊,生成器的目的和判別器相悖,它希望,也就是希望自己生成的資料越接近真實資料。
所以我們現在可以寫成
.........................(2) //中間的點為空格,1和2為序號
...............................(3)
可以很明顯地看到(2)的2與(3)相矛盾,對啊,這就是博弈的過程,minmax。
接下來,我們可以對(2)式的2,以及(3)進行等價調整,我們將min通過將1進行減法就得到等價變換
.........................(4)
...............................(5)
這樣變換的原因原始論文中的表述是能夠得到更加穩健的梯度。
接下來,我們將公式再進行升級,由於我們前面得到的所有都是概率,為方便後續求梯度,我們在所有公式前面加上Log
.......................(6)
...................(7)
好的,接下來我們可以將(6)式進行合併了,得到
........................(8)
公式推導到這裡就差不多了,接下來就是交替訓練的過程,論文中提示的是訓練k次判別器,然後訓練一次生成器。
我們將(7)(8)進行結合,就得到了更加接近論文原始公式的東西
..........................(9)
這裡可能需要仔細看一下,因為已經變成了一個minmax公式了。公式的前半部分和後半部分是判別器用到的部分,而生成器只用到了後半部分。
好勒,現在還記得我之前提到的, 為batch_size的大小嗎。
我們將minibatch裡面所有的資料相加,再對其取均值。這裡我們使用(9)。
.....................(10)
咦,是不是有點眼熟呢?對啊,這樣我們就求取了一個Minibatch的期望!
此時我們已經可以將(10)等價寫成
........................(11)
是的,這就是論文中的原始公式了,要注意 和 已經變成了 和 哦,代表的是一個minibatch。
好的,接下來,我們使用(10)中只涉及到判別器的部分,也就是
.......................(12)
我們想使判別器得到“滿足”,也就是,通過這樣來更新判別器的引數,我們就需要求(12)的梯度。
.........................(13)
對啦,這就是論文中的那個求判別器梯度的公式了。
同理,我們使用(10)中只涉及到生成器的部分,也就是
............................(14)
然後也是同樣的
.................................(15)
這樣就得到論文中求生成器的梯度的公式啦。
我們將得到的生成器和判別器的梯度用於隨機梯度下降法(當然也有其他種優化方法),我們就可以更新它們的引數,使我們的矛更加鋒利,我們的盾更加堅固,以己之矛,攻己之盾,在不斷的交替更新下,我們的生成器和判別器得到了不斷的改良和優化。最終,我們能得到“近似”真實資料分佈的“假資料”。這就是GAN的思想啦。
PS:如果有說的不對的地方,歡迎各路大神指正。感謝觀看!