日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

f-GAN

發布時間:2025/6/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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-divergenceFenchel 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

總結

以上是生活随笔為你收集整理的f-GAN的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。