Z příspěvku představujícího GAN :
Je logické, že sbalení příliš mnoha $ \ vec {z} $ -hodnoty na jednu $ \ vec {x} $ -value způsobí problémy. Byl jsem však trochu zmatený, jak trénovat $ G $ na kratší dobu před spuštěním $ D $ to může opravit. Ale když jsem vygooglil „scénář Helvetica“, našel jsem jen odkazy na parodickou show s názvem Look Around You .
Protože to vypadá, že jde o skutečnou věc, nejen o parodie – kde o tom mohu zjistit více a jak tomu lze zabránit? A proč se tomu říká „scénář Helvetica“?
Odpověď
Umístit příliš mnoho pravděpodobnosti na jednu $ x $ je skutečně velkým problémem GAN. Obvykle se označuje jako sbalení režimu . Většina příspěvků o GAN o tom bude diskutovat.
Byl jsem trochu zmatený, jak to může opravit trénink running na kratší dobu před spuštěním fix / p>
Cílem je udržovat diskriminátor $ D $ aktuální s generátorem $ G $ . Trénováním $ G $ méně trénujete ještě $ D $ . Obvykle se střídavá optimalizace provádí pomocí GAN, tj. Trénujte $ D $ pro $ n $ iterace, pak $ G $ pro $ m $ iterace atd. „Úkolem“ $ D $ je být schopen rozeznat falešné $ G $ výstupy od skutečných dat bodů. Pokud ale dostatečně nevycvičíte $ D $ (tj. Natrénujete $ G $ příliš mnoho , takže $ m > n $ ), pak $ G $ se rychle „rozběhne“ a využije místní minima v $ D $ . Z $ G $ “ Z hlediska, pokud $ D $ „má rád“ nějaký výstup $ x = G (z) $ , pak je nejjednodušší udělat jen pouze výstup, který $ x $ ! Školení o $ G $ méně (a tedy $ D $ další) umožňuje tomuto minimu pohyb a brání $ G $ z jejich zneužití.
Všimněte si, že přetrénování $ D $ není se zdá být špatná věc a priori . Opravdu, s modernějšími ztrátami GAN (např. ty Wasserstein), člověk chce $ n $ být co největší. Znamená to jen, že $ D $ konverguje v každém kroku k velkému diskriminátoru, takže by měl být informativní pro $ G $ . (Důkazy o konvergenci závisí na tom, jak toho dosáhnout!) Ale v praxi je pro původní GAN přetrénování $ D $ má tendenci vést k zbytečným přechodům (viz níže): nic, co $ G $ nemůže udělat, nepotěší diskriminátora, takže všechny aktualizace hmotnosti jsou zbytečné , takže GAN jen marně cepuje kolem prostoru parametrů). Tento vzpoura se ostatním nazývá nestabilní trénink. 🙂
Jinými slovy, pro vanilkový GAN může podškolení $ D $ vést ke kolapsu režimu, zatímco přetrénování může způsobit nestabilitu. Lidé se zdánlivě zaměřili na zmírnění nestability, takže člověk jednoduše přetrénuje $ D $ a vyhne se kolapsu režimu.
Jak tomu lze zabránit?
Jedním z běžných způsobů, jak to zmírnit, je použití jiné funkce ztráty, například ztráty Wasserstein. Jeden problém s původní formulací GAN spočívá v tom, že (minimalizací divergence JS) může mít velmi neinformativní přechody, protože ztráta nezpracovává distribuce s velmi malým překrytím velmi dobře (tj. Když je sdílená podpora malá). V určitém smyslu je to příliš drsné, když si generátor vede špatně. Naproti tomu optimální ztráta přenosu plynule klesá, i když jsou obě distribuce daleko od sebe. Viz např. dokument Wasserstein GAN a jeho následná opatření.
A proč se tomu říká „scénář Helvetica“?
Týká se to přehlídky, kterou jste zmínili, kde se na jedno místo vloží příliš mnoho vápníku a způsobí katastrofu. Zde nastane katastrofa, když je do malé oblasti datového prostoru umístěno příliš mnoho hustoty pravděpodobnosti generátoru. 🙂