Från tidningen som introducerar GAN: er :
Det är vettigt att kollapsa för många $ \ vec {z} $ -värden till en enda $ \ vec {x} $ -värde kommer att orsaka problem. Jag var dock lite förvirrad över hur träning $ G $ under en kortare tid innan jag körde $ D $ kan fixa det. Men när jag googlade ”Helvetica-scenariot” kunde jag bara hitta referenser till en parodiföreställning som heter Look Around You .
Eftersom det verkar som att detta är en verklig sak, inte bara en parodi – var kan jag ta reda på mer om det och hur det kan förhindras? Och varför kallas det ”Helvetica-scenariot”?
Svar
Att placera för mycket sannolikhetsmassa på en enda $ x $ är verkligen ett stort problem med GAN. Vanligtvis kallas det lägeskollaps . De flesta GAN-papper kommer att diskutera det.
Jag var lite förvirrad över hur träning 𝐺 under en kortare tid innan jag kör 𝐷 kan fixa det.
Tanken är att hålla diskriminatorn $ D $ uppdaterad med generatorn $ G $ . Genom att träna $ G $ mindre tränar du $ D $ mer. Vanligtvis görs en alternerande optimering med GAN, dvs tåg $ D $ för $ n $ iterationer, sedan $ G $ för $ m $ iterationer och så vidare. ”Jobbet” för $ D $ är att kunna urskilja falska $ G $ -utdata från verkliga data poäng. Men om du inte tränar $ D $ tillräckligt (dvs. du tränar $ G $ för mycket , så $ m > n $ ), sedan $ G $ kommer snabbt att ”springa av” och utnyttja lokala minima i $ D $ . Från $ G $ ” s synvinkel, om $ D $ ”gillar” en del output $ x = G (z) $ , då är det enklaste att göra bara bara mata ut den $ x $ ! Träning $ G $ mindre (och därmed $ D $ mer) gör att minima kan röra sig och förhindrar $ G $ från att utnyttja dem.
Observera att överträning $ D $ inte ”t verkar vara en dålig sak a priori . Med mer moderna GAN-förluster (t.ex. Wasserstein) vill man $ n $ att vara så stor som möjligt. Det betyder bara att $ D $ konvergerar till att vara en stor diskriminator vid varje steg, så det bör vara informativt för $ G $ . (Faktum är att bevis för konvergens är beroende av att göra detta!) Men i praktiken, för den ursprungliga GAN, överträning $ D $ tenderar att leda till värdelösa lutningar (se nedan): ingenting $ G $ kan göra kommer diskrimineraren att behaga, så alla viktuppdateringar är värdelösa , så GAN slingrar sig bara fåfängt runt parameterutrymmet). Detta flailing kallas instabil träning av andra. 🙂
Med andra ord, för vanilj GAN kan undervisning $ D $ leda till lägeskollaps, medan överträning kan orsaka instabilitet. Människor har till synes fokuserat på att mildra instabilitet så att man helt enkelt överträffar $ D $ och undviker lägeskollaps.
hur det kan förhindras?
Ett vanligt sätt att mildra det är att använda en annan förlustfunktion, till exempel en Wasserstein-förlust. Ett problem med den ursprungliga GAN-formuleringen är att (genom att minimera JS-avvikelsen) kan ha mycket uninformativa gradienter eftersom förlusten inte hanterar distributioner med mycket liten överlappning mycket bra (dvs. när det delade stödet är litet). I någon mening är det för hårt när generatorn går dåligt. Däremot minskar en optimal transportförlust smidigt även när de två fördelningarna ligger långt från varandra. Se t.ex. Wassersteins GAN-papper och dess uppföljningar.
Och varför kallas det ”Helvetica-scenariot”?
Det hänvisar till showen du nämnde, där för mycket kalcium placeras på ett ställe och orsakar en katastrof. Här inträffar en katastrof när för mycket generatorns sannolikhetstäthet placeras i ett litet område av datautrymmet. 🙂