DualGan


文章的思想來源

這篇文章的靈感來源是Xia et al 提出的一篇做機器翻譯的文章NIP Dual【2】。這篇文章的一個例子很好的解釋了對偶的思想。首先假設我們有兩個人A和B,A會英文不會法語,B會法語不會英文。A要和B進行交流,A寫了一段話,通過翻譯器GA翻譯成法語,但A看不懂法語,只能將翻譯的結果直接發給B;B收到這段話之后,用自己的理解整理了一下,通過翻譯器GB翻譯成英文直接發給A;A收到之后,要檢查B是否真正理解自己說的話。如此往復幾次,A和B都能確認對方理解了自己。在這個例子中,翻譯器A和B分別是兩個生成器,A和B分別擔任了判別器的角色。

 

原始GAN存在的問題

在wgan這篇文章中系統的闡述了原始GAN存在的一些問題。

(1)當我們通過最小化 來訓練G時會出現難訓練、無法優化G的問題

  由於實際上Pg與Pdata很難有不可忽略的重疊,當D太強時,我們發現JS散度就固定是常數log2,C(G)就為一個固定值,所以導致G梯度消失。當D太弱時,會導致G梯度不准,四處亂跑。所以G和D必須同步得很好才行。

(2)原始GAN提出了優化方案:通過最小化來訓練G。但會出現梯度不穩定、模型崩潰的問題

  在原始GAN的距離度量 方式下,G的loss可以被化簡成一下形式:

  

從上面這個式子,我們可以看到在最優D時,我們想要最小化生成器loss就既要減小KL散度又要同時增大JS散度,這就產生了矛盾導致梯度不穩定

 第二,即便是前面那個正常的KL散度項也有毛病。因為KL散度不是一個對稱的衡量,KL(P_g || P_r)KL(P_r || P_g)是有差別的。

  換言之,KL(P_g || P_r)對於上面兩種錯誤的懲罰是不一樣的,第一種錯誤對應的是“生成器沒能生成真實的樣本”,懲罰微小;第二種錯誤對應的是“生成器生成了不真實的樣本” ,懲罰巨大。第一種錯誤對應的是缺乏多樣性,第二種錯誤對應的是缺乏准確性。這一放一打之下,生成器寧可多生成一些重復但是很“安全”的樣本,也不願意去生成多樣性的樣本,因為那樣一不小心就會產生第二種錯誤,得不償失。這種現象就是大家常說的collapse mode。

 

WGAN進行優化后G和D的損失函數:

 

DualGAN的思想

判別器損失:

Z,Z'為噪聲。形式與WGAN一致。

生成器損失:

網絡結構

 生成器使用U-Net。

判別器使用patchGAN

 

 拓展:防止判別器過於自信

 (1)單邊標簽平滑

  D的優化目標從1變成0.9

(2)樣本噪聲

  對輸入D的樣本添加噪聲來挑戰D。使真假樣本的流形更加接近,同時防止D輕易找到完全分離真假樣本的判別器邊界。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM