Z artykułu wprowadzającego GAN :

Akapit wspominający o scenariuszu Helvetica

To ma sens, że zwinięcie zbyt wielu $ \ vec {z} $ -wartości do pojedynczego $ \ vec {x} $ -value spowoduje problemy. Jednak byłem trochę zdezorientowany, jak trenować $ G $ przez krótszy czas przed uruchomieniem $ D $ może to naprawić. Ale kiedy wyszukałem w Google „Scenariusz Helvetica”, znalazłem jedynie odniesienia do programu parodystycznego zatytułowanego Look Around You .

Ponieważ wygląda na to, że jest to rzeczywistość, a nie tylko parodia – gdzie mogę dowiedzieć się więcej na jej temat i jak można temu zapobiec? Dlaczego nazywa się to „scenariuszem Helvetica”?

Odpowiedź

Umieszczenie zbyt dużej masy prawdopodobieństwa na pojedynczej $ x $ to rzeczywiście poważny problem z sieciami GAN. Zwykle jest to określane jako zwijanie w trybie . Omówi to większość artykułów GAN.

Byłem trochę zdezorientowany, jak szkolenie 𝐺 przez krótszy czas przed biegiem 𝐷 może to naprawić.

Chodzi o to, aby dyskryminator $ D $ był na bieżąco z generatorem $ G $ . Szkolenie o $ G $ mniej, oznacza to $ D $ więcej. Zazwyczaj w sieciach GAN przeprowadza się naprzemienną optymalizację, np. Pociąg $ D $ dla iteracji $ n $ , następnie $ G $ dla $ m $ iteracji i tak dalej. „Zadanie” $ D $ polega na rozpoznaniu fałszywych wyników $ G $ z rzeczywistych danych zwrotnica. Ale jeśli nie trenujesz wystarczająco $ D $ (tj. Trenujesz $ G $ za dużo , więc $ m > n $ ), a następnie $ G $ szybko „ucieknie” i wykorzysta lokalne minima w $ D $ . From $ G $ ” z punktu widzenia, jeśli $ D $ „lubi” jakieś wyniki $ x = G (z) $ , wtedy najłatwiej jest po prostu wyprowadzić tylko to $ x $ ! Szkolenie $ G $ mniej (a tym samym $ D $ więcej) umożliwia przesunięcie tych minimów i zapobiega $ G $ przed ich wykorzystaniem.

Zauważ, że przetrenowanie $ D $ nie „t wydaje się być złą rzeczą a priori . Rzeczywiście, przy bardziej nowoczesnych stratach GAN (np. strat Wassersteina), ktoś chce $ n $ być tak dużym, jak to tylko możliwe. Oznacza to po prostu, że $ D $ ma na każdym kroku być wielkim dyskryminatorem, więc powinno być pouczające dla $ G $ . (Rzeczywiście, dowody na zbieżność zależą od robienia tego!) Ale w praktyce, dla oryginalnego GAN, przetrenowanie $ D $ zwykle prowadzi do bezużytecznych gradientów (patrz poniżej): nic $ G $ nie może zadowolić dyskryminatora, więc wszystkie aktualizacje wagi są bezużyteczne , więc GAN po prostu bezskutecznie macha wokół przestrzeni parametrów). To wymachiwanie nazywane jest przez innych niestabilnym treningiem. 🙂

Innymi słowy, dla waniliowego GAN, niedotrenowanie $ D $ może doprowadzić do załamania trybu, podczas gdy przetrenowanie może spowodować niestabilność. Ludzie najwyraźniej skupili się na łagodzeniu niestabilności, tak aby po prostu przetrenować $ D $ i uniknąć załamania trybu.

jak można temu zapobiec?

Jednym z powszechnych sposobów złagodzenia tego problemu jest użycie innej funkcji straty, takiej jak strata Wassersteina. Jednym z problemów z oryginalnym sformułowaniem GAN jest to, że (poprzez zminimalizowanie rozbieżności JS) mogą mieć bardzo małoinformacyjne gradienty, ponieważ strata nie radzi sobie dobrze z dystrybucjami z bardzo małym nakładaniem się bardzo dobrze (tj. Gdy wspólne wsparcie jest małe). W pewnym sensie jest to zbyt trudne, gdy generator źle działa. W przeciwieństwie do tego optymalna strata transportowa płynnie maleje, nawet gdy te dwa rozkłady są daleko od siebie. Zobacz np. artykuł Wasserstein GAN i jego następstwa.

I dlaczego nazywa się to „scenariuszem Helvetica”?

Odnosi się do programu, o którym wspomniałeś, w którym zbyt dużo wapnia jest umieszczane w jednym miejscu i powoduje katastrofę. Tutaj katastrofa ma miejsce, gdy zbyt duża gęstość prawdopodobieństwa generatora jest umieszczona na małym obszarze przestrzeni danych. 🙂

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *