Discriminator w GAN jest po prostu klasyfikatorem. Próbuje odróżnić prawdziwe dane od danych utworzonych przez generator. Może ona korzystać z dowolnej architektury sieci odpowiedniej do typu danych, które klasyfikuje.
Rysunek 1. Propagacja wsteczna w przypadku trenowania dyskryminatora.
Dane treningowe do wyodrębniania
Dane treningowe dyskryminatora pochodzą z 2 źródeł:
- Rzeczywiste dane, np. prawdziwe zdjęcia ludzi. Podczas trenowania dyskryminator używa tych wystąpień jako przykładów pozytywnych.
- Fałszywe dane utworzone przez generator. Podczas trenowania dyskryminator używa tych instancji jako przykładów negatywnych.
Na rysunku 1 2 pole „Sample” (Próbka) reprezentuje 2 źródła danych, które są podawane do dyskryminatora. Podczas trenowania wyróżnika generator nie trenuje. Jego wagi pozostają stałe, gdy generuje przykłady, na których dyskryminator może się uczyć.
Trenowanie wyróżnika
Dyskryminator łączy się z 2 funkcjami straty. Podczas trenowania dyskryminatora dyskryminator ignoruje stratę generatora i używa tylko straty dyskryminatora. Podczas trenowania generatora używamy funkcji generator loss, jak opisano w następnej sekcji.
Podczas treningu wyróżnika:
- Dyskryminator klasyfikuje zarówno prawdziwe, jak i fałszywe dane z generatora.
- Strata dyskryminatora penalizuje dyskryminatora za błędne zaklasyfikowanie prawdziwego przykładu jako fałszywego lub fałszywego przykładu jako prawdziwego.
- Wyróżnik aktualizuje swoje wagi za pomocą propagacji wstecznej z utraty wyróżnika przez sieć wyróżnika.
W następnej sekcji zobaczymy, dlaczego utrata generatora wiąże się z dyskryminatorem.