GANs的核心理念很簡單,其實就是回答了最大似然估計沒有辦法解決的問題提出另一條解決路徑。所以在全面認識GANs之前首先需要掌握一點點最大似然相關的知識。
這個文章主要是根據最近做的一個PPT進行相關的講解注釋。

首先我們講下什么是GANs,從最簡單的流程圖從上往下看就是,首先定義一些噪音數據(這里我更偏向於稱作種子數據。anyway),將他們喂(feed)給生成器,經由生成器后最初的一些噪音數據會得到相應的,具有一定分布形式的數據,之后分別將生成的數據和真實數據交給判別器,判別器的主要作用就是根據這些數據的相關特性來分辨這些數據中哪些是來源於真實數據,哪些是來源於生成器構造的數據。這個可以看作是GNAs的單次運算過程。

具體來說GANs是怎么工作的呢?其實在原論文中作者就有過相關的詳細描述。這里做個簡單的翻譯。為了讓pg(構建的數據)最終能符合真實數據的分布,我們首先將一些毫無規律的噪音數據輸入到生成器中,生成器根據喂進的數據生成具有一定分布形式的數據G(z,Θ),同時我們還定義了一個判別器D(x),其輸出為單個標量。判別器D的主要功能就是判別輸入其中的數據是否來自於真實的數據集中而不是來自構建的數據集中。訓練判別器D使其對兩個來源的數據能最准確的判別,例如來源於真實數據集的數據經過判別器的判斷其概率接近於1,而來源於構建數據集中的數據經過判別器的判斷,其概率更接近於0。從而將兩種來源的數據划分開來。

這幾個圖從真實數據集的分布,構建的數據分布以及判別器的判別線這三個元素動態的展示了GANs運算優化過程,並且可以在最后一張圖中看出最終達到最優解時判別器對兩種來源的數據判斷的概率均為0.5,且構建的數據已經和真實數據的分布重合,表示此時,判別器已經無法二者的差別。本文后面部分將主要從數學角度依據原論文中的相關公式計算驗證這一最優解的情況是否具有嚴格的數據驗證。

文中給出的算法示例,其大致過程與上述描述的一致,只是在其中補充了更新判別器D和生成器G的策略,分別是應用隨機梯度上升優化D,用隨機梯度下降來優化更新生成器。

接下來就是一堆數學相關的驗證時刻了,這個公式是原文中的第一個公式,有江湖傳言,如果一眼就能看懂這個公式在講些什么,就說明你的GANs已經達到大成的級別了~首先我們來說說開頭部分的那個minmax,它是源自博弈論中的極小極大博弈來的,簡單的說就是在函數V(D, G)中D和G兩者之間形成了一種此消彼長的關系。所謂的極小極大就是指,D和G兩者的作用(G和D更准確點)。就是說D的主要作用是要將函數值拖向極大那邊,而G的作用就是要將函數值怒力拖向極小的那邊。其中Ex~pdata(x)[log D(x)]公式中的這種形式,很大程度上是來源於對數似然函數(個人猜測,但也挺合理的)。

這一頁就是最大似然函數的相關知識,主要參考了李宏毅18年講解的GANs課程PPT,只是將其中的英文部分翻譯成了中文而已,后面還有幾張片子也是來源於他的課程PPT之中的。

這個片子也是參照李宏毅的課程PPT,與他不同的是我在這里並沒有關注他原版PPT中將似然函數與KL散度統一的那塊知識,主要是覺得目前還不太會干擾到我后續對GANs論文數理部分的理解,首先這上面取log的主要原因是將連乘轉化成加法運算,並且在取完log之后對本來的函數也沒有什么本質上的性質改變(這一點很重要!),所以可行。最后一步的約等於是大數定理已經證明的結論,即,當M接近無限大時,可以用期望乘以log(…)代替將log(…)求和。

為什么要求證圖中的式子,因為這個等式成立對我很重要(其實是,這個等式成立是后面幾步運算的基礎)。這里依然采用李宏毅PPT中的解釋,(目前來說看到的大部分相關博客對這一部分要不就是沒有解釋,要不就是采用了我下張片子會講到的驗證方法,但也很少有涉及的博客)這里主要是一個理解的過程,第一個等式成立代表了G(z) = x;同時Ez = Ex也是成立的。這一步的基礎是在給定的G 的基礎上求解D的最優解(這是大前提)。具體按圖中的意思就是經過一段優化之后(論文以及后續的很多實驗都說最好預先訓練G一小會)生成器G可以將吃掉的噪音數據大致的規划成一個新的分布,就是PG(x), G吃掉的z生成的就是x(這個x不是來源於真實數據集的x而是生成器生成的x),GANs做到后面就是要讓兩種來源的x達到幾乎一樣分布的地步,是判別器無法區分。

這里是另一種常用來證明等式成立的數學理論,主要是運用到了測度論中的隨機變量換元定理進行證明,其中要是使等式成立則必須假設G(x) = G-1(x),即G(x)首先得是可逆的,其次它的逆函數要等於本身,這一點的證明還不太明了。實在沒找到相關的數學證明部分,有知道的同學可以告知一下。

這部分加上后面的片子主要就是對文中幾乎沒怎么寫詳細證明的部分詳細的展開證明了下(個人覺得這部分的證明具有簡明性,一步步的看下去就能理解,所以在后面的片子中,一般不會進行評論解釋)

就是一個簡單的求凸函數的最大值的問題,轉化成倒數等於0即可求解。







這一塊的收斂性的證明論文中講解的很詳細,其主要討論的部分即D的最優解在不在V(G; D)的最優解的范圍中。
后面是一些常被提及的最新的GANs家族里的各個文章地址,感興趣的可以自行下載閱讀。
1. InfoGANs https://arxiv.org/abs/1606.03657
2. Relativistic GANs https://arxiv.org/abs/1807.00734
3. CycleGANs https://arxiv.org/abs/1703.10593
4. SAGANs https://arxiv.org/abs/1805.08318
5. Progressive GANs https://arxiv.org/abs/1710.10196
6. DCGANs https://arxiv.org/abs/1511.06434
7. WGANs https://arxiv.org/abs/1701.07875
8. BEGANs https://arxiv.org/abs/1703.10717
9. VAEGANs https://arxiv.org/abs/1512.09300
10. Seq GANs https://arxiv.org/abs/1609.05473
11. cGANs https://arxiv.org/abs/1411.1784
總的來說文中最模糊的部分就是第一個等式的證明,那塊總覺得要想通了什么,但是就是有個隔閡,突破不了(- -! 污~)
本文中的圖片來自於自己制作的PPT,其中部分頁標注了引用。如對文中內容有相關問題可以進行討論,未經許可,嚴禁轉載!
