今天講述的內(nèi)容是GAN中的模式崩潰問題,之前的文章有提到這個(gè)問題,在接下來的兩三期內(nèi),將和大家一起討論有關(guān)模式崩潰的解決方法。 本期將會(huì)首先介紹什么是模式崩潰,然后給出兩種通過修改GAN目標(biāo)函數(shù)的解決方法,而下一期將從網(wǎng)絡(luò)結(jié)構(gòu)和mini-batch判別器的角度出發(fā)討論模式崩潰的解決方法。 本期不會(huì)涉及什么數(shù)學(xué)知識,示意圖將會(huì)最大限度的說明本質(zhì)問題,如有問題歡迎底部留言。 作者 | 小米粥 編輯 | 言有三 1. 模式崩潰(mode collapse) GAN,屬于無監(jiān)督生成模型中的一類。既然是生成模型,我們最起碼應(yīng)該關(guān)注兩點(diǎn):生成器生成樣本的質(zhì)量和樣本多樣性。 根據(jù)數(shù)據(jù)的流形分布定律,自然界中同一類別的高維數(shù)據(jù),往往集中在某個(gè)低維流形附近,所以生成器最理想的情況是:將輸入的噪聲都映射到訓(xùn)練數(shù)據(jù)所在的流形上,并且與訓(xùn)練數(shù)據(jù)的概率分布對應(yīng)。舉一個(gè)簡單的例子,對于某一個(gè)訓(xùn)練數(shù)據(jù)集,其中樣本的概率分布為一個(gè)簡單的一維高斯混合分布,包含兩個(gè)峰: 理想狀態(tài)下,生成器應(yīng)該生成的樣本應(yīng)該如下所示(綠色標(biāo)記),生成樣本的位置幾乎都在兩個(gè)峰下,且分布符合訓(xùn)練集的概率分布: 但是,上述情況在實(shí)際中是不可能出現(xiàn)的,我們實(shí)際中大多時(shí)候生成的樣本質(zhì)量是比較差的,例如: 上圖里生成器生成了一些質(zhì)量比較差的樣本(標(biāo)記為紅色),訓(xùn)練集中本不包含紅色樣本,生成器應(yīng)該著力生成綠色樣本而不應(yīng)該產(chǎn)生紅色樣本,這屬于生成質(zhì)量問題(比如使用貓的圖像訓(xùn)練GAN,最終GAN生成了一些狗?四不像?之類的照片)。而模式崩潰問題是針對于生成樣本的多樣性,即生成的樣本大量重復(fù)類似,例如下圖中, 生成的樣本全部聚集在左邊的峰下,這時(shí)雖然生成樣本的質(zhì)量比較高,但是生成器完全沒有捕捉到右邊的峰的模式。(如果使用多種貓的圖像訓(xùn)練GAN,最終GAN只能產(chǎn)生逼真的英短,而無法產(chǎn)生其他品種)。 關(guān)于GAN模式崩潰問題的緩解方式有很多,我們接下來關(guān)注兩種修改目標(biāo)函數(shù)的解決方案。 2. unrolled GAN 首先需要說明:其實(shí),生成器在某一時(shí)刻單純地將樣本都聚集到某幾個(gè)高概率的峰下并不是我們討厭模式崩潰的根本原因,如果生成器能“及時(shí)發(fā)現(xiàn)問題”,自動(dòng)調(diào)整權(quán)值,將生成樣本分散到整個(gè)訓(xùn)練數(shù)據(jù)的流形上,則能自動(dòng)跳出當(dāng)前的模式崩潰狀態(tài),并且理論上生成器確實(shí)“具備”該項(xiàng)能力(因?yàn)镚oodFellow證明了GAN會(huì)實(shí)現(xiàn)最優(yōu)解)。 但是實(shí)際情況是:對于生成器的不斷訓(xùn)練并未使其學(xué)會(huì)提高生成樣本的多樣性,生成器只是在不斷將樣本從一個(gè)峰轉(zhuǎn)移聚集到另一個(gè)峰下。這樣的過程“沒完沒了”,無法跳出模式崩潰的循環(huán)。無論你在何時(shí)終止訓(xùn)練,都面臨著模式崩潰,只是在不同時(shí)刻,生成樣本所聚集的峰不同罷了。 不過,這種情況的發(fā)生有一定的必然性,我們先使用原始形式GAN對這個(gè)過程進(jìn)行示意描述,其目標(biāo)函數(shù)為: 真實(shí)數(shù)據(jù)集的概率分布還是如第一部分所示,生成器生成樣本的概率分布如下: 我們先更新判別器: 假設(shè)判別器達(dá)到了最優(yōu)狀態(tài),則其表達(dá)式應(yīng)為: 對應(yīng)的,D(x)的圖像為: 可以看出,這時(shí)判別器會(huì)立刻“懷疑”x=-3附近樣本點(diǎn)的真實(shí)性,接下來更新生成器: 此時(shí)的生成器將會(huì)非常“無可奈何”,為了使得目標(biāo)函數(shù)f最小,最好的方法便是將樣本聚集到x=3附近,即: 再更新判別器,同上述過程,判別器會(huì)立刻“懷疑”x=3附近樣本點(diǎn)的真實(shí)性......這樣的糟糕結(jié)果會(huì)不斷循環(huán)下去。 對此,unrolled GAN認(rèn)為:正是因?yàn)樯善魅狈Α跋纫娭鳌?,?dǎo)致了無法跳出模式崩潰的困境,生成器每次更新參數(shù)時(shí),只考慮在當(dāng)前生成器和判別器的狀態(tài)下可以獲得的最優(yōu)解,生成器并不知道當(dāng)前選擇的最優(yōu)解從長遠(yuǎn)來看并不是最優(yōu)解。 我們通過一定的改進(jìn),來賦予生成器“先見之明”。具體說來,判別器的目標(biāo)函數(shù)仍然為: 參數(shù)更新方式為采用梯度下降方式連續(xù)更新K次,如下: 而生成器的優(yōu)化目標(biāo)修改為: 即生成器在更新時(shí),不僅僅考慮當(dāng)前生成器的狀態(tài),還會(huì)額外考慮以當(dāng)前狀態(tài)為起始點(diǎn),判別器更新K次后的狀態(tài),綜合兩個(gè)信息做出最優(yōu)解。其梯度的變化為: 其中,第一項(xiàng)就是非常熟悉的標(biāo)準(zhǔn)GAN形式的計(jì)算得到的梯度,而第二項(xiàng)便是考慮K次更新后判別器的狀態(tài)而產(chǎn)生的附加項(xiàng)。 我們現(xiàn)在再看剛才的問題,unrolled GAN會(huì)跳出模式崩潰的循環(huán)。同樣的初始狀態(tài), 生成器在進(jìn)行下一步更新時(shí),面對以下兩種可能性(左邊是之前提到過的模式崩潰狀態(tài),右邊是比較理想的樣本生成狀態(tài)): 經(jīng)計(jì)算,選擇右邊會(huì)比選擇左邊產(chǎn)生更小的目標(biāo)函數(shù)值,故實(shí)際中,生成器進(jìn)行梯度更新將會(huì)趨向于右邊的狀態(tài)從而跳出模式崩潰??梢钥闯?,生成器跳出模式崩潰的核心原因就是更新參數(shù)時(shí)不僅考慮當(dāng)下狀態(tài),而且額外考慮了K步判別器的反應(yīng),從而避免了短視行為,當(dāng)然需要說明,這樣做是明顯增加了計(jì)算量的。 3. DRAGAN GAN的參數(shù)優(yōu)化問題并不是一個(gè)凸優(yōu)化問題,存在許多局部納什均衡狀態(tài)。即使GAN進(jìn)入某個(gè)納什均衡狀態(tài),損失函數(shù)表現(xiàn)為收斂,其仍舊可產(chǎn)生模式崩潰,我們認(rèn)為此時(shí)參數(shù)進(jìn)入一個(gè)壞的局部均衡點(diǎn)。 通過實(shí)踐,發(fā)現(xiàn)當(dāng)GAN出現(xiàn)模式崩潰問題時(shí),通常伴隨著這樣的表現(xiàn):當(dāng)判別器在訓(xùn)練樣本附近更新參數(shù)時(shí),其梯度值非常大,故DRAGAN的解決方法是:對判別器,在訓(xùn)練樣本附近施加梯度懲罰項(xiàng): 這種方式試圖在訓(xùn)練樣本附近構(gòu)建線性函數(shù),因?yàn)榫€性函數(shù)為凸函數(shù)具有全局最優(yōu)解。需要額外說明,DRAGAN的形式與WGAN-GP頗為相似,只是WGAN-GP是在全樣本空間施加梯度懲罰,而DRAGAN只在訓(xùn)練樣本附近施加梯度懲罰。 [1] Kodali N , Abernethy J , Hays J , et al. On Convergence and Stability of GANs[J]. 2017. [2] Metz L , Poole B , Pfau D , et al. Unrolled Generative Adversarial Networks[J]. 2016. 這篇文章首先講了GAN的模式崩潰問題,并用一個(gè)簡單的例子做了過程示意,接著重點(diǎn)描述了unrolled GAN的思想,并同樣進(jìn)行了過程示意描述,最后又比較簡單地描述了另一種方案:DRAGAN。下一期,我們將從GAN結(jié)構(gòu)方面去考慮模式崩潰問題。 下期預(yù)告:解決模式崩潰的GAN結(jié)構(gòu)
|
|