Din lucrarea care introduce GAN-uri :

Un paragraf care menționează scenariul Helvetica

Este logic că prăbușirea prea multor $ \ vec {z} $ -values la un singur $ \ vec {x} $ -value va cauza probleme. Cu toate acestea, am fost un pic confuz cu privire la modul de antrenament $ G $ pentru o perioadă mai scurtă de timp înainte de a rula $ D $ o poate remedia. Dar când am căutat pe Google „scenariul Helvetica”, tot ce am putut găsi au fost referințe la o emisiune parodică numită Uită-te în jurul tău .

Deoarece se pare că acesta este un lucru real, nu o parodie – unde pot afla mai multe despre ea și cum poate fi prevenită? Și de ce se numește „scenariul Helvetica”?

Răspuns

Plasarea unei mase de probabilitate prea mari pe o singură $ x $ este într-adevăr o problemă majoră cu GAN-urile. De obicei, este denumit colaps mod . Majoritatea lucrărilor GAN o vor discuta.

Am fost puțin confuz cu privire la modul în care antrenamentul 𝐺 pentru o perioadă mai scurtă de timp înainte de a alerga 𝐷 îl poate remedia.

Ideea este să mențineți discriminatorul $ D $ la curent cu generatorul $ G $ . Prin instruirea cu $ G $ mai puțin, instruiți cu $ D $ mai mult. De obicei, se face o optimizare alternativă cu GAN-uri, adică tren $ D $ pentru $ n $ iterații, apoi $ G $ pentru $ m $ iterații și așa mai departe. „Jobul” $ D $ este de a putea discerne rezultatele false $ G $ din datele reale puncte. Dar, dacă nu antrenezi $ D $ suficient (adică antrenezi $ G $ prea mult , deci $ m > n $ ), apoi $ G $ va „repede” și va exploata minimele locale din $ D $ . Din $ G $ ” punctul de vedere, dacă $ D $ „îi place” ceva rezultat $ x = G (z) $ , atunci cel mai ușor lucru de făcut este doar doar ieșirea care $ x $ ! Instruirea cu $ G $ mai puțin (și, prin urmare, cu $ D $ mai mult) permite ca aceste minime să se miște și previne $ G $ de la exploatarea lor.

Observați că supraentrenarea $ D $ nu „t par a fi un lucru rău a priori . Într-adevăr, cu pierderi GAN mai moderne (de exemplu, cele Wasserstein), se dorește $ n $ să fie cât mai mare posibil. Înseamnă doar că $ D $ converge la un mare discriminator la fiecare pas, deci ar trebui să fie informativ pentru $ G $ . (Într-adevăr, dovezile convergenței depind de acest lucru!) Dar, în practică, pentru GAN-ul original, supraentrenarea $ D $ tinde să conducă la gradienți inutili (vezi mai jos): nimic $ G $ nu poate face nu va face pe plac discriminatorului, așa că toate actualizările greutății sunt inutile , deci GAN doar zadarnic inutil în jurul spațiului parametrilor). Acest flailing este numit antrenament instabil de către alții. 🙂

Cu alte cuvinte, pentru GAN-ul vanilat, antrenarea $ D $ poate duce la colapsul modului, în timp ce suprasolicitarea poate cauza instabilitate. Se pare că oamenii s-au concentrat asupra atenuării instabilității, astfel încât să se suprasolicite pur și simplu $ D $ și să evite colapsul modului.

cum poate fi prevenit?

O modalitate obișnuită de a atenua este utilizarea unei funcții de pierdere diferite, cum ar fi o pierdere Wasserstein. O problemă cu formularea GAN originală este că (prin minimizarea divergenței JS) poate avea gradienți foarte neinformativi, deoarece pierderea nu gestionează foarte bine distribuțiile cu suprapunere foarte mică (adică, atunci când suportul partajat este mic). Într-un anumit sens, este prea dur atunci când generatorul se descurcă prost. În schimb, o pierdere de transport optimă scade fără probleme chiar și atunci când cele două distribuții sunt departe una de alta. Vezi de ex. lucrarea GAN Wasserstein și urmăririle sale.

Și de ce se numește „scenariul Helvetica”?

Se referă la spectacolul pe care l-ați menționat, unde prea mult calciu este pus într-un singur loc și provoacă un dezastru. Aici, un dezastru apare atunci când prea multă densitate de probabilitate a generatorului este plasată într-o zonă mică a spațiului de date. 🙂

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *