Van de paper die GANs introduceert :
Het is logisch dat er te veel $ \ vec {z} $ -waarden naar een enkele $ \ vec {x} $ -waarde zal problemen veroorzaken. Ik was echter een beetje in de war over de manier waarop $ G $ voor een kortere tijd werd getraind voordat $ D $ kan het repareren. Maar toen ik “Helvetica scenario” googlede, kon ik alleen maar verwijzingen vinden naar een parodieprogramma met de naam Look Around You .
Omdat het lijkt alsof dit iets echts is, niet alleen een parodie – waar kan ik er meer over te weten komen en hoe het kan worden voorkomen? En waarom wordt het “het Helvetica-scenario” genoemd?
Antwoord
Te veel waarschijnlijkheidsmassa plaatsen op een enkele $ x $ is inderdaad een groot probleem met GANs. Meestal wordt dit modus samenvouwen genoemd. De meeste GAN-artikelen zullen het bespreken.
Ik was een beetje in de war over hoe training 𝐺 voor een kortere tijd voordat ik begon 𝐷 het probleem kon oplossen.
Het idee is om de discriminator $ D $ up-to-date te houden met de generator $ G $ . Door $ G $ minder te trainen, traint u $ D $ meer. Gewoonlijk wordt een afwisselende optimalisatie uitgevoerd met GANs, dwz train $ D $ voor $ n $ iteraties, vervolgens $ G $ voor $ m $ iteraties, enzovoort. De “taak” van $ D $ is om nep $ G $ -uitvoer te kunnen onderscheiden van echte gegevens punten. Maar als u $ D $ niet genoeg traint (u traint $ G $ te veel , dus $ m > n $ ), en vervolgens $ G $ zal snel “weglopen” en lokale minima exploiteren in $ D $ . Van $ G $ ” s standpunt, als $ D $ “wat output leuk vindt” $ x = G (z) $ , dan is het gemakkelijkste wat je kunt doen alleen uitvoer die $ x $ ! Door $ G $ minder (en dus $ D $ meer) te trainen, kan deze minima worden verplaatst en wordt voorkomen dat $ G $ om ze te misbruiken.
Merk op dat overtraining $ D $ niet lijkt een slechte zaak a priori . Inderdaad, met modernere GAN-verliezen (bijvoorbeeld Wasserstein-verliezen) wil men $ n $ zo groot mogelijk zijn. Het betekent alleen dat $ D $ bij elke stap convergeert tot een goede discriminator, dus het moet informatief zijn voor $ G $ . (Inderdaad, bewijzen van convergentie hangen hier van af!) Maar in de praktijk, voor het oorspronkelijke GAN, overtraining $ D $ leidt meestal tot nutteloze gradiënten (zie hieronder): niets dat $ G $ kan doen, zal de discriminator behagen, dus alle gewichtsupdates zijn nutteloos , dus het GAN gewoon tevergeefs rond de parameterruimte). Dit zwaaien wordt door anderen onstabiele training genoemd. 🙂
Met andere woorden, voor de vanilla GAN kan ondertraining $ D $ leiden tot het instorten van de modus, terwijl overtraining instabiliteit kan veroorzaken. Mensen hebben zich schijnbaar gericht op het verminderen van instabiliteit, zodat men $ D $ simpelweg overtraint en het instorten van de modus vermijdt.
hoe het kan worden voorkomen?
Een veelgebruikte manier om dit te beperken is door een andere verliesfunctie te gebruiken, zoals een Wasserstein-verlies. Een probleem met de oorspronkelijke GAN-formulering is dat (door het minimaliseren van de JS-divergentie) zeer niet-informatieve gradiënten kan hebben omdat het verlies distributies met zeer weinig overlap niet goed kan verwerken (d.w.z. wanneer de gedeelde ondersteuning klein is). In zekere zin is het te hard als de generator het slecht doet. Daarentegen neemt een optimaal transportverlies soepel af, zelfs wanneer de twee verdelingen ver van elkaar verwijderd zijn. Zie b.v. de Wasserstein GAN-paper en zijn follow-ups.
En waarom wordt het “het Helvetica-scenario” genoemd?
Het verwijst naar de show die u noemde, waar te veel calcium op één plaats wordt geplaatst en een ramp veroorzaakt. Hier treedt een ramp op wanneer een te grote generatorwaarschijnlijkheidsdichtheid in een klein gebied van de dataruimte wordt geplaatst. 🙂