GAN 简介
GAN
原理:
?GAN 的主要靈感來源于博弈論中零和博弈的思想,應(yīng)用到深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)上來說,就是通過生成網(wǎng)絡(luò) G(Generator)和判別網(wǎng)絡(luò) D(Discriminator)不斷博弈,進(jìn)而使 G 學(xué)習(xí)到數(shù)據(jù)的分布,如果用到圖片生成上,則訓(xùn)練完成后,G 可以從一段隨機(jī)數(shù)中生成逼真的圖像。
- G 是一個(gè)生成網(wǎng)絡(luò),其輸入為一個(gè)隨機(jī)噪音,在訓(xùn)練中捕獲真實(shí)數(shù)據(jù)的分布,從而生成盡可能真實(shí)的數(shù)據(jù)并讓 D 犯錯(cuò)
- D 是一個(gè)判別網(wǎng)絡(luò),判別生成的數(shù)據(jù)是不是“真實(shí)的”。它的輸入?yún)?shù)是 x,輸出 D(x) 代表 x 為真實(shí)數(shù)據(jù)的概率,如果為 1,就代表 100% 是真實(shí)的數(shù)據(jù),而輸出為 0,就代表不可能是真實(shí)的數(shù)據(jù)
為了從數(shù)據(jù) x 中學(xué)習(xí)到生成器的分布 pgp_gpg?,我們定義一個(gè)輸入噪音變量 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?) 輸出是一個(gè)數(shù),代表 xxx 來自真實(shí)數(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)=Ex~pdata?(x)?[log(D(x))]+Ez~pz?(z)?[log(1?D(G(z)))]①訓(xùn)練D來最大化辨別能力:Dmax?V(D,G)=Ex~pdata?(x)?[log(D(x))]+Ez~pz?(z)?[log(1?D(G(z)))]②訓(xùn)練G來最小化log(1?D(G(z))):Gmin?V(D,G)=Ez~pz?(z)?[log(1?D(G(z)))]③?
注:max?D\max_DmaxD? 表示令 D(x)D(x)D(x) 盡可能大以便找出真實(shí)數(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,進(jìn)而使回傳梯度很小,導(dǎo)致訓(xùn)練效果不行。因此,比起 minimize log(1-D(G(z))),maximize log(D(G(z))) 會(huì)更好。
注:將隨機(jī)噪音 z 映射到 x 上(x = G(z)),使 x 盡可能擬合真實(shí)數(shù)據(jù) data 的分布。綠色實(shí)線為生成的數(shù)據(jù) p_g,黑色點(diǎn)為真實(shí)數(shù)據(jù) p_data,藍(lán)色虛線為判別器 D。每次訓(xùn)練 G 都使 p_g 盡可能擬合 p_data,而判別器 D 則會(huì)調(diào)整從而盡可能將 p_g 和 p_data 區(qū)分開。當(dāng) D(x) = 0.5 時(shí),判別器將無法區(qū)分真假。
算法:
小結(jié):
命題1:當(dāng) G 被固定住時(shí),最優(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} ?Ex~p?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))dx記:V(G,D)=∫x?a?log(y)+b?log(1?y)dx則函數(shù)y→a?log(y)+b?log(1?y)在[0,1]里最大值為:a+ba?=pdata?(x)+pg?(x)pdata?(x)??
定理1:當(dāng)且僅當(dāng) pgp_gpg? = pdatap_{data}pdata? 時(shí), 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)=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)+pg?(x)pdata?(x)?]+Ex~pg??[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)}}Ex~p?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非負(fù),且僅當(dāng)其兩個(gè)參數(shù)相等時(shí)才為0,故,當(dāng)pdata=pg時(shí)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 非負(fù),且僅當(dāng)其兩個(gè)參數(shù)相等時(shí)才為 0,故,當(dāng) p_{data} = p_g 時(shí) C(G) 取最小值為 -\log(4) \end{aligned} ?Ex~pdata??[?log2]+Ex~pg??[?log2]=?log4,則C(G)=?log(4)+KL(pdata?∣∣2pdata?+pg??)+KL(pg?∣∣2pdata?+pg??)=?log(4)+2?JSD(pdata?∣∣pg?)由于JSD非負(fù),且僅當(dāng)其兩個(gè)參數(shù)相等時(shí)才為0,故,當(dāng)pdata?=pg?時(shí)C(G)取最小值為?log(4)?
命題2:當(dāng) G 和 D 有足夠容量,且算法 1 中我們?cè)试S每一步 D 是可以達(dá)到他的最優(yōu)解。那么如果我們對(duì) G 的優(yōu)化是去迭代下面這一步驟,則 p_g 會(huì)收斂到 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))}] Ex~pdata??[logDG??(x)]+Ex~pg??[log(1?DG??(x))]
優(yōu)缺點(diǎn):
特點(diǎn):
- 相比較傳統(tǒng)的模型,GAN 存在兩個(gè)不同的網(wǎng)絡(luò),而不是單一的網(wǎng)絡(luò),并且訓(xùn)練方式采用的是對(duì)抗訓(xùn)練方式
- GAN 中 G 的梯度更新信息來自判別器 D,而不是來自數(shù)據(jù)樣本
優(yōu)點(diǎn):
- GAN 是一種生成式模型,相比較其他生成模型(玻爾茲曼機(jī)和GSNs)只用到了反向傳播,而不需要復(fù)雜的馬爾科夫鏈
- 相比其他所有模型, GAN 可以產(chǎn)生更加清晰、真實(shí)的樣本
對(duì) f 期望的求導(dǎo)等價(jià)于對(duì) f 自己求導(dǎo) => 通過誤差的反向傳遞對(duì) GAN 進(jìn)行求解: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)域。但卻用一個(gè)有監(jiān)督學(xué)習(xí)的損失函數(shù)來做無監(jiān)督學(xué)習(xí),在訓(xùn)練上會(huì)高效很多
- 相比于變分自編碼器(VAE),GANs 沒有引入任何決定性偏置( deterministic bias),變分方法引入決定性偏置。因?yàn)樗麄?strong>優(yōu)化對(duì)數(shù)似然的下界,而不是似然度本身,這導(dǎo)致了 VAEs 生成的實(shí)例比 GANs 更模糊
- 相比 VAE,GANs 沒有變分下界,如果鑒別器訓(xùn)練良好,那么生成器可以完美的學(xué)習(xí)到訓(xùn)練樣本的分布。換句話說,GANs 是漸進(jìn)一致的,而 VAE 是有偏差的
😥由于 GAN 的無監(jiān)督,在生成過程中,G 就會(huì)按照自己的意思天馬行空生成一些“詭異”的圖片,可怕的是 D 還可能給一個(gè)很高的分?jǐn)?shù)。這就是無監(jiān)督目的性不強(qiáng)所導(dǎo)致的,所以在同年的NIPS大會(huì)上,有一篇論文 conditional GAN 就加入了監(jiān)督性進(jìn)去,將可控性增強(qiáng),表現(xiàn)效果也好很多
缺點(diǎn):
- 訓(xùn)練GAN需要達(dá)到納什均衡,有時(shí)候可以用梯度下降法做到,但有時(shí)候做不到。我們還沒有找到很好的達(dá)到納什均衡的方法,所以訓(xùn)練 GAN 相比 VAE 或者 PixelRNN 是不穩(wěn)定的,但我認(rèn)為在實(shí)踐中它還是比訓(xùn)練玻爾茲曼機(jī)穩(wěn)定的多
- GAN 不適合處理離散形式的數(shù)據(jù),比如文本
- GAN 存在訓(xùn)練不穩(wěn)定、梯度消失、模式崩潰的問題(目前已解決)
🙄GAN 的目的是在高維非凸的參數(shù)空間中找到納什均衡點(diǎn),GAN 的納什均衡點(diǎn)是一個(gè)鞍點(diǎn),但是 SGD 只會(huì)找到局部極小值,因?yàn)?SGD 解決的是一個(gè)尋找最小值的問題,GAN 是一個(gè)博弈問題。同時(shí),SGD容易震蕩,容易使GAN訓(xùn)練不穩(wěn)定。因此,GAN 中的優(yōu)化器不常用 SGD
補(bǔ)充:Generative Adversarial Net、GAN(生成對(duì)抗神經(jīng)網(wǎng)絡(luò))原理解析、簡(jiǎn)單理解與實(shí)驗(yàn)生成對(duì)抗網(wǎng)絡(luò)GAN、blogs from CSDN
總結(jié)
- 上一篇: 【无标题】基于51单片机和DHT11的温
- 下一篇: [一起学Hive]之十二-Hive SQ