back to index
GAN Lecture 5 (2018): General Framework

link |
我們要講一個東西叫做F-gap,那這一段是這個樣子啦,這一段數學比較多,如果你聽不懂的話不用太在意就算了,因為這個東西有點用不上這樣,為什麼?
link |
我們這邊要講的是什麼?我們這邊要講的是說,我們說我們定某種objective function,就是在量JS divergence,那我們能不能夠量其他的divergence呢?
link |
F-gap就是要告訴我們說,怎麼量其他的divergence,那我之所以會說這一招不太有用的原因就是,用不同的divergence,就F-gap它可以讓你的gap量不同的F-divergence,來量你的generated example跟real example之間的差距,但是用不同的F-divergence的結果是差不多的,
link |
所以這招好像沒什麼特別有用的地方,但是我們還是跟大家介紹一下,因為這個在數學上它感覺非常的屌這樣子,但是在實作上好像沒有什麼特別的不同。
link |
好,我們來講一下F-gap,F-gap是要告訴我們的是說,其實不只是用JS divergence,任何F-divergence你都可以放到GAN的架構裡面去,那我們就先來介紹一下什麼是F-divergence。
link |
F-divergence是說,我們現在假設有兩個distribution,P跟Q,我們兩個distribution,P跟Q,P of X代表S從P這個distribution sample出來的機率,Q of X代表S從Q這個distribution sample出來的機率。
link |
那P跟Q這兩個distribution的F-divergence它長什麼樣子呢?它的長相就是我們可以把它寫成像這邊這邊的式子,P是一個distribution,Q是一個distribution,然後你對S做積分,然後把Q of X乘上F of P of X除以Q of X。
link |
那這個F這個function它是,就是說假設這個東西要是一個F-divergence的話,那F這個function它必須是convex的,這是第一個條件。
link |
第二個條件是F of Y必須要等於D,有這兩個條件的話,這一個式子就是某一種F-divergence,你這個F放不同的function,它就是不同的divergence。
link |
然後我們看到說你F放某一個function就是KL-divergence,放另外一個function就變成inverse的KL-divergence。
link |
那首先我們想要跟大家說明的事情是,P跟Q啊,就為什麼這個式子它可以看作是在衡量P跟Q的差異呢?為什麼這個式子可以看作是P跟Q的divergence呢?
link |
首先第一個我們要跟大家說明的是,如果P跟Q這兩個distribution是一模一樣的,那這一個值會是0。
link |
因為這個東西,這個divergence等於是在衡量P跟Q兩個distribution之間的距離,所以如果這兩個distribution是一樣的,它們距離應該為0。
link |
所以我們現在先來看看,假設P跟Q是一樣的,它們距離是不是應該為0呢?
link |
假設P跟Q是一樣的,會發生什麼事呢?假設P跟Q是一樣的,那這一項的值是1。
link |
那我們說F-divergence的一個條件是,F這個式子在1要是0,所以這邊就變成0。
link |
這邊變成0意味著什麼?意味著這一整項都是0,所以當P跟Q是一樣的時候,它們距離會是0。
link |
接下來要跟大家說明的地方是,0是這一個式子可以達到的最小的距離。
link |
也就是說如果P跟Q有些不同,它們不是完全一模一樣,它們算出來的F-divergence就會大於0。
link |
那怎麼說呢?因為F它是一個convex的function,這是F-divergence第二個條件,F必須要是一個convex的function。
link |
如果是一個convex的function,這個式子可以寫成這樣。
link |
這部分跳得有點快,反正你自己回去check一下,反正就是這麼回事就對了。
link |
因為F不是convex的關係,所以這個式子會大於等於這個式子,這個式子會是它的一個lower bound。
link |
接下來你把Q消掉,然後P of X做積分,你就得到F of E,然後會得到0。
link |
所以今天P跟Q,它們如果一模一樣的時候,你的F-divergence算出來是0。
link |
如果P跟Q略有不同,它們一定會大於等於0,因為P跟Q的值一定會大於等於0。
link |
所以P跟Q略有不同的時候,它們的值就會大於等於0。
link |
所以我們可以說這個式子,它可以拿來量P跟Q之間的差異。
link |
好,那接下來呢,我想告訴大家說,假設你F帶不同的式子,你就得到不同的divergence。
link |
舉例來說,如果你的F是Xlow的X,那帶進去以後,把這個F用Xlow的X帶進去以後,你算出來就是KL-divergence。
link |
如果你X是-low的X,如果你把這個-low的X帶進去,你算出來的就是inverse的,reverse的KL-divergence。
link |
如果你現在F of X帶X-1平方,你算出來的就是chi-square的divergence,就這樣。
link |
就帶不同的東西,就得到各式各樣的F-divergence的measure就是了。
link |
好,那接下來要講一個你可能沒有聽過的東西,叫做fractal的conjugate。
link |
這邊要講的東西是說,每一個convex function的F,它都有另外一個conjugate function,叫做F-star。
link |
每一個F,它都有一個對應的夥伴,叫做F-star。
link |
這個F跟F-star它們之間的關係,寫成一個這樣看起來很可怕的式子,
link |
看著就有點頭痛這樣,等一下你就跟不上了這樣。
link |
可是這個到底是什麼東西?這個東西是這個樣子,這個東西是這個,
link |
我們有一個F,那它的conjugate function叫做F-star。
link |
這個F-star它長得是這個樣子,它是由F of X所導出來的。
link |
F-star如果我們帶T進去,要怎麼算出它的值呢?
link |
你就窮取所有的T,看哪一個T可以讓XT-F of X的值最大,
link |
這樣講可能有點抽象,所以我們就實際上舉個例子。
link |
F-star的T1是多少?你就把T1帶進去,然後窮取各種不同X的值,
link |
舉例來說,如果你X帶S1,你得到S1T1-F of S1。
link |
你X帶S2,你得到S2T1-F of S2。
link |
你X帶S3,你得到S3T1-F of S3。
link |
再看這些不同的X裡面誰最大,發現X1最大。
link |
那我們得到的F-star的T1就是這個值。
link |
同理,假設你想要知道T2,F-star的T2的值是多少,
link |
那你就把不同的X,你就把T2先帶進去,
link |
然後把不同的X也帶進去,你帶S1進去,得到這個值。
link |
最大的值就是F-star of T2,就這樣子。
link |
所以如果你要今天要知道F-star of T3是什麼樣子,
link |
你就每一點,從T0到T100,每一點通通這個方法去算,
link |
通通這個方法去算,你就可以把F-star of T1把它描繪出來。
link |
但這樣有點麻煩,所以另外一個方法是說,
link |
我們現在把XT-Fx把它畫出來,我們帶不同的S1,
link |
但是把XT-Fx畫出來,假設X是S1的話,長這樣。
link |
這個都是一直線,因為假設你的T是你唯一的變數,
link |
X是固定的,X-T-Fx,X是固定的,
link |
你帶不同的S進去,它就是不同的直線。
link |
帶S1進去是這樣,帶S2進去是這樣,帶S3進去是這樣,
link |
接下來我們要找最大的那個,給定一個T,
link |
我們要找最大的那個,最大的那個是什麼呢?
link |
假設給定T1,最大的那個就是在這個地方,
link |
假設給定T2,最大的那個就是在這個地方。
link |
就是把所有不同S1所造成的直線通通畫出來,
link |
然後再取它們的Upper Bound,再把它們的Upper Bound找出來,
link |
所以今天你會發現說XT-Fx它一定是Convex的。
link |
所以今天如果你畫很多條直線,畫很多條直線,
link |
隨便亂畫隨便亂畫,不管你怎麼隨便畫,
link |
最後你只要找的是它的Upper Bound,
link |
你得到的Function都會是Convex。
link |
所以今天Fx是Convex,XT-Fx其實也一定是Convex的。
link |
假設Fx是Xlogx,今天如果我們X帶0.1,
link |
把這些直線的Upper Bound通通串起來,
link |
我們會得到一個看起來像是這樣子的直線,
link |
把這些所有的線的Upper Bound通通找出來,
link |
它看起來像是Exponential,沒錯,
link |
這一條紅色的線它是Exponential t-1,
link |
所以F of X它的conjugate就是Exponential t-1。
link |
你跳一波以後就知道它是Exponential t-1,
link |
它的conjugate是Exponential t-1。
link |
接下來我們就要進入跟Game有關的內容了,
link |
我們就要進入跟Game有關的內容了。
link |
我們剛才知道說F of X有一個conjugate,
link |
F star of t,其實F star of t,
link |
它本身的conjugate也就是F of X,
link |
所以F of X跟F star of t,
link |
它們其實是互為conjugate的,
link |
所以F star of t跟F of X之間的關係,
link |
假設你有一個convex function叫做F of X,
link |
你就可以把這個convex function F of X,
link |
這不是把本來簡單的問題變得更複雜了嗎?
link |
好,所以假設我們有一個F divergence的function,
link |
F divergence的function你是對,
link |
X做積分,Q of X乘上F of t除以Q,
link |
那這個F是一個convex的function對不對?
link |
那我們說convex的function F of X,
link |
都可以換成右邊這個看起來比較複雜的樣子,
link |
F star of t是F的conjugate,
link |
它其實就是discriminator,
link |
所以我們把這個T用D of X取代掉,
link |
我們不要解這個max的problem,
link |
我們不要解這個max的problem,
link |
接下來我們要找一個discriminator,
link |
這個discriminator幫我們解這個max的problem,
link |
這個discriminator怎麼幫我們解max的problem呢,
link |
但是因為假設D的capacity是有限的,
link |
這一下就會變成是F divergence的一個lower bound,
link |
F divergence的一個lower bound。
link |
所以變成P of X乘上D of X,
link |
減掉Q of X乘上F star of D of X,
link |
它會比這個F divergence的值還要小,
link |
你就可以去逼近F divergence,
link |
它就可以去逼近F divergence,
link |
所以F divergence的這個式子,
link |
Q of X乘上F star of D of X,
link |
就等於是用P這個distribution,
link |
這邊是用F star of D of X這個值,
link |
然後用Q這個distribution,
link |
對F star of D of X取期望值,
link |
所以今天P theta跟PG之間的F divergence,
link |
你的F divergence是什麼,
link |
就會影響到這個F star你放的是什麼,
link |
所以今天假如你的F divergence是KL divergence,
link |
那你就看KL divergence的F star是什麼,
link |
KL divergence的F是X log X,
link |
它的F star是exponential T減1,
link |
所以這個F star就在exponential T減1,
link |
我們今天在train一個generator的時候,
link |
就是去minimize某一個divergence,
link |
reverse KL divergence等等,
link |
隨著你要用什麼divergence,
link |
你就是在量不同的divergence,
link |
就是我們說在train gain的時候,
link |
你要用discriminator去maximize,
link |
你的generator要去minimize,
link |
the objective function V of GD,
link |
你就是在量不同的divergence,
link |
它就是在量JX divergence,
link |
你就是在量KL divergence,
link |
那這邊這個就是從Payment上面,
link |
各種不同的divergence的objective function,
link |
這個是total variance,
link |
各種不同的你喜歡的divergence,
link |
可以optimize不同的divergence,
link |
你會遇到一個現象叫做more complex,
link |
more complex的意思是說,
link |
你的real data的distribution是比較大,
link |
但是你generate出來的example,
link |
它的distribution非常的小,
link |
你在自己做這個二次元人物生成的時候,
link |
如果你update iteration太多,
link |
也就是說你今天產生出來的distribution,
link |
而最後會發現同一張人臉不斷反覆的出現,
link |
那這個case叫做more complex,
link |
比more complex稍微輕微一點,
link |
你的distribution其實有很多個mode,
link |
假設你的real distribution是兩群,
link |
你可能train一個人臉的產生系統,
link |
但你發現你在update一次參數以後,
link |
在update一次generator參數以後,
link |
也許是因為我們divergence選的不好,
link |
如果今天你的data distribution,
link |
你的generator distribution,
link |
如果你選不同的divergence,
link |
可以minimize divergence的generator distribution,
link |
假設你現在去minimize KL divergence,
link |
你用maximum likelihood的方法,
link |
去minimize KL divergence,
link |
最後認為最好的distribution,
link |
假設你的generator distribution,
link |
你從它裡面去sample data,
link |
你sample在mixture之間,
link |
我們是在minimize KL divergence,
link |
我們是在maximum likelihood,
link |
也許就是因為我們產生的distribution,
link |
其實並不是真的在data density很高的地方sample,
link |
而是會sample在data density很低的地方,
link |
如果你覺得是KL divergence所造成的,
link |
比如說你換inverse的KL divergence,
link |
最好的distribution是完全跟某個mode一模一樣,
link |
就因為如果你看這個inverse KL divergence的事,
link |
所以如果你選擇inverse KL divergence,
link |
那你的generator就會選擇集中在某一個mode就好,
link |
而我們傳統的GAM的JS divergence,
link |
它比較接近inverse KL divergence,
link |
這也許解釋了為什麼你train一下GAM的時候,
link |
或者是mode dropping的情形,
link |
產生這種mode collapse或mode dropping的情形,
link |
如果你覺得是JS divergence的問題,
link |
你可以換KL divergence,
link |
但結果就是換不同的divergence,
link |
mode dropping的case,
link |
所以看起來不是mode dropping,
link |
或者是mode collapse的問題,
link |
並不完全是選擇不同的divergence所造成的,
link |
那我要怎麼解決mode collapse的問題呢?
link |
你很有可能會遇到mode collapse的問題,
link |
你就train25個generator,
link |
也許它都mode collapse,
link |
也許你的generator1只會產生這樣的圖,
link |
generator2只會產生這樣的圖,
link |
所以實際上塑膠在run你的code的時候,
link |
其實是跑了25個generator,
link |
每個generator會產生一張image,
link |
那些使用者並不知道你有很多的generator,
link |
這是一個我覺得最有效可以避免mode collapse的問題,
link |
你就train25個generator而已,