日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LS-GAN:把GAN建立在Lipschitz密度上

發布時間:2024/7/5 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LS-GAN:把GAN建立在Lipschitz密度上 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近很多關心深度學習最新進展,特別是生成對抗網絡的朋友可能注意到了一種新的GAN-- Wasserstein GAN。其實在WGAN推出的同時,一種新的LS-GAN (Loss Sensitive GAN,損失敏感GAN)也發表在預印本?[1701.06264] Loss-Sensitive Generative Adversarial Networks on Lipschitz Densities?上。


那這兩種GAN有沒有什么聯系呢?作為LS-GAN的作者,筆者就帶大家一覽WGAN和LS-GAN本質和聯系。

GAN前傳和“無限的建模能力”

熟悉經典GAN的讀者都知道,GAN是一種通過對輸入的隨機噪聲z?(比如高斯分布或者均勻分布),運用一個深度網絡函數G(z),從而希望得到一個新樣本,該樣本的分布,我們希望能夠盡可能和真實數據的分布一致(比如圖像、視頻等)。

在證明GAN能夠做得擬合真實分布時,Goodfellow做了一個很大膽的假設:用來評估樣本真實度的Discriminator網絡(下文稱D-網絡)具有無限的建模能力,也就是說不管真實樣本和生成的樣本有多復雜,D-網絡都能把他們區分開。這個假設呢,也叫做非參數假設。


當然,對于深度網絡來說,咱只要不斷的加高加深,這還不是小菜一碟嗎?深度網絡擅長的就是干這個的么。

但是,正如WGAN的作者所指出的,一旦真實樣本和生成樣本之間重疊可以忽略不計(這非常可能發生,特別當這兩個分布是低維流型的時候),而又由于D-網絡具有非常強大的無限區分能力,可以完美地分割這兩個無重疊的分布,這時候,經典GAN用來優化其生成網絡(下文稱G-網絡)的目標函數--JS散度-- 就會變成一個常數!

我們知道,深度學習算法,基本都是用梯度下降法來優化網絡的。一旦優化目標為常數,其梯度就會消失,也就會使得無法對G-網絡進行持續的更新,從而這個訓練過程就停止了。這個難題一直一來都困擾這GAN的訓練,稱為梯度消失問題。

WGAN來襲

為解決這個問題,WGAN提出了取代JS散度的Earth-Mover(EM)來度量真實和生成樣本密度之間的距離。該距離的特點就是,即便用具有無限能力的D-網絡完美分割真實樣本和生成樣本,這個距離也不會退化成常數,仍然可以提供梯度來優化G-網絡。不過WGAN的作者給出的是定性的解釋,缺少定量分析,這個我們在后面解釋LS-GAN時會有更多的分析。

現在,我們把這個WGAN的優化目標記下來,下文我們會把它跟本文的主角LS-GAN 做一番比較。

這里 f-函數和 g-函數 分別是WGAN的批評函數(critics)和對應的G-網絡。批評函數是WGAN里的一個概念,對應GAN里的Discriminator。該數值越高,代表對應的樣本真實度越大。

好了,對WGAN就暫時說到這里。總結下,由于假設中的無限建模能力,使得D-網絡可以完美分開真實樣本和生成樣本,進而JS散度為常數;而WGAN換JS散度為EM距離,解決了優化目標的梯度為零的問題。

不過細心的讀者注意到了,WGAN在上面的優化目標(12)里,有個對f-函數的限定:它被限定到所謂的Lipschitz連續的函數上的。那這個會不會影響到上面對模型無限建模能力的假設呢?

其實,這個對f-函數的Lipschitz連續假設,就是溝通LS-GAN和WGAN的關鍵,因為LS-GAN就是為了限制GAN的無限建模能力而提出的。

熟悉機器學習原理的朋友會知道,一提到無限建模能力,第一反應就應該是條件反應式的反感。為什么呢?無限建模能力往往是和過擬合,無泛化性聯系在一起的。

仔細研究Goodfellow對經典GAN的證明后,大家就會發現,之所以有這種無限建模能力假設,一個根本原因就是GAN沒有對其建模的對象--真實樣本的分布--做任何限定。

換言之,GAN設定了一個及其有野心的目標:就是希望能夠對各種可能的真實分布都適用。結果呢,就是它的優化目標JS散度,在真實和生成樣本可分時,變得不連續,才使得WGAN有了上場的機會,用EM距離取而代之。

所以,某種意義上,無限建模能力正是一切麻煩的來源。LS-GAN就是希望去掉這個麻煩,取而代之以“按需分配”建模能力。

LS-GAN和“按需分配”的建模能力?

好,讓我們換個思路,直接通過限定的GAN的建模能力,得到一種新的GAN模型。這個就是LS-GAN了。我們先看看LS-GAN的真容:

這個是用來學習損失函數的目標函數。我們將通過最小化這個目標來得到一個“損失函數" (,下文稱之為L-函數)。L-函數在真實樣本上越小越好,在生成的樣本上越大越好。

另外,對應的G-網絡,通過最小化下面這個目標實現:

這里注意到,在公式(6)中,對L-函數的學習目標 S中的第二項,它是以真實樣本x和生成樣本的一個度量為各自L-函數的目標間隔,把x和分開。

這有一個很大的好處:如果生成的樣本和真實樣本已經很接近,我們就不必要求他們的L-函數非得有個固定間隔,因為,這個時候生成的樣本已經非常好了,接近或者達到了真實樣本水平。

這樣呢,LS-GAN就可以集中力量提高那些距離真實樣本還很遠,真實度不那么高的樣本上了。這樣就可以更合理使用LS-GAN的建模能力。在后面我們一旦限定了建模能力后,也不用擔心模型的生成能力有損失了。這個我們稱為“按需分配”。


上圖就是對LS-GAN這種對建模能力”按需“分配的圖示。

有了上面的準備,我們先把LS-GAN要建模的樣本分布限定在Lipschitz 密度上,即如下的一個假設:

那么什么是Lipschitz密度了?簡而言之,Lipschitz密度就是要求真實的密度分布不能變化的太快。密度的變化隨著樣本的變化不能無限地大,要有個度。不過這個度可以非常非常地大,只要不是無限大就好。

好了,這個條件還是很弱地,大部分分布都是滿足地。比如,你把一個圖像調得稍微亮一些,它看上去仍然應該是真實的圖像,在真實圖像中的密度在Lipschitz假設下不應該會有突然地、劇烈地變化。不是嗎?


然后,有了這個假設,我就能證明LS-GAN,當把L-函數限定在Lipschitz連續的函數類上,它得到地生成樣本地分布和真實樣本是完全一致!


前面我們說了,經典GAN事實上對它生成的樣本密度沒有做任何假設,結果就是必須給D-網絡引入無限建模能力,正是這種能力,在完美分割真實和生成樣本,導致了梯度消失,結果是引出了WGAN。

現在,我們把LS-GAN限定在Lipschitz密度上,同時限制住L-函數的建模能力到Lipschitz連續的函數類上,從而證明了LS-GAN得到的生成樣本密度與真實密度的一致性。

那LS-GAN和WGAN又有什么關系呢?


細心的朋友可能早注意到了,WGAN在學習f-函數是,也限定了其f-函數必須是Lipschitz連續的。不過WGAN導出這個的原因呢,是因為EM距離不容易直接優化,而用它的共軛函數作為目標代替之。

也就是說,這個對f-函數的Lipschitz連續性的約束,完全是“技術”上的考慮,沒有太多物理意義上的考量。

而且,WGAN的作者也沒有在他們的論文中證明:WGAN得到的生成樣本分布,是和真實數據的分布是一致的。不過,這點在我們更新的預印本中給出了明確的證明,如下:

換言之:我們證明了,WGAN在對f-函數做出Lipschitz連續的約束后,其實也是將生成樣本的密度假設為了Lipschiz 密度。這點上,和LS-GAN是一致的!兩者都是建立在Lipschitz密度基礎上的生成對抗網絡。

好了,讓我們把LS-GAN和WGAN對L-函數和f-函數的學習目標放在一起仔細再看一看:

LS-GAN:

WGAN:

形式上來看,LS-GAN和WGAN也有很大區別。WGAN是通過最大化f-函數在真實樣本和生成樣本上的期望之差實現學習的,這種意義上,它可以看做是一種使用“一階統計量"的方法。

LS-GAN則不同。觀察LS-GAN優化目標的第二項,由于非線性的函數的存在,使得我們無法把L-函數分別與期望結合,像WGAN那樣得到一階統計量。因為如此,才使得LS-GAN與WGAN非常不同。

LS-GAN可以看成是使用成對的(Pairwise)“真實/生成樣本對”上的統計量來學習f-函數。這點迫使真實樣本和生成樣本必須相互配合,從而更高效的學習LS-GAN。

如上文所述,這種配合,使得LS-GAN能夠按需分配其建模能力:當一個生成樣本非常接近某個真實樣本時,LS-GAN就不會在過度地最大化他們之間L-函數地差值,從而LS-GAN可以更有效地集中優化那些距離真實樣本還非常遠地生成樣本,提高LS-GAN模型優化和使用地效率。

梯度消失問題

那LS-GAN是否也能解決經典GAN中的梯度消失問題呢?即當它的L-函數被充分訓練后,是否對應的G-網絡訓練目標仍然可以提供足夠的梯度信息呢?

我們回顧下,在WGAN里,其作者給出G-網絡的訓練梯度,并證明了這種梯度在對應的f-函數被充分優化后,仍然存在。

不過,僅僅梯度存在這點并不能保證WGAN可以提供足夠的梯度信息訓練 G-網絡。為了說明WGAN可以解決梯度消失問題,WGAN的作者宣稱:“G-網絡的訓練目標函數”在對其網絡鏈接權重做限定后, 是接近或者最多線性的。這樣就可以避免訓練目標函數飽和,從而保證其能夠提供充足的梯度訓練G-網絡。


好了,問題的關鍵時為什么G-網絡的訓練目標函數是接近或者最多線性的,這點WGAN里并沒有給出定量的分析,而只有大致的定性描述,這里我們引用如下:

現在,讓我們回到LS-GAN,看看如何給出一直定量的形式化的分析。在LS-GAN里,我們給出了最優的L-函數的一種非參數化的解:

這個定理比較長,簡單的來說,就是所有的最優 L-GAN的解,都是在兩個分段線性的上界和下界L-函數之間。如下圖所示:

紅線是上界,綠線是下界。任何解出來最優L-函數,一定在這兩個分段線性的上下界之間,包括用一個深度網絡解出來L-函數。

也就是說,LS-GAN解出的結果,只要上下界不飽和,它的得到的L-函數就不會飽和。而這里看到這個L-函數的上下界是分段線性的。這種分段線性的函數幾乎處處存在非消失的梯度,這樣適當地控制L-函數地學習過程,在這兩個上下界之間地最優L-函數也不會出現飽和現象。

好了,這樣我們就給出了WGAN分析梯度消失時候,缺失的哪個定量分析了。

最后,我們看看LS-GAN合成圖像的例子,以及和DCGAN的對比。

看看在CelebA上的結果:

如果我們把DCGAN和LS-GAN中Batch Normalization 層都去掉,我們可以看到DCGAN模型取崩潰,而LS-GAN仍然可以得到非常好的合成效果:

不僅如此,LS-GAN在去掉batch normalization后,如上圖(b)所示,也沒有看到任何mode collapse現象。

我們進一步通過實驗看看、在LS-GAN中L-函數網絡過訓練后,模型還能不能提供足夠的梯度來訓練G-網絡。

下圖是L-網絡每次都訓練,而G-網絡每個1次、3次、5次才訓練時,對應的用來更新G-網絡的梯度大小(在log scale上):

我們可以看到:即便當L-網絡相對G-網絡多訓練若干次后,更新G-網絡的梯度仍然充分大,而沒有出現梯度消失的問題。

不僅如此,隨著訓練的進行,我們可以看到,G-網絡的梯度逐漸增大,一直到一個相對比較穩定的水平。相對固定強度的梯度說明了,G-網絡的訓練目標函數,最終非常可能是達到一個接近線性的函數(這是因為線性函數的梯度是固定的)。

這個也進一步說明了,LS-GAN定義的G-網絡的訓練目標函數沒有發生飽和,其定義是合理的,也是足以避免梯度消失問題的。

對LS-GAN進行有監督和半監督的推廣

LS-GAN和GAN一樣,本身是一種無監督的學習算法。LS-GAN的另一個突出優點是,通過定義適當的損失函數,它可以非常容易的推廣到有監督和半監督的學習問題。

比如,我們可以定義一個有條件的損失函數,這個條件可以是輸入樣本的類別。當類別和樣本一致的時候,這個損失函數會比類別不一致的時候小。

于是,我們可以得到如下的Conditional LS-GAN (CLS-GAN)

這樣,一旦得到損失函數,在給定一個樣本x后,我們可以用最小化損失函數的那個類別來對樣本進行分類,即

我們可以看看在MNIST, CIFAR-10和SVHN上,針對不同類別給出的合成圖像的效果:

半監督的訓練是需要使用完全標注的訓練數據集。當已標注的數據樣本比較有限時,會使得訓練相應模型比較困難。

進一步,我們可以把CLS-GAN推廣到半監督的情形,即把已標記數據和未標記數據聯合起來使用,利用未標記數據提供的相關分布信息來指導數據的分類。

為此,我們定義一個特別的半監督的損失函數:

對給定樣本x,我們不知道它的具體類別,所以我們在所有可能的類別上對損失函數取最小,作為對該樣本真實類別的一個最佳的猜測。這與上面的公式(7)是一致的。

這樣,我們可以相應的推廣CLS-GAN,得到如下的訓練目標 最優化損失函數

該訓練目標可以通過挖掘各個類別中可能的變化,幫助CLS-GAN模型合成某類中的更多的“新”的樣本,來豐富訓練數據集。這樣,即便標注的數據集比較有限,通過那些合成出來已標記數據,也可以有效的訓練模型。

比如,在下面圖中,CLS-GAN模型通過對未標記MNIST數據進行分析,可以按類別合成出更多不同書寫風格的數字。

這些數字可以增加已標注的訓練數據量,進一步提供模型準確度;而更準確的模型可以進一步提供CLS-GAN的合成圖像的準確性。通過這種彼此不斷的提高,半監督的CLS-GAN在只有很少已標注訓練數據下,仍然可以做到準確的分類。

我們可以看下在SVHN上,當只有1000張已標注訓練數據時分類的準確度:

下面是在CIFAR-10上,4000張已標記數據下的分類準確度。

結論

那么究竟GAN,WGAN和LS-GAN誰更好呢?

持平而論,筆者認為是各有千秋。究竟誰更好,還是要在不同問題上具體分析。

這三種方法只是提供了一個大體的框架,對于不同的具體研究對象(圖像、視頻、文本等)、數據類型(連續、離散)、結構(序列、矩陣、張量),應用這些框架,對具體問題可以做出很多不同的新模型。

當然,在具體實現時,也有非常多的要考慮的細節,這些對不同方法的效果都會起到很大的影響。畢竟,細節是魔鬼!

筆者在實現LS-GAN也很多的具體細致的問題要克服。一直到現在,我們還在不斷持續的完善相關代碼。

對LS-GAN有興趣的讀者,可以參看我們分享的代碼,并提出改進的建議。?

對研究GAN感興趣的讀者,也歡迎聯系筆者: guojunq@gmail.com,一起探討相關算法、理論。

論文鏈接:https://arxiv.org/abs/1701.06264

轉:https://zhuanlan.zhihu.com/p/25204020?group_id=818602658100305920

總結

以上是生活随笔為你收集整理的LS-GAN:把GAN建立在Lipschitz密度上的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。