GAN 會嘗試複製機率分佈情形。因此,它們應使用反映 GAN 產生的資料分佈和實際資料分佈之間的距離。
如何擷取 GAN 損失函式中兩個分佈之間的差異?這個問題是活躍研究領域,且已提出的許多做法。本文將說明兩種常見的 GAN 損失函式,這兩項功能均已在 TF-GAN 中實作:
- minimax 損失:介紹 GAN 的論文中使用的損失函式。
- Wasserstein 損失:TF-GAN Estimator 的預設損失函式。首次在 2017 年論文中說明。
TF-GAN 也會實作許多其他損失函式。
有 1 或 2 個損失函式?
GAN 可能包含兩種損失函式:一個用於產生器訓練,另一個用於歧視訓練。兩種損失函式如何搭配運作,以反映機率分佈情形之間的距離測量結果?
在此處說明的損失配置中,我們會探討發電機和歧視指標的損失,從計算分佈可能性的單一距離納入考量。不過,在這兩個配置中,產生器在距離測量結果中都只能影響一個字詞:反映假資料分佈的字詞。因此,在產生器訓練時,我們會捨棄另一個字詞,以反映實際資料的分佈情形。
即使產生器是從單一公式衍生而來,產生器和歧視器的損失仍會有所差異。
最大損失
在介紹 GAN 的論文中,產生器會嘗試盡可能減少下列函式,而歧視器會嘗試最大化這個函式:
在這個函式中:
D(x)
是歧視器 # 的真實機率估計值。- 「x」是所有實際資料執行個體的預期值。
- 指定的噪音 z 時,
G(z)
是產生器的輸出內容。 D(G(z))
是歧視器的估計機率。- E 是所有產生器產生的隨機輸入中的預期值 (實際上,所有產生的虛假執行個體 G(z) 中的預期值)。
- 此公式來自實際和產生的分佈之間的交叉熵。
產生器無法直接影響函式中的 log(D(x))
字詞,因此針對產生器,將損失降到最低等同於減少 log(1 -
D(G(z)))
。
在 TF-GAN 中,請參閱 minimax_disriminator_loss 和 minimax_generator_loss,瞭解這個損失函式的實作方式。
經修改的 Minimax 損失
原始 GAN 論文指出,如果淘汰器的任務非常簡單,上述 minimax 損失函式可能會導致 GAN 停在 GAN 訓練的早期階段。因此,我們建議修改修改的產生器設定,讓產生器嘗試盡可能提高 log D(G(z))
。
在 TF-GAN 中,請參閱 modified_generator_loss 以取得這項修改的實作內容。
Wasserstein 損失
根據預設,TF-GAN 會使用 Wasserstein Loss。
此損失函式取決於 GAN 配置 (稱為「Wasserstein GAN」或「WGAN」) 的修改,其中歧視器實際上不會將執行個體分類。每個執行個體都會輸出一個數字。這個數字不得小於 1 或大於 0,因此我們無法使用 0.5 做為閾值,判斷執行個體為真實或虛構。歧視器訓練作業只會嘗試針對實際執行個體提供比執行個體假的輸出內容。
由於 WGAN 歧視器在真實和假貨之間無法真的區別,因此 WGAN 歧視器實際上稱為「專家」,而非「歧視者」。這個差異對理論來說很重要,但就實際用途而言,我們可以確認,損失函式的輸入內容不一定要是機率。
損失函式本身就是欺騙行為:
專家損失:D(x) - D(G(z))
歧視器會嘗試最大化這個函式。換句話說,它會嘗試盡可能增加實際執行個體中的輸出內容,以及假執行個體的輸出內容。
產生器損失:D(G(z))
產生器會嘗試最大化這個函式。換句話說,它會嘗試盡可能為虛假執行個體最大化的歧視器輸出內容。
在這些函式中:
D(x)
是實際執行個體的專家輸出內容。- 指定的噪音 z 時,
G(z)
是產生器的輸出內容。 D(G(z))
是虛構執行個體的輸出內容。- 專家 D 的輸出結果不必介於 1 到 0 之間。
- 公式來自實際和產生的分佈之間的地球移動距離。
在 TF-GAN 中,請參閱 wasserstein_generator_loss 和 wasserstein_discriminator_loss 瞭解實作方式。
相關規定
Wasserstein GAN (或 WGAN) 的理論依據要求,所有 GAN 的權重都必須裁剪,確保這些項目在限制範圍內。
優點
與 minimax 型 GAN 相比, Wasserstein GAN 較不容易卡住,並避免梯度波動的問題。此外,地震移動距離還可以做為真正的指標:在空間分佈情況中測量距離。在本例中,「交叉熵」不是指標。