Neural-Networks

為什麼在對抗網絡中使用二元交叉熵生成器

  • October 28, 2016

我正在嘗試與 General Adversarial Networks 合作,我到處都能看到一些東西,但無法解釋為什麼……

GAN 通常由生成器(通常生成圖像並連接到鑑別器)和鑑別器(負責確定生成的圖像是否為假)構成。

我可以理解為什麼鑑別器的損失函數應該是二元交叉熵(在兩個類之間確定)但為什么生成器的損失也應該是二元交叉熵?

如果生成器應該生成圖像,那麼使用 MSE 或 MAE 損失不是更合適嗎?當我們對生成器使用 BCE 以外的任何損失函數時,究竟會發生什麼?

非常感謝…

我在 reddit 上從用戶ajmooch那裡找到了一個非常好的答案,並決定將其發佈在這裡,以防有人對我有誤解:

這裡有幾件事要記住。

首先,Generator 的 BCE 目標可以更準確地表述為“生成器輸出的圖像應該被 Discriminator 賦予高概率”。它不是您在二進制重建損失中看到的 BCE,它是 BCE(G(Z),X),其中 G(Z) 是生成的圖像,X 是樣本,它是 BCE(D(G(Z)) ,1) 其中 D(G(Z)) 是判別器分配給生成圖像的概率。給定一個始終具有逼真輸出的“完美”生成器,D(G(Z)) 值應始終接近 1。顯然在實踐中很難獲得這種收斂(訓練本質上是不穩定的),但那是目標。

第二個是在標準 GAN 算法中,潛在向量(生成器作為輸入接收並必須轉化為圖像的“隨機噪聲”)是獨立於訓練數據進行採樣的。如果你在 GAN 的輸出和單個圖像之間使用 MSE,你可能會得到某種結果,但你實際上是在說“給定這個(隨機)Z,產生這個特定的 X”,而你' d 隱含地強制生成器學習圖像的無意義嵌入。如果您將 Z 向量視為對圖像的高級描述,這就像向它展示三次狗並要求它在給定狗的三個不同(且不相關)描述的情況下生成同一隻狗。將此與類似具有顯式推理機制的 VAE 進行比較(VAE 的編碼器網絡在給定圖像樣本的情況下推斷 Z 值),然後嘗試使用這些推斷的 Z 重建給定圖像。GAN 不會嘗試重建圖像,因此在其普通形式中,將其輸出與使用 MSE 或 MAE 的一組樣本進行比較是沒有意義的。

最近在將相似性度量納入 GAN 訓練方面做了一些工作——這篇 openAI 論文在鑑別器的最終 FC 層中添加了 G(Z) 和 X 之間的 MSE 目標(a la Discriminative Regularization),這似乎工作得很好用於半監督學習(基於他們非常好的 SVHN 結果),但並沒有真正提高樣本質量。

您還可以將 VAE 和 GAN 放在一起(就像我和其他幾個在我之前所做的那樣)並使用 VAE 的推理機制為 GAN 生成器提供指導,這樣就可以進行一些像素級的比較用於重建。

引用自:https://stats.stackexchange.com/questions/242907

comments powered by Disqus