f-GAN简介:GAN模型的生产车间
?PaperWeekly 原創 ·?作者|蘇劍林
單位|追一科技
研究方向|NLP、神經網絡
今天介紹一篇比較經典的工作,作者命名為 f-GAN,他在文章中給出了通過一般的 f 散度來構造一般的 GAN 的方案??梢院敛豢鋸埖卣f,這論文就是一個 GAN 模型的“生產車間”,它一般化的囊括了很多 GAN 變種,并且可以啟發我們快速地構建新的 GAN 變種(當然有沒有價值是另一回事,但理論上是這樣)。
論文鏈接:https://arxiv.org/abs/1606.00709
局部變分
整篇文章對 f 散度的處理事實上在機器學習中被稱為“局部變分方法”,它是一種非常經典且有用的估算技巧。事實上本文將會花大部分篇幅介紹這種估算技巧在 f 散度中的應用結果。至于 GAN,只不過是這個結果的基本應用而已。
f散度
首先我們還是對 f 散度進行基本的介紹。所謂 f 散度,是 KL 散度的一般化:
注意,按照通用的約定寫法,括號內是 p/q 而不是 q/p,大家不要自然而言地根據 KL 散度的形式以為是 q/p。
可以發現,這種形式能覆蓋我們見過的很多概率分布之間的度量了,這里直接把論文中的表格搬進來(部分)。
凸函數
上面列舉了一堆的分布度量以及對應的 f ,那么一個很自然的問題是這些 f 的共同特點是什么呢??
答案是:?
1. 它們都是非負實數到實數的映射();?
2. f(1)=0;?
3. 它們都是凸函數。?
第一點是常規的,第二點 ?f(1)=0 保證了?,那第三點凸函數是怎么理解呢?其實它是凸函數性質的一個最基本的應用,因為凸函數有一個非常重要的性質(詹森不等式):
也就是“函數的平均大于平均的函數”,有些教程會直接將這個性質作為凸函數的定義。而如果 f(u) 是光滑的函數,我們一般會通過二階導數 f′′(u) 是否恒大于等于 0 來判斷是否凸函數。
利用 (2),我們有:
也就是說,這三個條件保證了 f 散度是非負,而且當兩個分布一模一樣時 f 散度就為 0,這使得??可以用來簡單地度量分布之間的差異性。當然,f 散度原則上并沒有保證 P≠Q 時?。但通常我們會選擇嚴格凸的 f(即 f′′(u) 恒大于 0),那么這時候可以保證 P≠Q 時 ,也就是說這時候有?。
注:即便如此,一般情況下??仍然不是滿足公理化定義的“距離”,不過這個跟本文主題關系不大,這里只是順便一提。
凸共軛
現在從比較數學的角度討論一下凸函數,一般地,記凸函數的定義域為 D(對于本文來說,)。選擇任意一個點 ξ,我們求 y=f(u) 在 u=ξ 處的切線,結果是:
考慮兩者的差函數:
所謂凸函數,直觀理解,就是它的圖像總在它的(任意一條)切線上方,因此對于凸函數來說下式恒成立。
整理成:
因為不等式是恒成立的,并且等號是有可能取到的,因此可以導出:
換新的記號,記 t=f′(ξ),并從中反解出 ξ(對于凸函數,這總能做到,讀者可以自己嘗試證明),然后記:
那么就有:
這里的 g(t) 就稱為 f(u) 的共軛函數。留意花括號里邊的式子,給定 f 后,g 也確定了,并且整個式子關于 u 是線性的。所以總的來說,我們做了這樣的一件事情:
對一個凸函數給出了線性近似,并且通過最大化里邊的參數就可以達到原來的值。
注意給定 u,我們都要最大化一次 t 才能得到盡可能接近 f(u) 的結果,否則隨便代入一個 t,只能保證得到下界,而不能確保誤差大小。所以它稱為“局部變分方法”,因為要在每一個點(局部)處都要進行最大化(變分)。這樣一來,我們可以理解為 t 實際上是 u 的函數,即:
?上述討論過程實際上已經給出了計算凸共軛的方法,在這里我們直接給出上表對應的凸函數的共軛函數。
注:這里的 W 為朗伯 W 函數。
https://en.wikipedia.org/wiki/Lambert_W_function
f-GAN
由上述推導,我們就可以給出 f 散度的估算公式,并且進一步給出 f-GAN 的一般框架。?
f散度估計
計算 f 散度有什么困難呢?根據定義 (1) ,我們同時需要知道兩個概率分布 P , Q 才可以計算兩者的 f 散度,但事實上在機器學習中很難做到這一點,有時我們最多只知道其中一個概率分布的解析形式,另外一個分布只有采樣出來的樣本,甚至很多情況下我們兩個分布都不知道,只有對應的樣本(也就是說要比較兩批樣本之間的相似性),所以就不能直接根據 (1) 來計算 f 散度了。?
結合 (1) 和 (11) ,我們得到:
將??記為整體 T(x),那么就有:
式 (13) 就是估計 f 散度的基礎公式了。意思就是說:分別從兩個分布中采樣,然后分別計算 T(x) 和 g(T(x)) 的平均值,優化 T,讓它們的差盡可能地大,最終的結果就是f散度的近似值了。顯然 T(x) 可以用足夠復雜的神經網絡擬合,我們只需要優化神經網絡的參數。
注意在對凸函數的討論中,我們在最大化目標的時候,對 T 的值域是有限制的。因此,在 T 的最后一層,我們必須設計適當的激活函數,使得 T 滿足要求的值域。當然激活函數的選擇不是唯一的,參考的激活函數已經列舉在前表。注意,盡管理論上激活函數的選取是任意的,但是為了優化上的容易,應該遵循幾個原則:
1. 對應的定義域為 R,對應的值域為要求值域(邊界點可以忽略);
2. 最好選擇全局光滑的函數,不要簡單地截斷,例如要求值域為 R+ 的話,不要直接用 relu(x),可以考慮的是??或者?;
3. 注意式 (13) 的第二項包含了 g(T(x)),也就是 g 和 T 的復合計算,因此選擇激活函數時,最好使得它與 g 的復合運算比較簡單。
GAN批發
好了,說了那么久,幾乎都已經到文章結尾了,似乎還沒有正式說到 GAN。事實上,GAN 可以算是整篇文章的副產物而已。?
GAN 希望訓練一個生成器,將高斯分布映射到我們所需要的數據集分布,那就需要比較兩個分布之間的差異了,經過前面的過程,其實就很簡單了,隨便找一種 f 散度都可以了。然后用式 (13) 對 f 散度進行估計,估計完之后,我們就有 f 散度的模型了,這時候生成器不是希望縮小分布的差異嗎?最小化 f 散度就行了。所以寫成一個表達式就是:
或者反過來:
就這樣完了。
需要舉幾個例子?好吧,先用 JS 散度看看。把所有東西式子一步步代進去,你會發現最終結果是(略去了 log2 的常數項):
其中 D 用??激活。這就是最原始版本的 GAN 了。
用 Hellinger 距離試試?結果是:
這里的 D(x) 是線性激活。這個貌似還沒有命名?不過論文中已經對它做過實驗了。
那用 KL 散度呢?因為 KL 散度是不對稱的,所以有兩個結果,分別為:
或:
這里的 D(x) 也是線性激活。
好吧,不再舉例了。其實這些 f 散度本質上都差不多,看不到效果差別有多大。不過可以注意到,JS 散度和 Hellinger 距離都是對稱的、有界的,這是一個非常好的性質,以后我們會用到。
總結
說白了,本文主要目的還是介紹 f 散度及其局部變分估算而已。所以大部分還是理論文字,GAN 只占一小部分。
當然,經過一番折騰,確實可以達到“GAN 生產車間”的結果(取決于你有多少種f散度),這些新折騰出來的 GAN 可能并不像我們想象中的 GAN,但它們確實在優化 f 散度。不過,以往標準 GAN(對應 JS 散度)有的問題,其實 f 散度照樣會有,因此 f-GAN 這個工作更大的價值在于“統一”,從生成模型的角度,并沒有什么突破。
點擊以下標題查看更多往期內容:?
萬字綜述之生成對抗網絡(GAN)
從DCGAN到SELF-MOD:GAN的模型架構發展一覽
從動力學角度看優化算法:GAN的第三個階段
簡單修改,讓GAN的判別器變成一個編碼器
詳解GAN的譜歸一化(Spectral Normalization)
超詳綜述:GAN在圖像生成上的應用
#投 稿 通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
?????來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
???? 投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
▽ 點擊 |?閱讀原文?| 查看作者博客
總結
以上是生活随笔為你收集整理的f-GAN简介:GAN模型的生产车间的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最少预算覆盖最多应用,高性价比小企业服务
- 下一篇: 用了很多办法,仍然被跳蚤咬到不想活?