Generative Adversarial Networks (GAN) to jedna z najbardziej przełomowych architektur w historii sieci neuronowych. Zaproponowane w 2014 roku przez Iana Goodfellowa, GAN-y zrewolucjonizowały generowanie obrazów, wideo i dźwięku. Yann LeCun nazwał je „najciekawszą ideą w uczeniu maszynowym ostatnich 20 lat".
Zasada działania GAN
GAN opiera się na grze dwóch graczy — dwóch sieci neuronowych rywalizujących ze sobą:
Generator (G)
Generator to sieć, której zadaniem jest tworzenie fałszywych danych tak realistycznych, by były nieodróżnialne od prawdziwych. Generator przyjmuje na wejściu losowy wektor szumu z (z rozkładu normalnego lub jednostajnego) i przekształca go w dane wyjściowe — np. obraz.
G(z) → fałszywy obraz
Dyskryminator (D)
Dyskryminator to sieć klasyfikująca dane jako prawdziwe lub fałszywe. Otrzymuje na przemian prawdziwe dane z zestawu treningowego i fałszywe dane wygenerowane przez generator.
D(x) → prawdopodobieństwo, że x jest prawdziwe
Gra minimax
Trening GAN to gra minimax — generator minimalizuje, a dyskryminator maksymalizuje tę samą funkcję celu:
min_G max_D V(D, G) = E[log D(x)] + E[log(1 - D(G(z)))]
Intuicja: dyskryminator chce prawidłowo rozróżniać prawdziwe od fałszywych (maksymalizuje V), a generator chce oszukać dyskryminatora (minimalizuje V). W równowadze Nasha generator produkuje dane nieodróżnialne od prawdziwych, a dyskryminator daje prawdopodobieństwo 0,5 na każde wejście — nie potrafi rozróżnić.
Analogia
Powszechnie stosowana analogia to fałszerz vs policja: generator jest fałszerzem uczącym się podrabiać banknoty, dyskryminator jest policjantem uczącym się wykrywać fałszywki. Z czasem fałszerz staje się coraz lepszy, co zmusza policjanta do doskonalenia metod — i odwrotnie. Ostatecznie fałszywki stają się perfekcyjne.
Trening GAN krok po kroku
1. Inicjalizacja
Generator i dyskryminator inicjalizowane z losowymi wagami.
2. Trening dyskryminatora
- Pobierz partię prawdziwych danych (mini-batch)
- Wygeneruj partię fałszywych danych: G(z)
- Oblicz stratę dyskryminatora na obu partiach
- Aktualizuj wagi dyskryminatora przez gradient descent
- Nie aktualizuj wag generatora w tym kroku
3. Trening generatora
- Wygeneruj fałszywe dane: G(z)
- Przepuść je przez dyskryminatora
- Oblicz stratę generatora (chce, by dyskryminator klasyfikował fałszywki jako prawdziwe)
- Aktualizuj wagi generatora przez backpropagation przez dyskryminator
- Nie aktualizuj wag dyskryminatora w tym kroku
4. Powtarzaj
Alternuj między treningiem D i G przez tysiące iteracji.
Wyzwania treningu GAN
Mode Collapse
Najpoważniejszy problem: generator „zapada się" na kilka wzorców, produkując jedynie ograniczoną różnorodność wyjść. Na przykład GAN trenowany na twarzach generuje tylko kilka podobnych twarzy zamiast pełnego spektrum.
Przyczyna: generator znajduje kilka wyjść, które skutecznie oszukują dyskryminatora i „specjalizuje się" w nich, ignorując resztę rozkładu danych.
Niestabilność treningu
Balans między generatorem a dyskryminatorem jest delikatny. Jeśli dyskryminator jest zbyt silny — generator nie dostaje użytecznych gradientów. Jeśli zbyt słaby — generator nie ma motywacji do poprawy. Trening GAN wymaga starannego doboru hiperparametrów i monitorowania.
Brak obiektywnej metryki
W odróżnieniu od klasyfikacji (accuracy) czy regresji (MSE), nie istnieje jedna oczywista metryka jakości generacji. Stosuje się:
- FID (Fréchet Inception Distance) — porównuje statystyki cech prawdziwych i wygenerowanych obrazów
- IS (Inception Score) — mierzy jakość i różnorodność
- LPIPS — mierzy percepcyjne podobieństwo
Warianty GAN
DCGAN (Deep Convolutional GAN)
Pierwszy stabilny GAN oparty na konwolucyjnych sieciach neuronowych (2015). Kluczowe decyzje architektoniczne: konwolucje zamiast warstw w pełni połączonych, batch normalization, LeakyReLU w dyskryminatorze, brak warstw pooling (zastąpione strided convolutions).
Conditional GAN (cGAN)
Rozszerzenie GAN o warunek — dodatkową informację podawaną zarówno generatorowi, jak i dyskryminatorowi (np. etykieta klasy). Pozwala kontrolować generację: „wygeneruj obraz kota" zamiast losowego obrazu.
Pix2Pix
GAN do translacji obrazów parami (paired image-to-image translation): szkic → fotorealistyczny obraz, mapa segmentacji → zdjęcie ulicy, dzień → noc. Wymaga sparowanych danych treningowych.
CycleGAN
Translacja obrazów bez par (unpaired). Uczy się mapowania między dwiema domenami (np. konie ↔ zebry, zdjęcia ↔ obrazy Moneta) bez potrzeby sparowanych przykładów. Stosuje dwa generatory i dwa dyskryminatory z cycle consistency loss — obraz przetłumaczony w obie strony powinien wrócić do oryginału.
StyleGAN / StyleGAN2 / StyleGAN3
Seria modeli NVIDIA do generowania fotorealistycznych twarzy. StyleGAN wprowadził mapping network i style injection — kontrolę nad stylem na różnych skalach (od ogólnego kształtu twarzy po szczegóły tekstury). StyleGAN2 poprawił artefakty, StyleGAN3 wyeliminował problemy z alias.
Twarze generowane przez StyleGAN3 są praktycznie nieodróżnialne od fotografii prawdziwych ludzi — co rodzi poważne implikacje etyczne.
ProGAN (Progressive GAN)
Trening zaczynający od niskiej rozdzielczości (4×4) i stopniowo dodający warstwy do osiągnięcia wysokiej (1024×1024). Stabilizuje trening i poprawia jakość generowanych obrazów.
WGAN (Wasserstein GAN)
Zamienia funkcję celu na odległość Wassersteina (Earth Mover Distance). Zapewnia bardziej stabilny trening — gradient jest użyteczny nawet gdy dyskryminator jest bliski optymalnego, co łagodzi problem zanikających gradientów.
Zastosowania GAN
Generowanie i edycja obrazów
- Generowanie twarzy — fotorealistyczne twarze nieistniejących osób (ThisPersonDoesNotExist.com)
- Super-resolution — powiększanie rozdzielczości obrazów (SRGAN, ESRGAN)
- Inpainting — uzupełnianie brakujących fragmentów obrazu
- Style transfer — przenoszenie stylu artystycznego
- Usuwanie obiektów — inteligentne wymazywanie elementów ze zdjęć
Augmentacja danych
GAN może generować syntetyczne dane treningowe w domenach, gdzie prawdziwe dane są kosztowne lub rzadkie:
- Obrazy medyczne (skany MRI, zdjęcia dermoskopowe)
- Dane satelitarne
- Rzadkie scenariusze w jazdie autonomicznej
Wideo i animacja
- Deepfake — generowanie realistycznych wideo z podmienioną twarzą
- Motion transfer — przenoszenie ruchu między postaciami
- Generowanie wideo — np. VideoGPT, modele text-to-video
Inne domeny
- Text-to-Image — generowanie obrazów z opisu tekstowego (choć dziś dominują modele dyfuzyjne jak Stable Diffusion)
- Drug discovery — generowanie struktur molekularnych
- Synteza mowy — WaveGAN do generowania audio
GAN vs modele dyfuzyjne
Od 2022 roku modele dyfuzyjne (Stable Diffusion, DALL-E 2, Midjourney) w dużej mierze zastąpiły GAN-y w generowaniu obrazów z tekstu. Kluczowe różnice:
| Cecha | GAN | Modele dyfuzyjne |
|---|---|---|
| Trening | Niestabilny (gra minimax) | Stabilny (denoising) |
| Mode collapse | Tak | Nie |
| Jakość | Bardzo wysoka | Bardzo wysoka |
| Różnorodność | Ograniczona | Wysoka |
| Kontrola | Trudniejsza | Łatwiejsza (text-guided) |
| Szybkość generacji | Szybka (jedno przejście) | Wolniejsza (wiele kroków) |
GAN-y pozostają preferowane tam, gdzie liczy się szybkość generacji (real-time), np. w grach wideo i aplikacjach mobilnych.
Etyka i zagrożenia
Zdolność GAN do generowania fotorealistycznych treści rodzi poważne zagrożenia:
- Deepfake — fałszywe wideo polityków, celebrytów, zwykłych ludzi
- Dezinformacja — syntetyczne zdjęcia „dowodzące" fałszywych wydarzeń
- Kradzież tożsamości — generowanie fałszywych dokumentów z realistycznymi zdjęciami
- Pornografia non-consensual — generowanie intymnych treści bez zgody
Rozwija się równolegle dziedzina detekcji deepfake — sieci neuronowe trenowane do rozpoznawania syntetycznych treści. Legislacje (EU AI Act) zaczynają wymagać oznaczania treści generowanych przez AI.
Podsumowanie
GAN-y zrewolucjonizowały generatywną AI, wprowadzając elegancki paradygmat rywalizacji dwóch sieci. Choć modele dyfuzyjne przejęły pałeczkę w wielu zadaniach, architektura GAN pozostaje fundamentem rozumienia generatywnego uczenia maszynowego i znajduje zastosowania tam, gdzie liczy się szybkość i kontrola nad generacją.