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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

GAN 简介

發(fā)布時間:2024/3/12 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GAN 简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

GAN

原理:


?GAN 的主要靈感來源于博弈論中零和博弈的思想,應(yīng)用到深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)上來說,就是通過生成網(wǎng)絡(luò) G(Generator)和判別網(wǎng)絡(luò) D(Discriminator)不斷博弈,進而使 G 學(xué)習(xí)到數(shù)據(jù)的分布,如果用到圖片生成上,則訓(xùn)練完成后,G 可以從一段隨機數(shù)中生成逼真的圖像。

  • G 是一個生成網(wǎng)絡(luò),其輸入為一個隨機噪音,在訓(xùn)練中捕獲真實數(shù)據(jù)的分布,從而生成盡可能真實的數(shù)據(jù)并讓 D 犯錯
  • D 是一個判別網(wǎng)絡(luò),判別生成的數(shù)據(jù)是不是“真實的”。它的輸入?yún)?shù)是 x,輸出 D(x) 代表 x 為真實數(shù)據(jù)的概率,如果為 1,就代表 100% 是真實的數(shù)據(jù),而輸出為 0,就代表不可能是真實的數(shù)據(jù)

為了從數(shù)據(jù) x 中學(xué)習(xí)到生成器的分布 pgp_gpg?,我們定義一個輸入噪音變量 pz(z)p_z(z)pz?(z),然后將其映射到數(shù)據(jù)空間得到 G(z;θg)G(z;\theta_g)G(z;θg?)D(x;θd)D(x; \theta_d)D(x;θd?) 輸出是一個數(shù),代表 xxx 來自真實數(shù)據(jù)而不是 pgp_gpg? 的概率。
min?Gmax?DV(D,G)=Ex~pdata(x)[log(D(x))]+Ez~pz(z)[log(1?D(G(z)))]①訓(xùn)練D來最大化辨別能力:max?DV(D,G)=Ex~pdata(x)[log(D(x))]+Ez~pz(z)[log(1?D(G(z)))]②訓(xùn)練G來最小化log(1?D(G(z))):min?GV(D,G)=Ez~pz(z)[log(1?D(G(z)))]③\begin{aligned} &\min_G \max_D V(D,G) = E_{x~p_{data}(x)}[log(D(x))]+E_{z~p_{z}(z)}[log(1?D(G(z)))] \qquad ①\\ &訓(xùn)練 D 來最大化辨別能力:\quad \max_D V(D,G)=E_{x~p_{data}(x)}[log(D(x))]+E_{z~p_z(z)}[log(1?D(G(z)))]\qquad② \\ &訓(xùn)練 G 來最小化log(1?D(G(z))):\quad \min_G V(D,G)=E_{z~p_z(z)}[log(1?D(G(z)))]\qquad③ \\ \end{aligned} ?Gmin?Dmax?V(D,G)=Expdata?(x)?[log(D(x))]+Ezpz?(z)?[log(1?D(G(z)))]訓(xùn)DDmax?V(D,G)=Expdata?(x)?[log(D(x))]+Ezpz?(z)?[log(1?D(G(z)))]訓(xùn)Glog(1?D(G(z)))Gmin?V(D,G)=Ezpz?(z)?[log(1?D(G(z)))]?
max?D\max_DmaxD? 表示令 D(x)D(x)D(x) 盡可能大以便找出真實數(shù)據(jù),而令 D(G(z))D(G(z))D(G(z)) 盡可能小以便區(qū)分出偽造數(shù)據(jù),最后導(dǎo)致 ② 式盡可能大;min?G\min_GminG? 表示令 D(G(z))D(G(z))D(G(z)) 盡可能大從而混淆判別器,最后導(dǎo)致 ③ 式盡可能小。訓(xùn)練早期,G 的擬合程度很低,D 可以被訓(xùn)練得很好,導(dǎo)致 log(1-D(G(z))) 趨于 0,進而使回傳梯度很小,導(dǎo)致訓(xùn)練效果不行。因此,比起 minimize log(1-D(G(z)))maximize log(D(G(z))) 會更好。

注:將隨機噪音 z 映射到 x 上(x = G(z)),使 x 盡可能擬合真實數(shù)據(jù) data 的分布。綠色實線為生成的數(shù)據(jù) p_g,黑色點為真實數(shù)據(jù) p_data,藍色虛線為判別器 D。每次訓(xùn)練 G 都使 p_g 盡可能擬合 p_data,而判別器 D 則會調(diào)整從而盡可能將 p_g 和 p_data 區(qū)分開。當 D(x) = 0.5 時,判別器將無法區(qū)分真假。

算法:

小結(jié):

命題1:當 G 被固定住時,最優(yōu)的辨別器 D 如下
DG?(x)=pdata(x)pdata(x)+pg(x)=12∈[0,1]D_G^*(x) = \frac{p_{data}(x)}{p_{data}(x)+p_g(x)} = \frac{1}{2} \in [0, 1] DG??(x)=pdata?(x)+pg?(x)pdata?(x)?=21?[0,1]
證明
Ex~pf(x)=∫xp(x)f(x)dxx=g(z)V(G,D)=∫xpdata(x)log?(D(x))dx+∫zpz(z)log?(1?D(g(z)))dz=∫xpdata(x)log?(D(x))+pg(x)log?(1?D(x))dx記:V(G,D)=∫xa?log?(y)+b?log?(1?y)dx則函數(shù)y→a?log?(y)+b?log?(1?y)在[0,1]里最大值為:aa+b=pdata(x)pdata(x)+pg(x)\begin{aligned} &E_{x~p}f(x) = \int_xp(x)f(x)dx \qquad x = g(z) \\ &V(G, D) = \int_x p_{data}(x)\log{(D(x))}dx + \int_zp_z(z)\log{(1-D(g(z)))}dz = \int_x p_{data}(x)\log{(D(x))} + p_g(x)\log{(1-D(x))}dx\\ &記:V(G, D) = \int_x a \cdot \log(y) + b \cdot \log{(1-y)} dx\qquad \\ &則函數(shù) \quad y \rightarrow a \cdot \log(y) + b \cdot \log{(1-y)} 在 [0, 1]里最大值為:\quad \frac{a}{a+b} = \frac{p_{data}(x)}{p_{data}(x)+p_g(x)} \end{aligned} ?Exp?f(x)=x?p(x)f(x)dxx=g(z)V(G,D)=x?pdata?(x)log(D(x))dx+z?pz?(z)log(1?D(g(z)))dz=x?pdata?(x)log(D(x))+pg?(x)log(1?D(x))dxV(G,D)=x?a?log(y)+b?log(1?y)dx數(shù)ya?log(y)+b?log(1?y)[0,1]a+ba?=pdata?(x)+pg?(x)pdata?(x)??
定理1:當且僅當 pgp_gpg? = pdatap_{data}pdata? 時, C(G) 取得全局最小值,為 -log4
C(G)=max?DV(G,D)=Ex~pdata[log(DG?(x))]+Ez~pz[log(1?DG?(G(z)))]=Ex~pdata[log(DG?(x))]+Ex~pg[log(1?DG?(x)]=Ex~pdata[logpdata(x)pdata(x)+pg(x)]+Ex~pg[logpg(x)pdata(x)+pg(x)]\begin{aligned} C(G) &= \max_DV(G, D) = E_{x~p_{data}}[log(D_G^*(x))]+E_{z~p_z}[log(1?D_G^*(G(z)))]\\ &= E_{x~p_{data}}[log(D_G^*(x))]+E_{x~p_g}[log(1?D_G^*(x)] = E_{x~p_{data}}[log\frac{p_{data}(x)}{p_{data}(x)+ p_g(x)}]+E_{x~p_g}[log\frac{p_g(x)}{p_{data}(x)+ p_g(x)}]\\ \end{aligned} C(G)?=Dmax?V(G,D)=Expdata??[log(DG??(x))]+Ezpz??[log(1?DG??(G(z)))]=Expdata??[log(DG??(x))]+Expg??[log(1?DG??(x)]=Expdata??[logpdata?(x)+pg?(x)pdata?(x)?]+Expg??[logpdata?(x)+pg?(x)pg?(x)?]?
KL 散度:KL(p||q) = Ex~plog?p(x)q(x)E_{x~p}\log{\frac{p(x)}{q(x)}}Exp?logq(x)p(x)?

證明
Ex~pdata[?log?2]+Ex~pg[?log?2]=?log?4,則C(G)=?log?(4)+KL(pdata∣∣pdata+pg2)+KL(pg∣∣pdata+pg2)=?log?(4)+2?JSD(pdata∣∣pg)由于JSD非負,且僅當其兩個參數(shù)相等時才為0,故,當pdata=pg時C(G)取最小值為?log?(4)\begin{aligned} &E_{x~p_{data}}[-\log2] + E_{x~p_g}[-\log2] = -\log4,則 \\ &C(G) = -\log(4) + KL(p_{data} || \frac{p_{data} + p_g}{2}) + KL(p_g || \frac{p_{data} + p_g}{2}) = -\log(4) + 2 \cdot JSD(p_{data} || p_g) \\ &由于 JSD 非負,且僅當其兩個參數(shù)相等時才為 0,故,當 p_{data} = p_g 時 C(G) 取最小值為 -\log(4) \end{aligned} ?Expdata??[?log2]+Expg??[?log2]=?log4C(G)=?log(4)+KL(pdata?2pdata?+pg??)+KL(pg?2pdata?+pg??)=?log(4)+2?JSD(pdata?pg?)JSD數(shù)0pdata?=pg?C(G)?log(4)?
命題2:當 G 和 D 有足夠容量,且算法 1 中我們允許每一步 D 是可以達到他的最優(yōu)解。那么如果我們對 G 的優(yōu)化是去迭代下面這一步驟,則 p_g 會收斂到 p_{data}
Ex~pdata[log?DG?(x)]+Ex~pg[log?(1?DG?(x))]E_{x~p_{data}}[\log{D_G^*(x)}] + E_{x~p_g}[\log{(1 - D_G^*(x))}] Expdata??[logDG??(x)]+Expg??[log(1?DG??(x))]

優(yōu)缺點:

特點:

  • 相比較傳統(tǒng)的模型,GAN 存在兩個不同的網(wǎng)絡(luò),而不是單一的網(wǎng)絡(luò),并且訓(xùn)練方式采用的是對抗訓(xùn)練方式
  • GAN 中 G 的梯度更新信息來自判別器 D,而不是來自數(shù)據(jù)樣本

優(yōu)點:

  • GAN 是一種生成式模型,相比較其他生成模型(玻爾茲曼機和GSNs)只用到了反向傳播,而不需要復(fù)雜的馬爾科夫鏈
  • 相比其他所有模型, GAN 可以產(chǎn)生更加清晰、真實的樣本

對 f 期望的求導(dǎo)等價于對 f 自己求導(dǎo) => 通過誤差的反向傳遞對 GAN 進行求解:lim?σ→0?xE?~N(0,σ2I)f(x+?)=?xf(x)\lim_{\sigma\rightarrow0}\nabla_xE_{\epsilon~N(0, \sigma^2I)}f(x+\epsilon) = \nabla_xf(x)limσ0??x?E?N(0,σ2I)?f(x+?)=?x?f(x)

  • GAN 采用的是一種無監(jiān)督學(xué)習(xí)方式訓(xùn)練,可以被廣泛用在無監(jiān)督學(xué)習(xí)和半監(jiān)督學(xué)習(xí)領(lǐng)域。但卻用一個有監(jiān)督學(xué)習(xí)的損失函數(shù)來做無監(jiān)督學(xué)習(xí),在訓(xùn)練上會高效很多
  • 相比于變分自編碼器(VAE),GANs 沒有引入任何決定性偏置( deterministic bias),變分方法引入決定性偏置。因為他們優(yōu)化對數(shù)似然的下界,而不是似然度本身,這導(dǎo)致了 VAEs 生成的實例比 GANs 更模糊
  • 相比 VAE,GANs 沒有變分下界,如果鑒別器訓(xùn)練良好,那么生成器可以完美的學(xué)習(xí)到訓(xùn)練樣本的分布。換句話說,GANs 是漸進一致的,而 VAE 是有偏差的

😥由于 GAN 的無監(jiān)督,在生成過程中,G 就會按照自己的意思天馬行空生成一些“詭異”的圖片,可怕的是 D 還可能給一個很高的分數(shù)。這就是無監(jiān)督目的性不強所導(dǎo)致的,所以在同年的NIPS大會上,有一篇論文 conditional GAN 就加入了監(jiān)督性進去,將可控性增強,表現(xiàn)效果也好很多

缺點:

  • 訓(xùn)練GAN需要達到納什均衡,有時候可以用梯度下降法做到,但有時候做不到。我們還沒有找到很好的達到納什均衡的方法,所以訓(xùn)練 GAN 相比 VAE 或者 PixelRNN 是不穩(wěn)定的,但我認為在實踐中它還是比訓(xùn)練玻爾茲曼機穩(wěn)定的多
  • GAN 不適合處理離散形式的數(shù)據(jù),比如文本
  • GAN 存在訓(xùn)練不穩(wěn)定、梯度消失、模式崩潰的問題(目前已解決)

🙄GAN 的目的是在高維非凸的參數(shù)空間中找到納什均衡點,GAN 的納什均衡點是一個鞍點,但是 SGD 只會找到局部極小值,因為 SGD 解決的是一個尋找最小值的問題,GAN 是一個博弈問題。同時,SGD容易震蕩,容易使GAN訓(xùn)練不穩(wěn)定。因此,GAN 中的優(yōu)化器不常用 SGD

補充:Generative Adversarial Net、GAN(生成對抗神經(jīng)網(wǎng)絡(luò))原理解析、簡單理解與實驗生成對抗網(wǎng)絡(luò)GAN、blogs from CSDN

總結(jié)

以上是生活随笔為你收集整理的GAN 简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。