f-GAN
學習總結于國立臺灣大學 :李宏毅老師
f-GAN: Training Generative Neural Samplers using Variational Divergence Minimization
本文Outline
一句話介紹f-GAN: you can use any f-divergence?
?
?一. ?回顧GAN的basic idea:
我們想要machine生成的target distribution: Pdata(x) ?,如下圖藍色區域的分布。圖中的藍色區域里面為Pdata(x)值為高的部分,即sample出的圖片看起來很好,藍色區域外sample出來的看起來很模糊。
? ? ? ? ? ? ? ? ? ??
那怎么做?要找到一個generator,即為NN, 這個網絡就定義了一個probability distribution。此時generator的輸入為一個分布:normal distribution, 輸出就是另外一個distribution。而這個輸出一般是很復雜的分布,可能是叫不上名字的分布(例如高斯混合分布等),畢竟是經過了NN。那我們的任務就是調整generator的參數使得生成的分布PG(x)盡可能接近真實的分布?Pdata(x) 。
?
上圖操作的難點在于難以計算出PG(x), 就說給定x,無法算出PG(x)是多少,如果可以算出PG(x)是多少,就可以maxmize likelihood。所以給你已有的data,無法算出data的likelihood是多少,唯一能做的是從原始data中sample。
?
Basic Idea of GAN:
?? ? ? ? ?
直觀解釋generator和discriminator在迭代過程中做了什么?
?藍色的點代表此時的generator畫出的圖,綠色的點為真實的數據分布,藍線和綠線分別表示generator和data的distribution。紅線為discriminator。那discriminator就是讓綠點進入discriminator的輸出為1, 藍色輸出為0,所以如果你訓練了一個discriminator它應該長這個樣子:
? ? ? ? ? ???
? ? ? 生成器又希望藍線可以移向綠線 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?但調參G可能又使得移動過多, D又有新的判斷
?? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ?G,D反復更新 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 完全重合時,D無法判別只能都是輸出一樣的值
?實際為高維問題,遠比二維復雜。
GAN的基本算法:
?
?
二. GAN的Unified Framework
什么是f-divergence、Fenchel Conjugate,然后 Connect to GAN
?
1.?f-divergence
f-divergence論文講到之前的discriminator和JS-divergence有關,但是可以設計你的discriminator讓它跟任何的f-divergence有關。
什么是f-divergence? ?f可以為很多不同的function,但必須滿足(f is convex, f(1) = 0):
假設P, Q為兩個分布,p(x)和q(x)為sample x的概率(the probability of sampling x)。
?
f-divergence為大于等于0的數,當P和Q完全一樣的分布時,Df(P||Q)取到最小值0.否則為正數。??證明如下:
f-divergence栗子:
- f = xlogx 為 KL-divergence: ??
- f = -logx 為Reverse KL-divergence: ?
- f = (x-1)2??為Chi Squzre: ?
?
2. Fenchel Conjugate
?每個凸函數f有一個conjugate function f*:
x不同的取值得到不同的直線,橫坐標對應不同的t值取所有與直線中取值最大的值,這個操作就得到了紅色的線,是個凸函數f*(t)。
?
Fenchel Conjugate?栗子: 取x為0.1、1、10....
?
上圖看起來像exp指數函數吧,事實上當f(x) = xlogx時,?f*(t)就是指數函數exp(t-1) ?!!! 這個過程怎么算的呢?
?很簡單,令g(x) = xt- xlogx, 就是給定t,找一個x使得g(x)最大。所以對g(x)微分: t - logx -1 = 0 得到:x = exp(t-1) ?帶回原式得到f得共軛f*:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
3. ?Connection with GAN
前提了解了 f 與它的共軛好朋友的互推關系:
現在將Df(P||Q)中的 f 帶入上式:
上式怎么得出的?假設有個函數叫D, 為一個function,它的輸入為x,輸出為t。 注意原式中的max{ }一項中為給定一個x找到一個t使得式子最大值,那么這個D為任意一個函數,所以它的輸出應是個下界lower bound,所以可以用D來代替t,從而得到了下界:
所以這里的f-divergence有個近似,即找一個D使得式子??最大:
把P、Q代替后有:
算期望值可以利用sample來近似,要找一個PG 和Pdata越相近越好就是解下面這個式子:找一個G來最小化divergence
所以這就推出了原生GAN的優化目標:?
原生GAN論文實現:double-loop algorithm:
?
f-GAN論文實現:Single -step:
??
注意G、D的update方向不一樣。f-GAN論文中列出了各式各樣的f-divergence:
?
?
?
轉載于:https://www.cnblogs.com/king-lps/p/8477389.html
總結
- 上一篇: CAS SSO 单点登录 实例
- 下一篇: 矩阵优化dp