GAN學習筆記(一)——初探GAN

本文基於2014年的經典論文:Generative Adversarial Networks
論文下載地址:https://arxiv.org/abs/1406.2661

一、感性認識
GAN的任務是“無中生有”。打個比方,我們想要造假幣(但是不知道真幣是什麼樣的),那麼我們只能通過執法者的反饋,才知道我們造的假幣到底夠不夠真。GAN網絡裏既有造假者,也有執法者,一來二去,執法者辨識力越來越高,造假者的造假技術也越加成熟,最終我們得到了一個火眼金睛的執法者,但是也得到了能以假亂真的造幣工藝。事實上,執法者是網絡的副產品,我們真正需要得到的是造幣工藝,這就是對GAN的感性認識。
這裏寫圖片描述
這張圖裏最左端的潛變量空間不要看,不是最原始的GAN的內容,G的輸入只有噪聲。G可以把噪聲z映射到真實樣本x的特徵空間,得到G(z)。一開始, 雖然G(z)和x是在同一個特徵空間裏的,但它們分佈的差異很大,這時,承擔鑑別真實樣本和虛 假樣本的模型D性能也不強,它很容易就能把兩者區分開來,而隨着訓練的推進,虛假樣本的分佈逐漸與真實樣本重合,D雖然也在不斷更新,但也已經力不從心了。
這裏寫圖片描述
圖中,黑色曲線是真實樣本的概率分佈函數,綠色曲線是虛假樣本的概率分佈函數,藍色曲線是判別器D的輸出,它的值越大表示這個樣本越有可能是真實樣本。最下方的平行線是噪聲z,它映射到了x。我們可以看到, 黑線和綠線最後幾乎重合,模型達到了最優狀態,這時D的輸出對於任意樣本都是0.5

二、模型認知
接下來從機器學習的角度深入地剖析GAN的性質。
根據訓練數據是否擁有標記信息,學習任務可以分爲監督學習和無監督學習兩類。GAN輸入的樣本都沒有類標,顯然是屬於無監督學習的。
GAN中的G是生成模型,D是判別模型。其實D是有監督的,它本質上是一個二分類器,它的輸出是該樣本屬於真實樣本的可能性,如果這個值大於0.5,則認爲是真實樣本,否則認爲它是虛假樣本。

三、訓練方式
爲了便於描述訓練過程,我們要對文中提到的公式進行一些基本的解釋。
GAN的目標函數是這樣的:
這裏寫圖片描述
從判別器D的角度看,它希望自己能儘可能區分真實樣本和虛假樣本,因此希望D(x)儘可能大,D(G(z))儘可能小, 也就是V(D,G)整體儘可能大。從生成器G的角度看,它希望自己儘可能騙過D,也就是希望D(G(z))儘可能大,也就是V(D,G)整體儘可能小。兩個模型相對抗,最後達到全局最優。
這裏寫圖片描述
模型按照如圖所示的步驟訓練。首先固定G,單獨訓練D,爲了讓D得到充分訓練,有的時候要迭代多次。本論文中每一輪迭代D只訓練一次。D訓練完畢後,固定D,訓練G,如此循環。訓練的方式是反向傳播算法。
可以注意到,在訓練過程中,沒有任何求出真實樣本的分佈或是生成樣本的分佈的過程

四、深入公式
那麼,爲什麼當判別器D對所有樣本都輸出0.5的時候,它就能達到全局最優呢?
論文中,公式2是公式3推導出來的結論,也就是說,當G固定時:
這裏寫圖片描述
D的輸出爲上式時能達到最優。
pdata是真實樣本的分佈,pg是虛假樣本的分佈,分別對應之前曲線圖的黑線和綠線。我們當然可以求出pdata和pg,但是整套訓練過程都不需要我們求這個值
公式4將求到的D代入了目標函數,這時我們開始固定D,求如何取G能達到最優。公式5和公式6證明了當pg=pdata的時候達到全局最優,此時D無論對真實樣本還是虛假樣本,輸出都是0.5.
論文的4.2部分證明了模型是可以收斂的。

五、實驗結果
現在我們得到了一批可以以假亂真的樣本,但是我們究竟怎麼評估這個樣本與真實樣本接近程度呢?總不能用肉眼觀察得出結論吧。
論文給出的方法是高斯parzen窗法進行密度估計,先用真實樣本給出高斯parzen概率密度函數,再計算虛假樣本在這個分佈中的密度,密度越大表示越接近真實值。
論文中表1就給出了概率密度的值, 可以看到本文的方法效果總體上還不錯,但是還有改進空間。
這裏寫圖片描述
表格中每一格左側的是我們需要的指標,右側是通過交叉驗證求得的高斯parzen窗計算時需要的參數。
這裏寫圖片描述
這些圖片都是用GAN生成的虛假樣本,最右側框出來的黃色的是真實數據,作者找出了和生成數據最相近的真實數據,以此證明GAN是通過學習樣本的特徵自己生成樣本,而不是單純的記憶樣本。
從中我們也可以看出GAN的一個缺點,那就是當樣本維數很高的時候(比如c和d),GAN就不能達到令人滿意的效果了。
這裏寫圖片描述
這個實驗反映的是樣本的漸變,以左圖爲例,左圖最左側是生成1時輸入的噪聲(記爲z1)),左圖最右側是生成5時輸入的噪聲(記爲z5),中間的樣本是在z1到z5之間插值得到的,可以清楚地體現樣本的漸變。

六、優缺點
這篇文章講優缺點講得很全面
我個人能理解的只有以下部分:
優點:
1 計算優勢: 不需要馬爾科夫鏈,也不需要對pg和pdata這些變量進行計算, 只需要反向傳播算法,直接得到樣本;
2 範圍廣泛:生成對抗式網絡框架能訓練任何一種生成器網絡,另外理論上,只要是可微分函數都可以用於構建D和G。
缺點:
1 過於自由:較大的圖片,較多的 pixel的情形,基於簡單 GAN 的方式就不太可控了(超高維);
2 難以訓練:GAN的學習過程可能發生崩潰問題(collapse problem),生成器開始退化,總是生成同樣的樣本點,無法繼續學習;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章