能量視角下的GAN模型(二):GAN=“分析”+“取樣”

PaperWeekly發表於2019-02-20

在這個系列中,我們嘗試從能量的視角理解 GAN。我們會發現這個視角如此美妙和直觀,甚至讓人拍案叫絕。 

上一篇文章裡,我們給出了一個直白而用力的能量圖景,這個圖景可以讓我們輕鬆理解 GAN 的很多內容,換句話說,通俗的解釋已經能讓我們完成大部分的理解了,並且把最終的結論都已經寫了出來。

在這篇文章中,我們繼續從能量的視角理解 GAN,這一次,我們爭取把前面簡單直白的描述,用相對嚴密的數學語言推導一遍。 

跟第一篇文章一樣,對於筆者來說,這個推導過程依然直接受啟發於 Bengio 團隊的新作Maximum Entropy Generators for Energy-Based Models。 

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

原作者的開源實現:https://github.com/ritheshkumar95/energy_based_generative_models

本文的大致內容如下: 

1. 推導了能量分佈下的正負相對抗的更新公式; 

2. 比較了理論分析與實驗取樣的區別,而將兩者結合便得到了 GAN 框架; 

3. 匯出了生成器的補充 loss,理論上可以防止 mode collapse; 

4. 簡單提及了基於能量函式的 MCMC 取樣。

數學視角的能量

在這部分中,我們先來簡單引入能量模型,並且推導了能量模型理論上的更新公式,指出它具有正相、負相對抗的特點。

能量分佈模型

首先,我們有一批資料 x1, x2, … , xn∼p(x),我們希望用一個機率模型去擬合它,我們選取的模型為:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

其中 Uθ 是帶引數 θ 的未定函式,我們稱為“能量函式”,而 Zθ 是歸一化因子(配分函式)。

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

這樣的分佈可以稱為“能量分佈”,在物理中也被稱為“玻爾茲曼分佈”

至於為什麼選擇這樣的能量分佈,解釋有很多,既可以說是從物理角度受到啟發,也可以說是從最大熵原理中受到啟發,甚至你也可以簡單地認為只是因為這種分佈相對容易處理而已。但不可否認,這種分佈很常見、很實用,我們用得非常多的 softmax 啟用,其實也就是假設了這種分佈。

現在的困難是如何求出引數 θ 來,而困難的來源則是配分函式 (2) 通常難以顯式地計算出來。當然,儘管實際計算存在困難,但不妨礙我們繼續把推導進行下去。

正負相的對抗

為了求出引數 θ ,我們先定義對數似然函式:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

我們希望它越大越好,也就是希望下式越小越好:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

為此,我們對 Lθ 使用梯度下降。我們有:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

所以:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

這意味著梯度下降的更新公式是:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

注意到式 (6) 的特點,它是能量視角下的GAN模型(二):GAN=“分析”+“取樣”分別在真實分佈下和擬合分佈下的均值之差,這就是機器學習中著名的“正相”“負相”的分解,式 (6) 體現了正負相之間的對抗,也有人將其對應為我們做夢的過程。

揚長避短 ⇒ GAN 

在這部分中,我們表明“容易分析”與“容易取樣”是很難相容的,容易理論分析的模型,在實驗上難以取樣計算,而容易取樣計算的模型,難以進行簡明的理論推導。而試圖將兩者的優點結合起來,就得到了 GAN 模型。 

理論分析與實驗取樣

事實上,式 (6) 和式 (7) 表明我們開始假設的能量分佈模型的理論分析並不困難,但是落實到實驗中,我們發現必須要完成從 qθ 中取樣:能量視角下的GAN模型(二):GAN=“分析”+“取樣”。也就是說,給定一個具體的能量視角下的GAN模型(二):GAN=“分析”+“取樣”,我們要想辦法從能量視角下的GAN模型(二):GAN=“分析”+“取樣”中取樣出一批 x 出來。 

然而,就目前而言,我們對從能量視角下的GAN模型(二):GAN=“分析”+“取樣”中取樣並沒有任何經驗。對於我們來說,方便取樣的是如下的過程:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

這裡的 q(z) 代表著標準正態分佈。也就是說,我們可以從標準正態分佈中取樣出一個 z 出來,然後透過固定的模型 Gφ 變換為我們想要的 x。這意味著這種分佈的理論表示式是:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

問題是,如果用 qφ(x) 代替原來的 qθ(x),那麼取樣是方便了,但是類似的理論推導就困難了,換句話說,我們根本推導不出類似 (7) 的結果來。 

GAN誕生記

那麼,一個異想天開的念頭是:能不能把兩者結合起來,在各自擅長的地方發揮各自的優勢? 

式 (7) 中的能量視角下的GAN模型(二):GAN=“分析”+“取樣”不是難以實現嗎,那我只把這部分用能量視角下的GAN模型(二):GAN=“分析”+“取樣”代替好了:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

也就是:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

現在取樣是方便了,但前提是 qφ(x) 跟 qθ(x) 足夠接近才行呀(因為 qθ(x) 才是標準的、正確的),所以,我們用 KL 散度來度量兩者的差異:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

式 (11) 有效的前提是 qφ(x) 跟 qθ(x) 足夠接近,也就是上式足夠小,而對於固定的 qθ(x),Zθ 是一個常數,所以 φ 的最佳化目標是:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

這裡能量視角下的GAN模型(二):GAN=“分析”+“取樣”代表 qφ(x) 的熵。−Hφ(X) 希望熵越大越好,這意味著多樣性能量視角下的GAN模型(二):GAN=“分析”+“取樣”希望圖片勢能越小越好,這意味著真實性

另外一方面,注意到式 (11) 實際上是目標的梯度下降公式。

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

所以我們發現,整個過程實際上就是 (14) 和 (13) 的交替梯度下降。而正如第一篇所說的,θ 的這個目標可能帶來數值不穩定性,基於第一篇所說的理由,真樣本應該在極小值點附近,所以我們可以把梯度懲罰項補充進 (14),得到最終的流程是:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

這便是基於梯度懲罰的 GAN 模型,我們在能量視角下的GAN模型(一)中已經把它“頭腦風暴”出來了,而現在我們從能量模型的數學分析中把它推匯出來了。

所以說,GAN 實際上就是能量模型和取樣模型各自揚長避短的結果。

直擊H(X)!

現在,距離完整地實現整個模型,就差 Hφ(X) 了。我們已經說過:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

代表 qφ(x) 的熵,而 qφ(x) 的理論表示式是 (9),積分難以計算,所以 Hφ(X) 也難以計算。

打破這一困境的思路是將熵轉化為互資訊,然後轉化為互資訊的估計,其估計方式有兩種:透過 f 散度的方式(理論上精確)估計,或者透過資訊下界的方式估計。

最大熵與互資訊

首先,我們可以利用 x=Gφ(z) 這一點: x=Gφ(z) 意味著條件機率 qφ(x|z)=δ(x−G(z)),即一個確定性的模型,也可以理解為均值為 G(z) 、方差為 0 的高斯分佈 N(x;Gφ(z),0)。

然後我們去考慮互資訊 I(X,Z):

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

現在我們找出了 Iφ(X,Z) 和 Hφ(X) 的關係,它們的差是:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

事實上 Hφ(X|Z) 稱為“條件熵”。

如果我們處理的是離散型分佈,那麼因為 x=Gφ(z) 是確定性的,所以 qφ(x|z)≡1,那麼 Hφ(X|Z) 為 0,即 Iφ(X,Z)=Hφ(X)。

如果是連續型分佈,前面說了可以理解為方差為 0 的高斯分佈 N(x;Gφ(z),0),我們可以先考慮常數方差的情況能量視角下的GAN模型(二):GAN=“分析”+“取樣”,計算發現能量視角下的GAN模型(二):GAN=“分析”+“取樣”是一個常數,然後 σ→0,不過發現結果是無窮大。無窮大原則上是不能計算的,但事實上方差也不需要等於 0,只要足夠小,肉眼難以分辨即可。

所以,總的來說我們可以確定互資訊 Iφ(X,Z) 與熵 Hφ(X) 只相差一個無關緊要的常數,所以在式 (15 )中,可以將 Hφ(X) 替換為 Iφ(X,Z):

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

現在我們要最小化 −Iφ(X,Z) ,也就是最大化互資訊 Iφ(X,Z)。直觀上這也不難理解,因為這一項是用來防止 mode callopse 的,而如果一旦 mode callopse,那麼幾乎任意的 z 都生成同一個 x,X,Z 的互資訊一定不會大。 

但是將目標從 Hφ(X) 改為 Iφ(X,Z) ,看起來只是形式上的轉換,似乎依然還沒有解決問題。但很幸運的是,我們已經做過最大化互資訊的研究了,方法在深度學習的互資訊:無監督提取特徵的“互資訊本質”一節,也就是說,直接估算互資訊已經有解決方案了,讀者直接看那篇文章即可,不再重複論述。 

互資訊與資訊下界

如果不需要精確估計互資訊,那麼可以使用 InfoGAN 中的思路,得到互資訊的一個下界,然後去最佳化這個下界。 

從互資訊定義出發:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

記 qφ(z|x)=qφ(x|z)q(z)/qφ(x),這代表精確的後驗分佈;然後對於任意近似的後驗分佈 p(z|x),我們有:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

也就是說,互資訊大於等於∬qφ(x|z)q(z)logp(z|x) 加上一個常數。如果最大化互資訊,可以考慮最大化這個下界。由於 p(z|x) 是任意的,可以簡單假設能量視角下的GAN模型(二):GAN=“分析”+“取樣”,其中 E(x) 是一個帶引數的編碼器,代入計算並省去多餘的常數,可以發現相當於在生成器加入一項 loss:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

所以,基於 InfoGAN 的資訊下界思路,式 (15) 變為:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

到這裡,我們已經從兩個角度完成了 Hφ(X) 的處理,從而完成了整個 GAN 和能量模型的推導。

MCMC提升效果

回顧開頭,我們是從能量分佈出發推匯出了 GAN 模型,而能量函式 U(x) 也就是 GAN 模型中的判別器。既然 U(x) 具有能量函式的含義,那麼訓練完成後,我們可以利用能量函式的特性做更多有價值的事情,例如引入 MCMC 來提升效果。 

MCMC的簡介

其實對於 MCMC,我只是略懂它的含義,並不懂它的方法和精髓,所謂“簡介”,僅僅是對其概念做一些基本的介紹。MCMC 是“馬爾科夫鏈蒙特卡洛方法(Markov Chain Monte Carlo)”,在我的理解裡,它大概是這麼個東西:我們難以直接從某個給定的分佈 q(x) 中取樣出樣本來,但是我們可以構造如下的隨機過程:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

其中 α 是一個便於實現的隨機過程,比如從二元分佈、正態分佈取樣等。這樣一來,從某個 x0 出發,得到的序列 {x1,x2,…,xn,…} 是隨機的。

如果進一步能證明式 (24) 的靜態分佈正好是 q(x),那麼就意味著序列 {x1,x2,…,xn,…} 正是從 q(x )中取樣出來的一批樣本,這樣就實現了從 q(x) 中取樣了,只不過取樣的結果經過了一定的順序排列。

Langevin方程

式 (24) 的一個特例是 Langevin 方程:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

它也稱為隨機微分方程,當 ε→0 時,它的靜態分佈正好是能量分佈:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

也就是說,給定能量函式 U(x) 後,我們可以透過式 (25) 實現從能量分佈中取樣,這就是能量分佈的 MCMC 取樣的原始思想。

當然,直接從能量函式和式 (25) 中取樣 x 可能不大現實,因為 x 維度(常見的情景下,x 代表圖片)過大,可控性難以保證。另一方面,式 (25) 最後一項是高斯噪聲,所以只要 ε≠0,那麼結果必然是有噪聲的,圖片真實性也難以保證。

一個有趣的轉化是:我們可以不直接考慮 x 的 MCMC 取樣,而考慮 z 的取樣。因為在前面的模型中,我們最後既得到了能量函式 Uθ(x),也得到了生成模型 Gφ(z),這意味著 z 的能量函式為:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

有了 z 的能量函式,我們可以透過式 (25) 實現 z 的 MCMC 取樣:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

這樣剛才說的問題全部都沒有了,因為 z 的維度一般比 x 小得多,而且也不用擔心 ε≠0 帶來噪聲,因為 z 本來就是噪聲。

更好的截斷技巧

到這裡,如果頭腦還沒有混亂的讀者也許會回過神來: z 的分佈不就是標準的正態分佈嗎?取樣起來不是很容易嗎?為啥還要折騰一套 MCMC 取樣? 

理想情況下,z 的能量函式 Uθ(Gφ(z)) 所對應的能量分佈:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

確實應該就是我們原始傳遞給它的標準正態分佈 q(z)。但事實上,理想和現實總有些差距的,當我們用標準正態分佈去訓練好一個生成模型後,最後能產生真實的樣本的噪聲往往會更窄一些,這就需要一些截斷技巧,或者說篩選技巧。

比如,基於flow的生成模型在訓練完成後,往往使用“退火”技巧,也就是在生成時將噪聲的方差設定小一些,這樣能生成一些更穩妥的樣本,可以參考細水長flow之NICE:流模型的基本概念與實現。而去年釋出的 BigGAN,也討論了 GAN 中對噪聲的截斷技巧。

如果我們相信我們的模型,相信能量函式 Uθ(x) 和生成模型 Gφ(z) 都是有價值的,那麼我們有理由相信能量視角下的GAN模型(二):GAN=“分析”+“取樣”會是一個比標準正態分佈更好的 z 的分佈(能生成更真實的 x 的 z 的分佈,因為它將 Gφ(z) 也納入了分佈的定義中),所以從能量視角下的GAN模型(二):GAN=“分析”+“取樣”取樣會優於從 q(z) 取樣,也就是說 MCMC 取樣 (28) 能夠提升取樣後的生成質量,原論文已經驗證了這一點。我們可以將它理解為一種更好的截斷技巧。

更高效的MALA

取樣過程 (28) 其實依然會比較低效,原論文事實上用的是改進版本,稱為 MALA(Metropolis-adjusted Langevin algorithm),它在 (28) 的基礎上進一步引入了一個篩選過程:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

這裡:

能量視角下的GAN模型(二):GAN=“分析”+“取樣”

也就是說以機率 γ 接受能量視角下的GAN模型(二):GAN=“分析”+“取樣”,以 1−γ 的機率保持不變。按照維基百科上的說法,這樣的改進能夠讓取樣過程更有機會取樣到高機率的樣本,這也就意味著能生成更多的真實樣本(筆者並不是很懂這一套理論,所以,只能照搬了)。

有力的能量視角

又是一篇公式長文,總算把能量分佈下的 GAN 的數學推導捋清楚了,GAN 是調和“理論分析”與“實驗取樣”矛盾的產物。總的來說,筆者覺得整個推導過程還是頗具啟發性的,也能讓我們明白 GAN 的關鍵之處和問題所在。

能量視角是一個偏向數學物理的視角,一旦能將機器學習和數學物理聯絡起來,還將可以很直接地從數學物理處獲得啟發,甚至使得對應的機器學習不再“黑箱”,這樣的視角往往讓人陶醉,給人一種有力的感覺。

相關文章