GAN,無監督深度學習新前景方法(1,2)

大家好,我是蜂口的龍鵬,在“陌陌”公司擔任深度學習算法工程師,曾任職於360AI研究院,長期從事於圖像算法處理和深度學習相關的工作。

撰寫本手冊,主要和大家來探討GANs這樣一種最具前景的無監督學習方法。 雖然生成對抗網絡GANs(Generative adversarial networks)已經被提出來好幾年了,但我依然對它非常懷疑。儘管生成對抗網絡已經在 64x64 分辨率的圖像上取得了巨大的進步,卻依然無法打消我的疑慮,於是,我開始閱讀了相關的數學書籍,我更加懷疑生成對抗網絡事實上並沒有學習到數據分佈。但是這一點在今年有所改觀,首先是新穎有趣的架構(如 CycleGAN)的提出和理論性的提升(Wasserstein GAN)促使我在實踐中嘗試了生成對抗網絡,然後它們的效果還算可以,另外在兩次應用過生成對抗網絡之後,我開始被它深深折服,並且開始堅信我們必須使用生成對抗網絡進行對象生成。

GANs的設計思想其實很簡單,它就是用兩個模型,一個生成模型,一個判別模型。判別模型用於判斷一個給定的圖片是不是真實的圖片(判斷該圖片是從數據集裏獲取的真實圖片還是生成器生成的圖片),生成模型的任務是去創造一個看起來像真的圖片一樣的圖片。而在開始的時候這兩個模型都是沒有經過訓練的,這兩個模型一起對抗訓練,生成模型產生一張圖片去欺騙判別模型,然後判別模型去判斷這張圖片是真是假,最終在這兩個模型訓練的過程中,兩個模型的能力越來越強,最終達到穩定狀態。GANs還可以學習模擬各種數據的分佈,例如文本、語音和圖像,因此在生成測試數據集時,它是非常有價值的。

如何構建GANs的生成與判別式模型?它的重要原理又是怎樣的?它在數據生成、風格遷移和超分辨率重建方面的表現到底如何呢?

**一、**判別式模型和生成式模型
1.1 判別式模型

判別式模型,即Discriminative Model,又被稱爲條件概率模型,它估計的是條件概率分佈(conditional distribution), p(class|context) 。
舉個例子,我們給定(x,y)對,4個樣本。(1,0), (1,0), (2,0), (2, 1),p(y|x)是事件x發生時y的條件概率,它的計算如下:
GAN
1.2 生成式模型

即Generative Model ,生成式模型 ,它估計的是聯合概率分佈(joint probability distribution),p(class, context)=p(class|context)*p(context) 。p(x,y),即事件x與事件y同時發生的概率。同樣以上面的樣本爲例,它的計算如下:
GAN
1.3 常見模型

常見的判別式模型有Logistic Regression,Linear Regression,SVM,Traditional Neural Networks
Nearest Neighbor,CRF等。
常見的生成式模型有Naive Bayes,Mixtures of Gaussians, HMMs,Markov Random Fields等。
1.4 比較

判別式模型 ,優點是分類邊界靈活 ,學習簡單,性能較好 ;缺點是不能得到概率分佈 。
生成式模型 ,優點是收斂速度快,可學習分佈,可應對隱變量 ;缺點是學習複雜 ,分類性能較差。
GAN

上面是一個分類例子,可知判別式模型,有清晰的分界面,而生成式模型,有清晰的概率密度分佈。生成式模型,可以轉換爲判別式模型,反之則不能。

**二、**GAN,即Generative Adversarial Net
它同時包含判別式模型和生成式模型,一個經典的網絡結構如下。
GAN
2.1 基本原理

GAN
GAN的原理很簡單,它包括兩個網絡,一個生成網絡,不斷生成數據分佈。一個判別網絡,判斷生成的數據是否爲真實數據。上圖是原理展示,黑色虛線是真實分佈,綠色實線是生成模型的學習過程,藍色虛線是判別模型的學習過程,兩者相互對抗,共同學習到最優狀態。
2.2 優化目標與求解

下面是它的優化目標。
GAN
D是判別器,它的學習目標,是最大化上面的式子,而G是生成器,它的學習目標,是最小化上面的式子。上面問題的求解,通過迭代求解D和G來完成。

要求解上面的式子,等價於求解下面的式子。

GAN
其中D(x)屬於(0,1),上式是alog(y) + blog(1−y)的形式,取得最大值的條件是D(x)=a/(a+b),此時等價於下面式子。

GAN
如果用KL散度來描述,上面的式子等於下面的式子。

GAN
當且僅當pdata(x)=pg(x)時,取得極小值-log4,此時d=0.5,無法分辨真實樣本和假樣本。

GAN從理論上,被證實存在全局最優解。至於KL散度,大家可以再去補充相關知識,篇幅有限不做贅述。
2.3 如何訓練

直接從原始論文中截取僞代碼了,可見,就是採用判別式模型和生成式模型分別循環依次迭代的方法,與CNN一樣,使用梯度下降來優化。
GAN
2.4 GAN的主要問題

GAN從本質上來說,有與CNN不同的特點,因爲GAN的訓練是依次迭代D和G,如果判別器D學的不好,生成器G得不到正確反饋,就無法穩定學習。如果判別器D學的太好,整個loss迅速下降,G就無法繼續學習。

GAN的優化需要生成器和判別器達到納什均衡,但是因爲判別器D和生成器G是分別訓練的,納什平衡並不一定能達到,這是早期GAN難以訓練的主要原因。另外,最初的損失函數也不是最優的,這些就留待我們的下篇再細講吧,下面欣賞一下GAN的一些精彩的應用。

更多精彩分享內容,請翻閱下篇

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