Оптимальный транспорт
Wasserstein GAN: метрика, которая работает
GAN training в 2014-2017 - это лотерея. WGAN превратил её в инженерию. Wasserstein distance дала первый честный метрики качества генеративной модели.
- **StyleGAN2 (NVIDIA, 2019)** использует path-length regularization - extension WGAN-GP идеи. Генерирует $1024 \times 1024$ faces FFHQ, до сих пор baseline для face synthesis
- **BigGAN (DeepMind, 2019)** строится на spectral normalization - альтернативный способ enforce Lipschitz, идейно близкий WGAN. $512 \times 512$ ImageNet с FID 7.4
- **FID benchmarks 2017-2018**: WGAN-GP первым показал monotonic improvement loss vs FID - до этого корреляция между training metrics и качеством samples была нулевой
Предварительные знания
- Двойственность Канторовича-Рубинштейна и 1-Lipschitz функции (ot-05-dual)
- Wasserstein $W_p$ как метрика на распределениях (ot-03-wasserstein)
- Базовые архитектуры GAN: генератор и дискриминатор
Нестабильность классических GAN
В 2014 году Goodfellow предложил GAN: генератор $G$ и дискриминатор $D$ играют в minmax-игру вокруг JS-дивергенции. Loss выглядит элегантно: $\min_G \max_D \mathbb{E}_{x \sim p_r}[\log D(x)] + \mathbb{E}_{z \sim p_z}[\log(1 - D(G(z)))]$. Через год DCGAN сгенерировал правдоподобные лица на CelebA, и индустрия влюбилась в архитектуру. Через два года стало ясно: тренировка - лотерея.
**Три симптома нестабильности классического GAN**: 1. **Vanishing gradients**. Когда $D$ слишком сильный, он насыщает sigmoid и выдаёт почти 0 на fakes. Градиент по параметрам $G$ через $\log(1 - D(G(z)))$ становится экспоненциально малым - генератор перестаёт обучаться. 2. **Mode collapse**. $G$ находит одну mode, на которой $D$ путается, и копирует её. Multimodal distribution $p_r$ аппроксимируется одной точкой - визуально это «все лица одинаковые». 3. **Convergence chaos**. JS-loss осциллирует без явного тренда. Нет meaningful метрики качества - приходится глазами смотреть на samples каждые $N$ итераций.
Корень проблемы в самой JS-дивергенции. Если $p_r$ и $p_g$ живут на manifolds нижней размерности (типичная ситуация для естественных изображений на $\mathbb{R}^{H \times W \times 3}$), их носители почти наверняка не пересекаются. На непересекающихся носителях $\text{JS}(p_r \| p_g) = \log 2$ - константа. Производная константы - нуль. Генератор стоит на месте, потому что loss-функция не различает «близко промахнулся» и «далеко промахнулся».
**Manifold hypothesis vs JS**: реальные изображения лежат на manifold размерности $\sim 50$ внутри $\mathbb{R}^{3 \cdot 256 \cdot 256} \approx \mathbb{R}^{200000}$. Вероятность того, что два независимых $G(z_1)$ и $x \sim p_r$ попадут в один и тот же $\varepsilon$-шар, экспоненциально мала. Поэтому supports $p_r$ и $p_g$ почти никогда не пересекаются на старте обучения - и JS бесполезна.
Что именно вызывает mode collapse в классическом GAN?
Wasserstein loss: критик вместо дискриминатора
Январь 2017. Arjovsky, Chintala и Bottou публикуют «Wasserstein GAN». Идея проста и радикальна: заменить JS на $W_1$. Через двойственность Канторовича-Рубинштейна $W_1$ записывается как supremum по 1-Lipschitz функциям - и это переписывает GAN-формулировку. Дискриминатор становится критиком, sigmoid исчезает, тренировка стабилизируется.
**Wasserstein-1 distance через двойственность**: $$W_1(p_r, p_g) = \sup_{\|f\|_L \leq 1} \mathbb{E}_{x \sim p_r}[f(x)] - \mathbb{E}_{x \sim p_g}[f(x)]$$ Где $\|f\|_L \leq 1$ означает 1-Lipschitz: $|f(x) - f(y)| \leq \|x - y\|$. Функция $f$ в WGAN называется **критиком** - она оценивает «насколько real» вход, выдавая скалярный score (не вероятность). Loss WGAN: $$\mathcal{L}_{\text{critic}} = \mathbb{E}[f(G(z))] - \mathbb{E}[f(x)], \quad \mathcal{L}_{\text{gen}} = -\mathbb{E}[f(G(z))]$$ Критик максимизирует разрыв между real и fake, генератор минимизирует.
Принципиальное отличие критика от дискриминатора: output не bounded в $[0, 1]$ и не является вероятностью. Это просто scalar score. Sigmoid убран - вместе с насыщением, vanishing gradients и log в loss. На непересекающихся носителях $W_1$ равна геометрическому расстоянию между ними, и градиент по параметрам $G$ всегда осмысленный, всегда ненулевой.
**Weight clipping** - оригинальный способ enforce Lipschitz в WGAN. После каждого update параметров критика они обрезаются в $[-c, c]$ (типично $c = 0.01$). Это crude but works: гарантирует $K$-Lipschitz с некоторой $K$, зависящей от архитектуры и $c$. Авторы сами признали в paper, что это «demonstrably terrible way» - но в 2017 это сработало достаточно хорошо для breakthrough на FID benchmarks.
Практическое преимущество: $-\mathcal{L}_{\text{critic}}$ корреллирует с качеством samples. Если loss падает - generator реально улучшается. Это первый GAN-objective, который даёт meaningful training metric. До WGAN качество оценивали глазами или через сторонние FID/IS, после WGAN можно мониторить training в realtime.
Чем критик в WGAN принципиально отличается от дискриминатора в классическом GAN?
Gradient penalty: умная Lipschitz
Weight clipping работает, но грубо. Он обрезает все параметры одинаково, не учитывая структуру сети, и часто приводит к потере capacity критика - после clipping веса концентрируются на границах $\pm c$, и активации насыщаются. Через несколько месяцев после оригинального WGAN та же группа авторов (Gulrajani et al., 2017) выпустила WGAN-GP с принципиально лучшей идеей.
**Gradient penalty** заменяет weight clipping регуляризатором в loss критика: $$\mathcal{L}_{\text{critic}}^{\text{GP}} = \mathbb{E}[f(G(z))] - \mathbb{E}[f(x)] + \lambda \mathbb{E}_{\hat{x}}\left[\left(\|\nabla_{\hat{x}} f(\hat{x})\|_2 - 1\right)^2\right]$$ Где $\hat{x} = t \cdot x + (1 - t) \cdot G(z)$ при $t \sim U[0,1]$ - sample на прямой между real и fake. Типично $\lambda = 10$. Идея: вместо того чтобы обрезать веса (что enforces Lipschitz косвенно), напрямую штрафовать критика, если градиент норма отклоняется от 1.
Теоретическое обоснование: optimal критик $f^*$ из двойственности Канторовича-Рубинштейна имеет $\|\nabla f^*\| = 1$ почти всюду на support оптимального транспортного плана. Это характеризация optimal Kantorovich potential. Поэтому regularizer на gradient norm = 1 не просто enforces Lipschitz, а толкает критика к оптимальной форме - градиентный спуск двигает $f$ к solution dual problem.
Альтернативные способы enforce Lipschitz появились позже. **Spectral Normalization** (Miyato et al., 2018) делит каждый weight matrix на её спектральную норму - это даёт жёсткую гарантию 1-Lipschitz без regularizer term. Используется в BigGAN (Brock et al., 2019) для генерации $512 \times 512$ изображений из ImageNet. Spectral norm дешевле GP по compute, но менее гибок - GP позволяет critic иметь $K$-Lipschitz при произвольном $K$, не строго 1.
**Path-length regularization** в StyleGAN2 (Karras et al., 2019) - extension WGAN-GP идеи на feature space. Вместо $\|\nabla f\| = 1$ в input space, регуляризатор требует чтобы малое возмущение в latent $z$ давало constant-norm change в pixel space. Это improvements в perceptual quality на $1024 \times 1024$ faces FFHQ. NVIDIA до сих пор использует эту схему в коммерческих моделях.
**Misconception**: WGAN-GP полностью решил GAN training. Реальность: WGAN-GP стабильнее классического GAN, но не magic bullet. Modern практика 2023-2026: для high-resolution synthesis диффузионные модели (DDPM, Karras 2022; Stable Diffusion) и flow matching (FLUX.1) дают лучше FID и diversity. WGAN-GP остаётся важным как baseline и в narrow-domain задачах (медицинская визуализация, low-data regimes), но не state-of-the-art для general-purpose generation.
WGAN-GP полностью решает все проблемы GAN training - можно навсегда забыть про mode collapse и нестабильность
WGAN-GP значительно улучшает стабильность, но не панацея. Mode collapse редкий, но возможен. Hyperparameter tuning всё ещё нужен. Главное - в задачах high-resolution synthesis (2023-2026) диффузионные модели и flow matching обходят GAN-подходы по качеству и стабильности.
Ключевые идеи
- Классические GAN страдают от vanishing gradients, mode collapse и chaos в convergence - корень в JS-дивергенции, которая константна на непересекающихся носителях
- WGAN заменяет JS на $W_1$ через двойственность Канторовича-Рубинштейна. Дискриминатор становится 1-Lipschitz критиком с scalar output, loss correlates with sample quality
- Original WGAN использует weight clipping для enforce Lipschitz - crude but works. WGAN-GP заменяет clipping на gradient penalty $\lambda \mathbb{E}[(\|\nabla f\| - 1)^2]$, теоретически выводя critic к optimal Kantorovich potential
- Modern alternatives: spectral normalization (BigGAN), path-length regularization (StyleGAN2). Diffusion models и flow matching обходят WGAN на high-resolution задачах в 2023-2026, но WGAN-GP остаётся baseline и важен в low-data regimes
Связанные темы
Wasserstein GAN - мост между чистой теорией оптимального транспорта и инженерной практикой генеративных моделей.
- Метрики Вассерштейна — WGAN - прямое применение $W_1$ как loss функции в обучении генеративных моделей
- Flow Matching — Современный наследник WGAN - использует те же OT-идеи, но на уровне velocity field вместо adversarial training
- Wasserstein vs Fisher — Сравнение Wasserstein и информационной геометрии в обучении - две разные геометрии для одной задачи оптимизации над распределениями
Вопросы для размышления
- Почему именно $W_1$, а не $W_2$ выбран для WGAN-loss? Какая роль двойственности Канторовича-Рубинштейна в этом выборе?
- Может ли gradient penalty гарантировать строго 1-Lipschitz критика, или это лишь soft constraint? Что происходит, если $\|\nabla f\|$ систематически больше 1?
- Почему diffusion models (DDPM 2020) обходят WGAN на high-resolution задачах? В чём structural advantage stochastic noise schedule перед adversarial training?
Связанные уроки
- ot-03-wasserstein — WGAN - прямое применение метрики $W_1$ как loss
- ot-05-dual — Двойственность Канторовича-Рубинштейна обосновывает critic как 1-Lipschitz
- ot-11-flow-matching — Flow matching - современная альтернатива GAN на тех же OT-идеях
- ig-11-wasserstein-vs-fisher — Сравнение Wasserstein и Fisher геометрий в обучении
- prob-01-intro — JS- и KL-дивергенции - фундамент классических GAN
- ml-01