能量视角下的GAN模型(二):GAN=“分析”+“采样”
作者丨蘇劍林
單位丨廣州火焰信息科技有限公司
研究方向丨NLP,神經網絡
個人主頁丨kexue.fm
在這個系列中,我們嘗試從能量的視角理解 GAN。我們會發現這個視角如此美妙和直觀,甚至讓人拍案叫絕。?
上一篇文章里,我們給出了一個直白而用力的能量圖景,這個圖景可以讓我們輕松理解 GAN 的很多內容,換句話說,通俗的解釋已經能讓我們完成大部分的理解了,并且把最終的結論都已經寫了出來。
在這篇文章中,我們繼續從能量的視角理解 GAN,這一次,我們爭取把前面簡單直白的描述,用相對嚴密的數學語言推導一遍。?
跟第一篇文章一樣,對于筆者來說,這個推導過程依然直接受啟發于 Bengio 團隊的新作 Maximum Entropy Generators for Energy-Based Models。?
原作者的開源實現:
https://github.com/ritheshkumar95/energy_based_generative_models?
本文的大致內容如下:?
1. 推導了能量分布下的正負相對抗的更新公式;
?
2. 比較了理論分析與實驗采樣的區別,而將兩者結合便得到了 GAN 框架;?
3. 導出了生成器的補充 loss,理論上可以防止 mode collapse;?
4. 簡單提及了基于能量函數的 MCMC 采樣。
數學視角的能量
在這部分中,我們先來簡單引入能量模型,并且推導了能量模型理論上的更新公式,指出它具有正相、負相對抗的特點。
能量分布模型
首先,我們有一批數據 x1, x2, … , xn~p(x),我們希望用一個概率模型去擬合它,我們選取的模型為:
其中 Uθ 是帶參數 θ 的未定函數,我們稱為“能量函數”,而 Zθ 是歸一化因子(配分函數)。
這樣的分布可以稱為“能量分布”,在物理中也被稱為“玻爾茲曼分布”。
至于為什么選擇這樣的能量分布,解釋有很多,既可以說是從物理角度受到啟發,也可以說是從最大熵原理中受到啟發,甚至你也可以簡單地認為只是因為這種分布相對容易處理而已。但不可否認,這種分布很常見、很實用,我們用得非常多的 softmax 激活,其實也就是假設了這種分布。
現在的困難是如何求出參數 θ 來,而困難的來源則是配分函數 (2) 通常難以顯式地計算出來。當然,盡管實際計算存在困難,但不妨礙我們繼續把推導進行下去。
正負相的對抗
為了求出參數 θ ,我們先定義對數似然函數:
我們希望它越大越好,也就是希望下式越小越好:
為此,我們對 Lθ 使用梯度下降。我們有:
所以:
這意味著梯度下降的更新公式是:
注意到式 (6) 的特點,它是分別在真實分布下和擬合分布下的均值之差,這就是機器學習中著名的“正相”和“負相”的分解,式 (6) 體現了正負相之間的對抗,也有人將其對應為我們做夢的過程。
揚長避短 ? GAN?
在這部分中,我們表明“容易分析”與“容易采樣”是很難兼容的,容易理論分析的模型,在實驗上難以采樣計算,而容易采樣計算的模型,難以進行簡明的理論推導。而試圖將兩者的優點結合起來,就得到了 GAN 模型。?
理論分析與實驗采樣
事實上,式 (6) 和式 (7) 表明我們開始假設的能量分布模型的理論分析并不困難,但是落實到實驗中,我們發現必須要完成從 qθ 中采樣:。也就是說,給定一個具體的,我們要想辦法從中采樣出一批 x 出來。?
然而,就目前而言,我們對從中采樣并沒有任何經驗。對于我們來說,方便采樣的是如下的過程:
這里的 q(z) 代表著標準正態分布。也就是說,我們可以從標準正態分布中采樣出一個 z 出來,然后通過固定的模型 Gφ 變換為我們想要的 x。這意味著這種分布的理論表達式是:
問題是,如果用 qφ(x) 代替原來的 qθ(x),那么采樣是方便了,但是類似的理論推導就困難了,換句話說,我們根本推導不出類似 (7) 的結果來。?
GAN誕生記
那么,一個異想天開的念頭是:能不能把兩者結合起來,在各自擅長的地方發揮各自的優勢??
式 (7) 中的不是難以實現嗎,那我只把這部分用代替好了:
也就是:
現在采樣是方便了,但前提是 qφ(x) 跟 qθ(x) 足夠接近才行呀(因為 qθ(x) 才是標準的、正確的),所以,我們用 KL 散度來度量兩者的差異:
式 (11) 有效的前提是 qφ(x) 跟 qθ(x) 足夠接近,也就是上式足夠小,而對于固定的 qθ(x),Zθ 是一個常數,所以 φ 的優化目標是:
這里代表 qφ(x) 的熵。?Hφ(X) 希望熵越大越好,這意味著多樣性;希望圖片勢能越小越好,這意味著真實性。
另外一方面,注意到式 (11) 實際上是目標的梯度下降公式。
所以我們發現,整個過程實際上就是 (14) 和 (13) 的交替梯度下降。而正如第一篇所說的,θ 的這個目標可能帶來數值不穩定性,基于第一篇所說的理由,真樣本應該在極小值點附近,所以我們可以把梯度懲罰項補充進 (14),得到最終的流程是:
這便是基于梯度懲罰的 GAN 模型,我們在能量視角下的GAN模型(一)中已經把它“頭腦風暴”出來了,而現在我們從能量模型的數學分析中把它推導出來了。
所以說,GAN 實際上就是能量模型和采樣模型各自揚長避短的結果。
直擊H(X)!
現在,距離完整地實現整個模型,就差 Hφ(X) 了。我們已經說過:
代表 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):
現在我們找出了 Iφ(X,Z) 和 Hφ(X) 的關系,它們的差是:
事實上 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),我們可以先考慮常數方差的情況,計算發現是一個常數,然后 σ→0,不過發現結果是無窮大。無窮大原則上是不能計算的,但事實上方差也不需要等于 0,只要足夠小,肉眼難以分辨即可。
所以,總的來說我們可以確定互信息 Iφ(X,Z) 與熵 Hφ(X) 只相差一個無關緊要的常數,所以在式 (15 )中,可以將 Hφ(X) 替換為 Iφ(X,Z):
現在我們要最小化 ?Iφ(X,Z) ,也就是最大化互信息 Iφ(X,Z)。直觀上這也不難理解,因為這一項是用來防止 mode callopse 的,而如果一旦 mode callopse,那么幾乎任意的 z 都生成同一個 x,X,Z 的互信息一定不會大。?
但是將目標從 Hφ(X) 改為 Iφ(X,Z) ,看起來只是形式上的轉換,似乎依然還沒有解決問題。但很幸運的是,我們已經做過最大化互信息的研究了,方法在深度學習的互信息:無監督提取特征的“互信息本質”一節,也就是說,直接估算互信息已經有解決方案了,讀者直接看那篇文章即可,不再重復論述。?
互信息與信息下界
如果不需要精確估計互信息,那么可以使用 InfoGAN 中的思路,得到互信息的一個下界,然后去優化這個下界。?
從互信息定義出發:
記 qφ(z|x)=qφ(x|z)q(z)/qφ(x),這代表精確的后驗分布;然后對于任意近似的后驗分布 p(z|x),我們有:
也就是說,互信息大于等于?qφ(x|z)q(z)logp(z|x) 加上一個常數。如果最大化互信息,可以考慮最大化這個下界。由于 p(z|x) 是任意的,可以簡單假設,其中 E(x) 是一個帶參數的編碼器,代入計算并省去多余的常數,可以發現相當于在生成器加入一項 loss:
所以,基于 InfoGAN 的信息下界思路,式 (15) 變為:
到這里,我們已經從兩個角度完成了 Hφ(X) 的處理,從而完成了整個 GAN 和能量模型的推導。
MCMC提升效果
回顧開頭,我們是從能量分布出發推導出了 GAN 模型,而能量函數 U(x) 也就是 GAN 模型中的判別器。既然 U(x) 具有能量函數的含義,那么訓練完成后,我們可以利用能量函數的特性做更多有價值的事情,例如引入 MCMC 來提升效果。?
MCMC的簡介
其實對于 MCMC,我只是略懂它的含義,并不懂它的方法和精髓,所謂“簡介”,僅僅是對其概念做一些基本的介紹。MCMC 是“馬爾科夫鏈蒙特卡洛方法(Markov Chain Monte Carlo)”,在我的理解里,它大概是這么個東西:我們難以直接從某個給定的分布 q(x) 中采樣出樣本來,但是我們可以構造如下的隨機過程:
其中 α 是一個便于實現的隨機過程,比如從二元分布、正態分布采樣等。這樣一來,從某個 x0 出發,得到的序列 {x1,x2,…,xn,…} 是隨機的。
如果進一步能證明式 (24) 的靜態分布正好是 q(x),那么就意味著序列 {x1,x2,…,xn,…} 正是從 q(x )中采樣出來的一批樣本,這樣就實現了從 q(x) 中采樣了,只不過采樣的結果經過了一定的順序排列。
Langevin方程
式 (24) 的一個特例是 Langevin 方程:
它也稱為隨機微分方程,當 ε→0 時,它的靜態分布正好是能量分布:
也就是說,給定能量函數 U(x) 后,我們可以通過式 (25) 實現從能量分布中采樣,這就是能量分布的 MCMC 采樣的原始思想。
當然,直接從能量函數和式 (25) 中采樣 x 可能不大現實,因為 x 維度(常見的情景下,x 代表圖片)過大,可控性難以保證。另一方面,式 (25) 最后一項是高斯噪聲,所以只要 ε≠0,那么結果必然是有噪聲的,圖片真實性也難以保證。
一個有趣的轉化是:我們可以不直接考慮 x 的 MCMC 采樣,而考慮 z 的采樣。因為在前面的模型中,我們最后既得到了能量函數 Uθ(x),也得到了生成模型 Gφ(z),這意味著 z 的能量函數為:
有了 z 的能量函數,我們可以通過式 (25) 實現 z 的 MCMC 采樣:
這樣剛才說的問題全部都沒有了,因為 z 的維度一般比 x 小得多,而且也不用擔心 ε≠0 帶來噪聲,因為 z 本來就是噪聲。
更好的截斷技巧
到這里,如果頭腦還沒有混亂的讀者也許會回過神來: z 的分布不就是標準的正態分布嗎?采樣起來不是很容易嗎?為啥還要折騰一套 MCMC 采樣??
理想情況下,z 的能量函數 Uθ(Gφ(z)) 所對應的能量分布:
確實應該就是我們原始傳遞給它的標準正態分布 q(z)。但事實上,理想和現實總有些差距的,當我們用標準正態分布去訓練好一個生成模型后,最后能產生真實的樣本的噪聲往往會更窄一些,這就需要一些截斷技巧,或者說篩選技巧。
比如,基于flow的生成模型在訓練完成后,往往使用“退火”技巧,也就是在生成時將噪聲的方差設置小一些,這樣能生成一些更穩妥的樣本,可以參考細水長flow之NICE:流模型的基本概念與實現。而去年發布的 BigGAN,也討論了 GAN 中對噪聲的截斷技巧。
如果我們相信我們的模型,相信能量函數 Uθ(x) 和生成模型 Gφ(z) 都是有價值的,那么我們有理由相信會是一個比標準正態分布更好的 z 的分布(能生成更真實的 x 的 z 的分布,因為它將 Gφ(z) 也納入了分布的定義中),所以從采樣會優于從 q(z) 采樣,也就是說 MCMC 采樣 (28) 能夠提升采樣后的生成質量,原論文已經驗證了這一點。我們可以將它理解為一種更好的截斷技巧。
更高效的MALA?
采樣過程 (28) 其實依然會比較低效,原論文事實上用的是改進版本,稱為 MALA(Metropolis-adjusted Langevin algorithm),它在 (28) 的基礎上進一步引入了一個篩選過程:
這里:
也就是說以概率 γ 接受,以 1?γ 的概率保持不變。按照維基百科上的說法,這樣的改進能夠讓采樣過程更有機會采樣到高概率的樣本,這也就意味著能生成更多的真實樣本(筆者并不是很懂這一套理論,所以,只能照搬了)。
有力的能量視角
又是一篇公式長文,總算把能量分布下的 GAN 的數學推導捋清楚了,GAN 是調和“理論分析”與“實驗采樣”矛盾的產物。總的來說,筆者覺得整個推導過程還是頗具啟發性的,也能讓我們明白 GAN 的關鍵之處和問題所在。
能量視角是一個偏向數學物理的視角,一旦能將機器學習和數學物理聯系起來,還將可以很直接地從數學物理處獲得啟發,甚至使得對應的機器學習不再“黑箱”,這樣的視角往往讓人陶醉,給人一種有力的感覺。
點擊以下標題查看作者其他文章:?
變分自編碼器VAE:原來是這么一回事 | 附開源代碼
再談變分自編碼器VAE:從貝葉斯觀點出發
變分自編碼器VAE:這樣做為什么能成?
從變分編碼、信息瓶頸到正態分布:論遺忘的重要性
深度學習中的互信息:無監督提取特征
全新視角:用變分推斷統一理解生成模型
細水長flow之NICE:流模型的基本概念與實現
細水長flow之f-VAEs:Glow與VAEs的聯姻
深度學習中的Lipschitz約束:泛化與生成模型
#投 稿 通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢??答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
??來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
? 投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
?
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
▽ 點擊 |?閱讀原文?| 查看作者博客
總結
以上是生活随笔為你收集整理的能量视角下的GAN模型(二):GAN=“分析”+“采样”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 逃离数学焦虑、算法选择,思考做好机器学习
- 下一篇: 小米9拍照黑科技:基于NAS的图像超分辨