0
本文作者: AI研習社 | 2017-02-17 09:46 |
雷鋒網(wǎng)按:本文作者齊國君,伊利諾伊大學電子與計算機工程專業(yè)。雷鋒網(wǎng)獲授權(quán)轉(zhuǎn)載,更多AI開發(fā)技術(shù)文章,關(guān)注AI研習社(微信號:okweiwu)。
最近很多關(guān)心深度學習最新進展,特別是生成對抗網(wǎng)絡(luò)的朋友可能注意到了一種新的GAN-- Wasserstein GAN。其實在WGAN推出的同時,一種新的LS-GAN (Loss Sensitive GAN,損失敏感GAN)也發(fā)表在預(yù)印本 [1701.06264] Loss-Sensitive Generative Adversarial Networks on Lipschitz Densities 上。
那這兩種GAN有沒有什么聯(lián)系呢?作為LS-GAN的作者,筆者就帶大家一覽WGAN和LS-GAN本質(zhì)和聯(lián)系。
GAN前傳和“無限的建模能力”
熟悉經(jīng)典GAN的讀者都知道,GAN是一種通過對輸入的隨機噪聲z (比如高斯分布或者均勻分布),運用一個深度網(wǎng)絡(luò)函數(shù)G(z),從而希望得到一個新樣本,該樣本的分布,我們希望能夠盡可能和真實數(shù)據(jù)的分布一致(比如圖像、視頻等)。
在證明GAN能夠做得擬合真實分布時,Goodfellow做了一個很大膽的假設(shè):用來評估樣本真實度的Discriminator網(wǎng)絡(luò)(下文稱D-網(wǎng)絡(luò))具有無限的建模能力,也就是說不管真實樣本和生成的樣本有多復(fù)雜,D-網(wǎng)絡(luò)都能把他們區(qū)分開。這個假設(shè)呢,也叫做非參數(shù)假設(shè)。
當然,對于深度網(wǎng)絡(luò)來說,咱只要不斷的加高加深,這還不是小菜一碟嗎?深度網(wǎng)絡(luò)擅長的就是干這個的么。
但是,正如WGAN的作者所指出的,一旦真實樣本和生成樣本之間重疊可以忽略不計(這非常可能發(fā)生,特別當這兩個分布是低維流型的時候),而又由于D-網(wǎng)絡(luò)具有非常強大的無限區(qū)分能力,可以完美地分割這兩個無重疊的分布,這時候,經(jīng)典GAN用來優(yōu)化其生成網(wǎng)絡(luò)(下文稱G-網(wǎng)絡(luò))的目標函數(shù)--JS散度-- 就會變成一個常數(shù)!
我們知道,深度學習算法,基本都是用梯度下降法來優(yōu)化網(wǎng)絡(luò)的。一旦優(yōu)化目標為常數(shù),其梯度就會消失,也就會使得無法對G-網(wǎng)絡(luò)進行持續(xù)的更新,從而這個訓(xùn)練過程就停止了。這個難題一直一來都困擾這GAN的訓(xùn)練,稱為梯度消失問題。
WGAN來襲
為解決這個問題,WGAN提出了取代JS散度的Earth-Mover(EM)來度量真實和生成樣本密度之間的距離。該距離的特點就是,即便用具有無限能力的D-網(wǎng)絡(luò)完美分割真實樣本和生成樣本,這個距離也不會退化成常數(shù),仍然可以提供梯度來優(yōu)化G-網(wǎng)絡(luò)。不過WGAN的作者給出的是定性的解釋,缺少定量分析,這個我們在后面解釋LS-GAN時會有更多的分析。
現(xiàn)在,我們把這個WGAN的優(yōu)化目標記下來,下文我們會把它跟本文的主角LS-GAN 做一番比較。
這里 f-函數(shù)和 g-函數(shù) 分別是WGAN的批評函數(shù)(critics)和對應(yīng)的G-網(wǎng)絡(luò)。批評函數(shù)是WGAN里的一個概念,對應(yīng)GAN里的Discriminator。該數(shù)值越高,代表對應(yīng)的樣本真實度越大。
好了,對WGAN就暫時說到這里。總結(jié)下,由于假設(shè)中的無限建模能力,使得D-網(wǎng)絡(luò)可以完美分開真實樣本和生成樣本,進而JS散度為常數(shù);而WGAN換JS散度為EM距離,解決了優(yōu)化目標的梯度為零的問題。
不過細心的讀者注意到了,WGAN在上面的優(yōu)化目標(12)里,有個對f-函數(shù)的限定:它被限定到所謂的Lipschitz連續(xù)的函數(shù)上的。那這個會不會影響到上面對模型無限建模能力的假設(shè)呢?
其實,這個對f-函數(shù)的Lipschitz連續(xù)假設(shè),就是溝通LS-GAN和WGAN的關(guān)鍵,因為LS-GAN就是為了限制GAN的無限建模能力而提出的。
熟悉機器學習原理的朋友會知道,一提到無限建模能力,第一反應(yīng)就應(yīng)該是條件反應(yīng)式的反感。為什么呢?無限建模能力往往是和過擬合,無泛化性聯(lián)系在一起的。
仔細研究Goodfellow對經(jīng)典GAN的證明后,大家就會發(fā)現(xiàn),之所以有這種無限建模能力假設(shè),一個根本原因就是GAN沒有對其建模的對象--真實樣本的分布--做任何限定。
換言之,GAN設(shè)定了一個及其有野心的目標:就是希望能夠?qū)Ω鞣N可能的真實分布都適用。結(jié)果呢,就是它的優(yōu)化目標JS散度,在真實和生成樣本可分時,變得不連續(xù),才使得WGAN有了上場的機會,用EM距離取而代之。
所以,某種意義上,無限建模能力正是一切麻煩的來源。LS-GAN就是希望去掉這個麻煩,取而代之以“按需分配”建模能力。
LS-GAN和“按需分配”的建模能力
好,讓我們換個思路,直接通過限定的GAN的建模能力,得到一種新的GAN模型。這個就是LS-GAN了。我們先看看LS-GAN的真容:
這個是用來學習損失函數(shù)的目標函數(shù)。我們將通過最小化這個目標來得到一個“損失函數(shù)" (,下文稱之為L-函數(shù))。L-函數(shù)在真實樣本上越小越好,在生成的樣本上越大越好。
另外,對應(yīng)的G-網(wǎng)絡(luò),通過最小化下面這個目標實現(xiàn):
這里注意到,在公式(6)中,對L-函數(shù)的學習目標 S中的第二項,它是以真實樣本x和生成樣本的一個度量為各自L-函數(shù)的目標間隔,把x和分開。
這有一個很大的好處:如果生成的樣本和真實樣本已經(jīng)很接近,我們就不必要求他們的L-函數(shù)非得有個固定間隔,因為,這個時候生成的樣本已經(jīng)非常好了,接近或者達到了真實樣本水平。
這樣呢,LS-GAN就可以集中力量提高那些距離真實樣本還很遠,真實度不那么高的樣本上了。這樣就可以更合理使用LS-GAN的建模能力。在后面我們一旦限定了建模能力后,也不用擔心模型的生成能力有損失了。這個我們稱為“按需分配”。
上圖就是對LS-GAN這種對建模能力”按需“分配的圖示。
有了上面的準備,我們先把LS-GAN要建模的樣本分布限定在Lipschitz 密度上,即如下的一個假設(shè):
那么什么是Lipschitz密度了?簡而言之,Lipschitz密度就是要求真實的密度分布不能變化的太快。密度的變化隨著樣本的變化不能無限地大,要有個度。不過這個度可以非常非常地大,只要不是無限大就好。
好了,這個條件還是很弱地,大部分分布都是滿足地。比如,你把一個圖像調(diào)得稍微亮一些,它看上去仍然應(yīng)該是真實的圖像,在真實圖像中的密度在Lipschitz假設(shè)下不應(yīng)該會有突然地、劇烈地變化。不是嗎?
然后,有了這個假設(shè),我就能證明LS-GAN,當把L-函數(shù)限定在Lipschitz連續(xù)的函數(shù)類上,它得到地生成樣本地分布和真實樣本是完全一致!
前面我們說了,經(jīng)典GAN事實上對它生成的樣本密度沒有做任何假設(shè),結(jié)果就是必須給D-網(wǎng)絡(luò)引入無限建模能力,正是這種能力,在完美分割真實和生成樣本,導(dǎo)致了梯度消失,結(jié)果是引出了WGAN。
現(xiàn)在,我們把LS-GAN限定在Lipschitz密度上,同時限制住L-函數(shù)的建模能力到Lipschitz連續(xù)的函數(shù)類上,從而證明了LS-GAN得到的生成樣本密度與真實密度的一致性。
那LS-GAN和WGAN又有什么關(guān)系呢?
細心的朋友可能早注意到了,WGAN在學習f-函數(shù)是,也限定了其f-函數(shù)必須是Lipschitz連續(xù)的。不過WGAN導(dǎo)出這個的原因呢,是因為EM距離不容易直接優(yōu)化,而用它的共軛函數(shù)作為目標代替之。
也就是說,這個對f-函數(shù)的Lipschitz連續(xù)性的約束,完全是“技術(shù)”上的考慮,沒有太多物理意義上的考量。
而且,WGAN的作者也沒有在他們的論文中證明:WGAN得到的生成樣本分布,是和真實數(shù)據(jù)的分布是一致的。不過,這點在我們更新的預(yù)印本中給出了明確的證明,如下:
換言之:我們證明了,WGAN在對f-函數(shù)做出Lipschitz連續(xù)的約束后,其實也是將生成樣本的密度假設(shè)為了Lipschiz 密度。這點上,和LS-GAN是一致的!兩者都是建立在Lipschitz密度基礎(chǔ)上的生成對抗網(wǎng)絡(luò)。
好了,讓我們把LS-GAN和WGAN對L-函數(shù)和f-函數(shù)的學習目標放在一起仔細再看一看:
LS-GAN:
WGAN:
形式上來看,LS-GAN和WGAN也有很大區(qū)別。WGAN是通過最大化f-函數(shù)在真實樣本和生成樣本上的期望之差實現(xiàn)學習的,這種意義上,它可以看做是一種使用“一階統(tǒng)計量"的方法。
LS-GAN則不同。觀察LS-GAN優(yōu)化目標的第二項,由于非線性的函數(shù)的存在,使得我們無法把L-函數(shù)分別與期望結(jié)合,像WGAN那樣得到一階統(tǒng)計量。因為如此,才使得LS-GAN與WGAN非常不同。
LS-GAN可以看成是使用成對的(Pairwise)“真實/生成樣本對”上的統(tǒng)計量來學習f-函數(shù)。這點迫使真實樣本和生成樣本必須相互配合,從而更高效的學習LS-GAN。
如上文所述,這種配合,使得LS-GAN能夠按需分配其建模能力:當一個生成樣本非常接近某個真實樣本時,LS-GAN就不會在過度地最大化他們之間L-函數(shù)地差值,從而LS-GAN可以更有效地集中優(yōu)化那些距離真實樣本還非常遠地生成樣本,提高LS-GAN模型優(yōu)化和使用地效率。
梯度消失問題
那LS-GAN是否也能解決經(jīng)典GAN中的梯度消失問題呢?即當它的L-函數(shù)被充分訓(xùn)練后,是否對應(yīng)的G-網(wǎng)絡(luò)訓(xùn)練目標仍然可以提供足夠的梯度信息呢?
我們回顧下,在WGAN里,其作者給出G-網(wǎng)絡(luò)的訓(xùn)練梯度,并證明了這種梯度在對應(yīng)的f-函數(shù)被充分優(yōu)化后,仍然存在。
不過,僅僅梯度存在這點并不能保證WGAN可以提供足夠的梯度信息訓(xùn)練 G-網(wǎng)絡(luò)。為了說明WGAN可以解決梯度消失問題,WGAN的作者宣稱:“G-網(wǎng)絡(luò)的訓(xùn)練目標函數(shù)”在對其網(wǎng)絡(luò)鏈接權(quán)重做限定后, 是接近或者最多線性的。這樣就可以避免訓(xùn)練目標函數(shù)飽和,從而保證其能夠提供充足的梯度訓(xùn)練G-網(wǎng)絡(luò)。
好了,問題的關(guān)鍵時為什么G-網(wǎng)絡(luò)的訓(xùn)練目標函數(shù)是接近或者最多線性的,這點WGAN里并沒有給出定量的分析,而只有大致的定性描述,這里我們引用如下:
現(xiàn)在,讓我們回到LS-GAN,看看如何給出一直定量的形式化的分析。在LS-GAN里,我們給出了最優(yōu)的L-函數(shù)的一種非參數(shù)化的解:
這個定理比較長,簡單的來說,就是所有的最優(yōu) L-GAN的解,都是在兩個分段線性的上界和下界L-函數(shù)之間。如下圖所示:
紅線是上界,綠線是下界。任何解出來最優(yōu)L-函數(shù),一定在這兩個分段線性的上下界之間,包括用一個深度網(wǎng)絡(luò)解出來L-函數(shù)。
也就是說,LS-GAN解出的結(jié)果,只要上下界不飽和,它的得到的L-函數(shù)就不會飽和。而這里看到這個L-函數(shù)的上下界是分段線性的。這種分段線性的函數(shù)幾乎處處存在非消失的梯度,這樣適當?shù)乜刂芁-函數(shù)地學習過程,在這兩個上下界之間地最優(yōu)L-函數(shù)也不會出現(xiàn)飽和現(xiàn)象。
好了,這樣我們就給出了WGAN分析梯度消失時候,缺失的哪個定量分析了。
最后,我們看看LS-GAN合成圖像的例子,以及和DCGAN的對比。
看看在CelebA上的結(jié)果:
如果我們把DCGAN和LS-GAN中Batch Normalization 層都去掉,我們可以看到DCGAN模型取崩潰,而LS-GAN仍然可以得到非常好的合成效果:
不僅如此,LS-GAN在去掉batch normalization后,如上圖(b)所示,也沒有看到任何mode collapse現(xiàn)象。
我們進一步通過實驗看看、在LS-GAN中L-函數(shù)網(wǎng)絡(luò)過訓(xùn)練后,模型還能不能提供足夠的梯度來訓(xùn)練G-網(wǎng)絡(luò)。
下圖是L-網(wǎng)絡(luò)每次都訓(xùn)練,而G-網(wǎng)絡(luò)每個1次、3次、5次才訓(xùn)練時,對應(yīng)的用來更新G-網(wǎng)絡(luò)的梯度大小(在log scale上):
我們可以看到:即便當L-網(wǎng)絡(luò)相對G-網(wǎng)絡(luò)多訓(xùn)練若干次后,更新G-網(wǎng)絡(luò)的梯度仍然充分大,而沒有出現(xiàn)梯度消失的問題。
不僅如此,隨著訓(xùn)練的進行,我們可以看到,G-網(wǎng)絡(luò)的梯度逐漸增大,一直到一個相對比較穩(wěn)定的水平。相對固定強度的梯度說明了,G-網(wǎng)絡(luò)的訓(xùn)練目標函數(shù),最終非??赡苁沁_到一個接近線性的函數(shù)(這是因為線性函數(shù)的梯度是固定的)。
這個也進一步說明了,LS-GAN定義的G-網(wǎng)絡(luò)的訓(xùn)練目標函數(shù)沒有發(fā)生飽和,其定義是合理的,也是足以避免梯度消失問題的。
對LS-GAN進行有監(jiān)督和半監(jiān)督的推廣
LS-GAN和GAN一樣,本身是一種無監(jiān)督的學習算法。LS-GAN的另一個突出優(yōu)點是,通過定義適當?shù)膿p失函數(shù),它可以非常容易的推廣到有監(jiān)督和半監(jiān)督的學習問題。
比如,我們可以定義一個有條件的損失函數(shù),這個條件可以是輸入樣本的類別。當類別和樣本一致的時候,這個損失函數(shù)會比類別不一致的時候小。
于是,我們可以得到如下的Conditional LS-GAN (CLS-GAN)
我們可以看看在MNIST, CIFAR-10和SVHN上,針對不同類別給出的合成圖像的效果:
半監(jiān)督的訓(xùn)練是需要使用完全標注的訓(xùn)練數(shù)據(jù)集。當已標注的數(shù)據(jù)樣本比較有限時,會使得訓(xùn)練相應(yīng)模型比較困難。
進一步,我們可以把CLS-GAN推廣到半監(jiān)督的情形,即把已標記數(shù)據(jù)和未標記數(shù)據(jù)聯(lián)合起來使用,利用未標記數(shù)據(jù)提供的相關(guān)分布信息來指導(dǎo)數(shù)據(jù)的分類。
為此,我們定義一個特別的半監(jiān)督的損失函數(shù):
對給定樣本x,我們不知道它的具體類別,所以我們在所有可能的類別上對損失函數(shù)取最小,作為對該樣本真實類別的一個最佳的猜測。這與上面的公式(7)是一致的。
這樣,我們可以相應(yīng)的推廣CLS-GAN,得到如下的訓(xùn)練目標 最優(yōu)化損失函數(shù)
該訓(xùn)練目標可以通過挖掘各個類別中可能的變化,幫助CLS-GAN模型合成某類中的更多的“新”的樣本,來豐富訓(xùn)練數(shù)據(jù)集。這樣,即便標注的數(shù)據(jù)集比較有限,通過那些合成出來已標記數(shù)據(jù),也可以有效的訓(xùn)練模型。
比如,在下面圖中,CLS-GAN模型通過對未標記MNIST數(shù)據(jù)進行分析,可以按類別合成出更多不同書寫風格的數(shù)字。
這些數(shù)字可以增加已標注的訓(xùn)練數(shù)據(jù)量,進一步提供模型準確度;而更準確的模型可以進一步提供CLS-GAN的合成圖像的準確性。通過這種彼此不斷的提高,半監(jiān)督的CLS-GAN在只有很少已標注訓(xùn)練數(shù)據(jù)下,仍然可以做到準確的分類。
我們可以看下在SVHN上,當只有1000張已標注訓(xùn)練數(shù)據(jù)時分類的準確度:
下面是在CIFAR-10上,4000張已標記數(shù)據(jù)下的分類準確度。
結(jié)論
那么究竟GAN,WGAN和LS-GAN誰更好呢?持平而論,筆者認為是各有千秋。究竟誰更好,還是要在不同問題上具體分析。
這三種方法只是提供了一個大體的框架,對于不同的具體研究對象(圖像、視頻、文本等)、數(shù)據(jù)類型(連續(xù)、離散)、結(jié)構(gòu)(序列、矩陣、張量),應(yīng)用這些框架,對具體問題可以做出很多不同的新模型。
當然,在具體實現(xiàn)時,也有非常多的要考慮的細節(jié),這些對不同方法的效果都會起到很大的影響。畢竟,細節(jié)是魔鬼!筆者在實現(xiàn)LS-GAN時也有很多的具體細致的問題要克服。一直到現(xiàn)在,我們還在不斷持續(xù)的完善相關(guān)代碼。
對LS-GAN有興趣的讀者,可以參看我們分享的代碼,并提出改進的建議。 對研究GAN感興趣的讀者,也歡迎聯(lián)系筆者:個人主頁,一起探討相關(guān)算法、理論。
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。