介紹
本主題在說明GAN除了用JS divergence以外,也可以用其他divergence作為最佳化的目標
雖然提供很好的基礎,但結論是不同的divergence效果差異不大
f-divergence
廣義的divergence,KL、JS都屬於這個集合內
其中p、q是兩個分佈,x是一筆sample的資料
此外f要符合兩個性質
- f(1) = 0
- f is convex (最小值==極值)
這兩個性質可以使f-divergence拿來衡量兩個分布的差異
常見divergence
f(x) = xlogx => KL
f(x) = -logx => reverse KL
f(x) = (x-1)^2 => chi square
Fenchel conjugate
每一個 convex function,都有一個conjugate function f* 並滿足
求解示例
因為每一條xt-f(x)都是直線,然後把他們的upper bound 就是 f*
同時f* 與 f 互為conjugate function
與GAN有甚麼關係?
首先利用f-divergence , f 的 convex特性
將f替換
然後我們將t,視為一個會告訴我們x評價的discriminator
並且由於D(x)可能不夠完美,因此只會回傳區域解
但可以利用它逼近原式
經過一陣替換,就變成我們熟知的GAN型式
divergence Zoo
替換divergence 潛力
Mode collapse問題
產生出的結果會越來越集中
比如人臉生成結果越來越像
Mode Dropping問題
產生出的結果會只有一個模式
比如人臉每次只能產生一個膚色的人
以前大家猜測是divergence問題
如上圖,兩種方法的生成分佈不同
(KL 比較平,並且取中點,造成模糊
reverse KL => Mode dropping )
但是後來實驗發現可能不完全是此原因
如何解決Mode dropping ?
ensemble (暴力解)
每個產生一種分佈,需要25個就train 25種分佈