遺失函式

GAN 會嘗試複製機率分布。因此,他們應使用損失函式,反映 GAN 產生的資料分布與實際資料分布之間的距離。

如何在 GAN 損失函式中擷取兩個分布的差異?這個問題是目前積極研究的領域,許多人提出了許多做法。我們將在這裡介紹兩個常見的 GAN 損失函式,兩者皆已在 TF-GAN 中實作:

TF-GAN 也實作許多其他損失函式。

一個損失函數還是兩個?

GAN 可以有兩個損失函式:一個用於產生器訓練,另一個用於判別器訓練。兩個損失函式如何搭配運作,以反映機率分布之間的距離測量值?

在我們接下來要探討的損失方案中,產生器和判別器損失是根據機率分布之間的單一距離測量值衍生而來。不過,在上述兩種配置中,產生器只能影響距離量測中的一個字詞,也就是反映假資料分布的字詞。因此,在產生器訓練期間,我們會捨棄其他項,以反映實際資料的分配情形。

雖然產生器和判別器損失是從單一公式衍生,但最終看起來仍不太一樣。

Minimax Loss

在介紹 GAN 的論文中,產生器會盡量減少下列函式,而判別器會盡量增加該函式:

Ex[log(D(x))]+Ez[log(1D(G(z)))]

在這個函式中:

  • D(x) 是判別器對實際資料例項 x 為真實的機率估計值。
  • Ex 是所有實際資料例項的預期值。
  • G(z) 是產生器在給定噪音 z 時的輸出內容。
  • D(G(z)) 是判別器對假例項為真實的機率估計值。
  • Ez 是產生器所有隨機輸入值的預期值 (實際上是所有產生的假例 G(z) 的預期值)。
  • 這個公式是根據實際和產生的分布情形之間的交叉熵推導而來。

產生器無法直接影響函式中的 log(D(x)) 項,因此對產生器而言,將損失降至最低,就等同於將 log(1 - D(G(z))) 降至最低。

在 TF-GAN 中,請參閱 minimax_discriminator_loss 和 minimax_generator_loss,瞭解如何實作這個損失函式。

經修改的 Minimax Loss

原始 GAN 論文指出,當判別器的工作非常簡單時,上述 minimax 損失函式可能會導致 GAN 在 GAN 訓練的初期階段卡住。因此,這份論文建議修改產生器損失,讓產生器嘗試將 log D(G(z)) 最大化。

如要瞭解如何實作此修改內容,請參閱 TF-GAN 中的 modified_generator_loss

Wasserstein 損失

根據預設,TF-GAN 會使用 Wasserstein 損失

這個損失函式取決於 GAN 架構 (稱為「Wasserstein GAN」或「WGAN」) 的修改版本,其中判別器實際上不會分類例項。針對每個例項輸出一個數字。這個數字不必小於 1 或大於 0,因此我們無法使用 0.5 做為閾值,判斷實例是真實或假造。辨別器訓練只是嘗試讓真實例的輸出值大於假例。

由於它無法真正區分真假,因此 WGAN 判別器實際上稱為「評論家」,而非「判別器」。這項區別在理論上具有重要性,但就實際用途而言,我們可以將其視為一種認可,即損失函式的輸入值不必是機率。

損失函式本身看似簡單:

Critic Loss: D(x) - D(G(z))

判別器會嘗試將此函數最大化。換句話說,它會嘗試將實際例項和假例項的輸出結果差異最大化。

產生器損失: D(G(z))

產生器會盡量提高這項功能。換句話說,它會嘗試將判別器的輸出結果最大化,以便處理假例。

在這些函式中:

  • D(x) 是實際例項的評論輸出內容。
  • G(z) 是產生器在給定噪音 z 時的輸出內容。
  • D(G(z)) 是評論者針對假例的輸出內容。
  • 評論 D 的輸出值「不」需要介於 1 和 0 之間。
  • 公式是根據實際和產生的分布資料之間的地球移動距離推導而來。

在 TF-GAN 中,請參閱 wasserstein_generator_loss 和 wasserstein_discriminator_loss 的實作方式。

需求條件

Wasserstein GAN (或 WGAN) 的理論依據要求整個 GAN 的權重都必須經過裁剪,以便維持在受限範圍內。

優點

相較於以 minimax 為基礎的 GAN,Wasserstein GAN 不容易卡住,且可避免梯度消失的問題。地球移動距離的優點是它是真實的度量方式,可用於測量機率分布空間中的距離。交叉熵並非這類指標。