DualGan 学习笔记
?
這篇文章的靈感來(lái)源是Xia et al 提出的一篇做機(jī)器翻譯的文章NIP Dual【2】。這篇文章的一個(gè)例子很好的解釋了對(duì)偶的思想。首先假設(shè)我們有兩個(gè)人A和B,A會(huì)英文不會(huì)法語(yǔ),B會(huì)法語(yǔ)不會(huì)英文。A要和B進(jìn)行交流,A寫(xiě)了一段話,通過(guò)翻譯器GA翻譯成法語(yǔ),但A看不懂法語(yǔ),只能將翻譯的結(jié)果直接發(fā)給B;B收到這段話之后,用自己的理解整理了一下,通過(guò)翻譯器GB翻譯成英文直接發(fā)給A;A收到之后,要檢查B是否真正理解自己說(shuō)的話。如此往復(fù)幾次,A和B都能確認(rèn)對(duì)方理解了自己。在這個(gè)例子中,翻譯器A和B分別是兩個(gè)生成器,A和B分別擔(dān)任了判別器的角色。
?
原始GAN存在的問(wèn)題
在wgan這篇文章中系統(tǒng)的闡述了原始GAN存在的一些問(wèn)題。
(1)當(dāng)我們通過(guò)最小化?來(lái)訓(xùn)練G時(shí)會(huì)出現(xiàn)難訓(xùn)練、無(wú)法優(yōu)化G的問(wèn)題
由于實(shí)際上Pg與Pdata很難有不可忽略的重疊,當(dāng)D太強(qiáng)時(shí),我們發(fā)現(xiàn)JS散度就固定是常數(shù)log2,C(G)就為一個(gè)固定值,所以導(dǎo)致G梯度消失。當(dāng)D太弱時(shí),會(huì)導(dǎo)致G梯度不準(zhǔn),四處亂跑。所以G和D必須同步得很好才行。
(2)原始GAN提出了優(yōu)化方案:通過(guò)最小化來(lái)訓(xùn)練G。但會(huì)出現(xiàn)梯度不穩(wěn)定、模型崩潰的問(wèn)題
在原始GAN的距離度量 方式下,G的loss可以被化簡(jiǎn)成一下形式:
從上面這個(gè)式子,我們可以看到在最優(yōu)D時(shí),我們想要最小化生成器loss就既要減小KL散度又要同時(shí)增大JS散度,這就產(chǎn)生了矛盾導(dǎo)致梯度不穩(wěn)定。
?第二,即便是前面那個(gè)正常的KL散度項(xiàng)也有毛病。因?yàn)镵L散度不是一個(gè)對(duì)稱的衡量,與是有差別的。
換言之,對(duì)于上面兩種錯(cuò)誤的懲罰是不一樣的,第一種錯(cuò)誤對(duì)應(yīng)的是“生成器沒(méi)能生成真實(shí)的樣本”,懲罰微小;第二種錯(cuò)誤對(duì)應(yīng)的是“生成器生成了不真實(shí)的樣本” ,懲罰巨大。第一種錯(cuò)誤對(duì)應(yīng)的是缺乏多樣性,第二種錯(cuò)誤對(duì)應(yīng)的是缺乏準(zhǔn)確性。這一放一打之下,生成器寧可多生成一些重復(fù)但是很“安全”的樣本,也不愿意去生成多樣性的樣本,因?yàn)槟菢右徊恍⌒木蜁?huì)產(chǎn)生第二種錯(cuò)誤,得不償失。這種現(xiàn)象就是大家常說(shuō)的collapse mode。
?
WGAN進(jìn)行優(yōu)化后G和D的損失函數(shù):
?
DualGAN的思想
判別器損失:
Z,Z'為噪聲。形式與WGAN一致。
生成器損失:
網(wǎng)絡(luò)結(jié)構(gòu)
?生成器使用U-Net。
判別器使用patchGAN
?
?拓展:防止判別器過(guò)于自信
?(1)單邊標(biāo)簽平滑
D的優(yōu)化目標(biāo)從1變成0.9
(2)樣本噪聲
對(duì)輸入D的樣本添加噪聲來(lái)挑戰(zhàn)D。使真假樣本的流形更加接近,同時(shí)防止D輕易找到完全分離真假樣本的判別器邊界。
?
轉(zhuǎn)自https://www.cnblogs.com/J-K-Guo/p/7716559.html
總結(jié)
以上是生活随笔為你收集整理的DualGan 学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: batch-size 深度学习笔记
- 下一篇: 李宏毅老师机器学习和深度学习