BEGAN解讀

BEGAN

立論基礎

BEGAN是Google在17年上半年出的一篇論文,此論文對GAN做了進一步的改進,提出了一種新的評價生成器生成質量的方式,使GAN即使使用很簡單的網絡,不加一些訓練trick比如BN,minibatch,使用SELU激活函數等等,也能實現很好的訓練效果,完全不用擔心模式崩潰(model collapse)和訓練不平衡的問題。
以往的GAN以及其變種都是希望生成器生成的數據分佈儘可能的接近真實數據的分佈,當生成數據分佈等同於真實數據分佈時,我們就確定生成器G經過訓練可以生成和真實數據分佈相同的樣本,即獲得了生成足以以假亂真數據的能力,所以從這一點出發,研究者們設計了各種損失函數去令G的生成數據分佈儘可能接近真實數據分佈。
直觀來講,如果兩個分佈越相近, 我們可以認爲他們越相似,當生成數據分佈非常接近於真實數據分佈的時候,這時候生成器就有足夠的生成能力。其中比較好的改進成果主要有DCGAN、WGAN、WGAN-GP等等。 BEGAN代替了這種估計概率分佈方法,它不直接去估計生成分佈Pg與真實分佈Px的差距,而是估計分佈的誤差的分佈之間的差距,作者認爲只要分佈之間的誤差分佈相近的話,也可以認爲這些分佈是相近的(接下來會詳細介紹)。

BEGAN中,作者做出了以下四個貢獻:
1. 提出了一種新的簡單強大GAN網絡結構,使用標準的訓練方式不加訓練trick也能很快且穩定的收斂(有一種將自己亂走火的王八蓋子換了一個準點打擊的狙的感覺)
2. 對於GAN中G,D的能力的平衡提出了一種均衡的概念(GAN的理論基礎就是goodfellow理論上證明了GAN均衡點的存在,但是一直沒有一個準確的衡量指標說明GAN的均衡程度)
3. 提供了一個超參數,這個超參數可以在圖像的多樣性和生成質量之間做均衡(熟悉GAN的小夥伴就知道這又多難得)
4. 提出了一種收斂程度的估計,這個機制只在WGAN中出現過。作者在論文中也提到,他們的靈感來自於WGAN

對於DCGAN, WGAN,WGAN-GP.都不做詳細介紹了,想了解後兩者的可以去看鄭華斌的知乎專欄,講的非常詳細。
接下來進入正題,作者希望去估計分佈的分佈誤差之間的相似度而不是分佈之間的相似度。如果分佈的誤差很接近,那麼分佈肯定相差不遠。首先從損失函數說起:

爲了估計分佈的誤差,作者使用了auto-encoder作爲D,D的輸入是圖像V,維度爲RNx,輸出的也是維度爲RNx的圖片,本文中n=1,自編碼器的模型如下

此處的L(v)是一個pixel-wise的損失,表示真實輸入圖像v和經過自編碼網絡D輸出的D(v)的相似程度,L越小,說明v, D(v)越相似。
同樣的,我們可以得到 L’(v)=|v-G(v)|n 這樣一個pixl-wise誤差。
此時重點來了,由於兩者都是pixel-wise的, 那麼L裏的數值一定滿足某種分佈,在有足夠大的像素的情況下,假設像素是滿足IID即獨立同分布條件,根據中心極限定理,像素的誤差近似滿足正太分佈,那就是說L(v)和L’(v)分別是µ1 = N(m1; C1)和 µ2 = N(m2; C2)的正太分佈,m爲均值,維度爲Rp,c爲方差維度爲Rp×p 。
那麼根據wassertein公式,兩個正太分佈µ1、µ2的距離爲:

trace是求跡操作,P=1時,簡化爲如下形式:

作者就開始研究,是否上式的第一項就足以優化W2,答案是肯定的,只要滿足以下條件:
條件(1)

滿足條件(1)情況下,問題就簡化爲:

成正比
對比WGAN就可以發現,這裏不需要lipschize限制,這時,我們就可以給GAN分配任務了,令D不斷的最大化m2,最小化m1,而G則不斷最小化m2,當m2 接近m1的時候我們就認爲GAN完成了訓練。
分析到這裏我們得出結論,我們可以去估計誤差的分佈而不是直接估計分佈去擬合GAN,但是損失函數究竟是怎麼樣的呢?看下文

損失函數

網絡結構如下:

論文中給出的損失函數如下形式,關於另一個參數Kt上述圖片沒有表述出來:

D,G的損失在圖片中已經給出了描述,從以上分析的結果來看,只要按步驟優化損失函數,就能完成GAN的訓練,但是還沒有那麼簡單,或許也注意到,爲什麼論文的名字叫做Boundary Equilibrium GAN,到這裏完全沒有涉及到Boundary Equilibrium的概念,我們繼續分析

Equilibrium

試分析以下,GAN完成訓練時的結果是什麼樣子的,理想情況下肯定是m1=m2的時候是最好的,即:

分佈的期望相等,那就是G產生的圖片和真實圖像分佈相同,這時出現了一個問題,m1=m2條件下,條件1不再是一個不可忽略項,反而趨近於無窮,作者爲了解決這個問題,特意加入了一個超參數,γ 取值 [0;1]之間定義:
有了這個限制,就不會出現m1=m2的情形了,這就相當於一個boundary 將均衡條件限制住了,這就是論文名字的由來。
另外一個重要的參數就是Mgloable了,形式如下:

這個參數表示訓練程度的多少,越小的話,訓練程度越好,從公式中可見一斑。

網絡結構

如此簡單的網絡,訓練出來的結果是這樣的:

(不同的r可以改變圖像的生成結果)

是這樣的:

完全足以以假亂真的好不好
作者是在360k的cele數據集上做的訓練,數據集數量比標準的cele數據集多了160k張,不過在標準的數據集上依然能得到很好的結果

結論

我也使用BEGAN的代碼在mnist數據集和其他數據集上做了測試,發現的確和論文中所介紹的一樣,網絡收斂很快,震盪很小,基本上一直在收斂,代碼寫的比較爛,整理好後會放在GitHub上。

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