Оптимальный транспорт

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
Wasserstein GAN: метрика, которая работает

0

1

Войти

Понимание границ метода важнее чем enthusiasm. WGAN-GP - foundational и до сих пор используется как baseline, но не должен слепо применяться где DDPM или flow matching работают лучше. В narrow-domain задачах с малыми данными WGAN-GP остаётся competitive.

Почему gradient penalty работает лучше weight clipping?