1. GAN的理論
在圖片生成過程中,我們的目標其實是存在一定的分佈的,假設在整個圖像空間中,藍色部分的點可以生成人臉,其他區域的臉則不能生成人臉。那麼,我們的目的是尋找藍色區域的概率密度函數
1.1 最大似然估計與GAN
一般的思路是:我們通過sample數據集,去估計給定數據(輸入數據)的分佈,記爲,因此,使用網絡的目的是,找到一堆參數所構成的分佈與越接近越好。
那麼,使用最大似然估計即爲:
然後我們在後面減一項,該項與沒有關係,就變成下面這個式子,就可以整理成KL Divergence的形式。
而Generator的作用就是,將輸入映射成各種形狀的分佈。
那麼,在不知道和的情況下,怎麼樣去解這個式子呢?
那麼Discriminator的作用是什麼呢?其實就是衡量和的差別有多大,然後就其實是一個分類的函數
然後得到的最佳的值,其實就是一個JS Divergence的解。當生成數據與原始數據差距很大時,D可以輕易的分辨出來,否則的話,D很難分辨出來。
1.2 數學推導
考慮到sample 出來的每一個樣本都是獨立的,於是可以把這個積分拆開來計算,即要優化下面的式子:
所以,現在問題就可以變成下面這個式子:
G3是最好的選擇,因爲滿足要求藍色的線最小,而代表紅色的點。
同理,對於也是一樣的。那麼,在第一次迭代之後,得到之後,我們需要找到使得最大(對應圖中的紅點)。
然後當我們更新了變成之後,我們需要重新找一個來滿足要求。但是這樣的有一個前提假設。
在訓練過程中要更新所以的分佈形狀也會發生改變,因此,在的變化過程中不會發生太大的改變,也就是說,我們在訓練過程中,對於G,不能訓練的太多(不能讓他們的分佈形狀變化太多)而對於D來說,我們需要訓練到底,因爲我們要求最大值。
1.3 算法
D 最好能夠多train幾次,
G不能多train,否則的話找的divergence就不是原來D中對應的那個divergence。
在GAN的論文中提到,一開始,我們的優化目標應該是,但是考慮到他的趨勢一開始微分的結果非常小,所以在訓練的過程中會出現一些問題
於是,優化的目標函數就變成了相同趨勢的: