當我們在談論 Deep Learning:GAN 與 WGAN
本系列意在長期連載分享,內容上可能也會有所增刪改減;
因此如果轉載,請務必保留源地址,非常感謝!
知乎專欄:當我們在談論資料探勘
引言
GAN(Generative Adversarial Networks)於2014年由 Lan Goodfellow 提出,被 Yann LeCun 譽為“The coolest idea in deep learning in the last 20 years”。事實上,由於 GAN 獨特的思路與驚人的實驗效果,它自提出就受到廣泛關注,用了不到兩年的時間,卷席各種 AI 頂會,方興未艾;另一方面,經過這些年的發展,GAN 依然很不完善,大部分時候只是 TOY 一般的存在。因此,本文會介紹迄今(2017年)部分基礎或廣泛認可的 GAN 理論與結構,需要進一步瞭解的同學需得長期跟進相關論文。
GAN
GAN(Generative Adversarial Networks)最初在“Goodfellow I J, Pougetabadie J, Mirza M, et al。 Generative Adversarial Networks。2014”中被提出,是一種無監督的生成模型演算法。我們先從概念上進行簡單介紹。
在AutoEncoder 及其相關模型中,介紹過生成模型的本質就是對
進行建模,此時一般方法會選定模型並用最大似然學習引數。GAN 與一般生成模型最主要的區別就在於此:
GAN 並不顯式地對
建模,而試圖利用一個 Generator(G) 來學習出資料的分佈
在判斷學習出的模型的優劣時,它也並不直接給出誤差計算函式,而同樣試圖用 Discriminator(D) 來自動判斷模型的優秀程度
可以看出,GAN 其實跟 DL 領域的趨勢是一致的,即將 人工選擇複雜模型 的風險轉移到 簡單模型+人工最佳化引數 上;而且更進一步,具有一定博弈的意味。當然,這只是感性的說法,下面我們更深入地看看 GAN。
首先,GAN 要最佳化的目標如下
透過迭代訓練 Generator 和 Discriminator 來訓練 GAN,方法依然是 BP,具體流程如下
目標函式的初步理解
看過DNN 與它的引數們(貳)的同學對 Binary Cross Entropy Loss 應該不會陌生,它是 DNN 中最常用的 Loss Function 之一,其定義為
其中,
代表資料真實 label,
,
為預測。
可以看出,對於 GAN 中的 Discriminator 和 Generator,本質上都是在最佳化平均 Binary Cross Entropy Loss(更準確的說是 Binary Cross Entropy Loss 取反)。證明過程較簡單,這裡不再贅述。
對於 Discriminator 的訓練大家都輕車熟路了,沒啥區別。但是對於 Generator,GAN 的最佳化目標問題在於,當
接近1,即 Discriminator 基本能正確分辨真實與生成的資料時,Generator 就會出現 Gradient Vanish 問題,從而停止進化。這種情況發生的原因一般為:
訓練初期,Generator 較弱,Discriminator 很容易就能區分出真實資料與隨機資料,Generator 會 Gradient Vanish
訓練中期,若 Discriminator 能力遠超於同期 Generator,則 Generator 會 Gradient Vanish
訓練流程的理解
GAN 的訓練過程有兩點比較重要:
輸入隨機噪聲,期望透過訓練讓 Generator 產生以假亂真的資料,本質是希望 Generator 能將隨機噪聲的分佈
對映到真實資料的分佈
迭代訓練 Generator 和 Discriminator,期間需保持它們能力相近(否則會出現 Gradient Vanish,如上述),期望最後能達到“納什均衡”。此時雖然
顯式表示式依然未知,但可以利用 Generator 對資料進行取樣,以產生訓練樣本集中沒有的資料
關於第1點,以下給出理論上 Generator 能將隨機噪聲的分佈
對映到真實資料的分佈
的簡單證明,基本是機率論基礎
關於第2點,就不太樂觀了,可能會出現 Non-Convergence 的問題。如Lan Goodfellow 在 Quora 中的回答所說,“所有的理論都認為 GAN 應該在納什均衡上有卓越的表現,但梯度下降只有在凸函式的情況下才能保證納什均衡。當博弈雙方都由神經網路表示時,在沒有實際達到均衡的情況下,讓它們永遠保持對自己策略的調整是可能的。”
目標函式的進一步理解
限於篇幅,這部分的推導均會省略,有興趣的同學可以查閱原文或相關文獻。
前文介紹了 GAN 的訓練是迭代訓練 Discriminator 和 Generator,且最佳化的目標是 Binary Cross Entropy Loss。接下來我們來考慮某一輪的訓練,當前時刻的 Discriminator 和 Generator 分別是 D 和 G,我們需要先訓練出新的
,滿足
對於給定樣本
,對它而言最好的
會是
其結果為
將其帶入
,可以化簡得到
其中,
表示 JS Divergence,其範圍為
。
公式如下,其中
表示 KL Divergence
即,接下來我們要求解的
是滿足
毫無疑問,其結果就是
這裡,被用於衡量
與
的距離的指標最好能隨著兩者的相似性增加逐漸減小為0。可是 JS Divergence 並不太適用於這個場景,原因在於
。也就是,絕大多數情況下而言
,而在
時,
會突變為0。因此,正常情況下根本不會產生 Gradient 來最佳化 Generator 。在“Arjovsky M, Bottou L。 Towards Principled Methods for Training Generative Adversarial Networks。 2017。”中作者給出了詳細證明。這裡我們只給出圖例說明,如下圖兩條曲線:它們雖然有重合,但是相比於兩條曲線佔有的空間(想象是兩條很長的曲線)幾乎是忽略不計的。
GAN 與 VAE 的區別
最後,作為兩大主流生成模型,我們來談談 GAN 與 VAE 的區別
VAE 在理論上需要利用 Variational Inference 進行近似,進而引入偏差;而 GAN 不需要這種近似,即理想情況下 GAN 能更好地擬合數據真實分佈。事實上,VAE 確實在生成影象時更加模糊,而 GAN 相對銳利
VAE 作為 AE 的一種,本質上是對資料的壓縮,同時可以用於生成新資料;而 GAN 則主要關注還原真實資料分佈,透過取樣生成新資料
WGAN
原始 GAN 其實存在各種問題,魯棒性極差,如:非常依賴 Discriminator 和 Generator 的結構設計、需要精心的調節超引數、沒有一種指標來量化訓練的進度、還可能出現 Mode Collapse,不一而足。自 GAN 提出後,大量的文章都嘗試解決 GAN 的某些問題,而 WGAN(Wasserstein GAN)則幾乎同時解決(緩解)了上述所有的不足,引發了大量的關注與討論。下面,我們簡單介紹下這個相對成熟版本的 GAN。
其實 WGAN 的提出經歷了三個階段:
在“Arjovsky M, Bottou L。 Towards Principled Methods for Training Generative Adversarial Networks。 2017。”,作者主要對 GAN 存在的問題進行了嚴謹的理論分析,非常精彩
在“Arjovsky M, Chintala S, Bottou L。 Wasserstein GAN。 2017。”,作者提出了 WGAN,最大的貢獻在於利用 Wasserstein Distance(Earth-Mover Distance)代替 GAN 中的 JS Divergence,極大緩解了 GAN 難以訓練的問題
在“Gulrajani I, Ahmed F, Arjovsky M, et al。 Improved Training of Wasserstein GANs。 2017。”,作者對 WGAN 的目標函式進行了最佳化,在改進了訓練過程的同時也能達到更好的效果
下面我們簡單介紹一下 WGAN 及 Improved WGAN。
上文提到,原始的 GAN 由於 JS Divergence 衡量分佈距離時突變的性質,訓練 Generator 會出現 Gradient Vanish 的問題;於是,WGAN 改用 Wasserstein Distance(Earth-Mover Distance)來衡量兩個分佈的距離。Wasserstein Distance 具體定義限於篇幅不展開了,其實跟後面關係也不大,有興趣的同學可以檢視原文獻。Wasserstein Distance 的一個重要性質就是變化是平滑的,也就是說能夠很好地描述兩個分佈逐漸變得相似的這個過程,根本上解決了 Gradient Vanish 的問題。
更讓人意想不到的是,作者在歷史文獻中找到了將 Wasserstein Distance 直接套用 GAN 框架中的理論依據,即可以推匯出分佈
與
的Wasserstein Distance可以寫作
其中,
表示上確界;
表示函式
的 Lipschitz 常數小於等於1,即對任意
需要
滿足
上式的含義為,對所有滿足
的
,計算
,並取其最大值。如果代入 GAN 的場景,即
可以看出,使用 Wasserstein Distance 時目標函式與原始 GAN 不同,但同樣可以用神經網路來學習 Discriminator 和 Generator。區別僅在於
這個約束。
原始 WGAN 利用 weight clipping 的方式來處理這個帶約束的問題,很快“Gulrajani I, Ahmed F, Arjovsky M, et al。 Improved Training of Wasserstein GANs。 2017。”的作者提出了更加優秀的解決方法,這裡我們只簡單介紹下後者。作者將上述約束轉化為目標函式中的 Penalty 項,這其實也是很多約束最佳化演算法的做法,具體最佳化目標轉變為
關於 Penalty 項有兩點需要說明:
對於
,這裡並不是對整個空間取樣,而只對
之間的空間取樣。這裡就不展開了,有需要了解細節的同學請參考原文
直接觀察 Penalty 項,其意義是期望
逼近1,而非嚴格小於等於1。關於這點,其原因在於在
的取樣區域中,
實際上通常為1;且用範數而非
能加快收斂速度並提升效果。原文同樣有更詳細說明
最終,WGAN 的訓練步驟為
WGAN 在效果上雖然沒有飛躍的進步,但其巨大的意義在於使 GAN 的實用性大大提升,體現主要體現為以下方面:
不再需要精心平衡 Discriminator 和 Generator 的能力了,且效果更穩健,不依賴於過於精心設計(trick)的結構
緩解了 Mode Collapse 現象,確保生成的資料的多樣性
最重要的是,有一個數值可以定量描述並跟蹤訓練的效果了
可以預見,在緩解了這些問題後,GAN 研究的價值和熱度都會得到顯著的提升,不得不說是比較振奮人心的。
尾巴
這一篇拖更了很久了,近期更新節奏也會比較慢,工作和生活上都需要投入更多的心思。不過,最近還是去參加了
Chris Manning
和
Sebastian Thrun
兩位大牛的報告,感覺還是有一定收穫的,以後有機會聊一聊。
下一篇大概會開啟 Reinforcement Learning 部分,具體安排還得再考慮下,畢竟這領域是個巨坑,作為專欄也只能抽取些有意思的部分談一談。
本系列其他文章:
專欄總目錄 - 知乎專欄
上一篇:《旅夜書懷》
下一篇:哪些菜可以自留種子?