# Математическая эволюция GAN: от f-дивергенций до расстояния Вассерштейна

Источник: https://www.youtube.com/watch?v=M3Fkvu78ZXc
Канал: Stanford Online
Опубликовано: 06.05.2024

---

В лекции Стэнфордского университета в рамках курса CS236 рассматривается эволюция генеративно-состязательных сетей (GAN). Основное внимание уделяется переходу от минимизации дивергенции Йенсена — Шеннона к более широкому классу f-дивергенций и использованию расстояния Вассерштейна для решения проблем сходимости моделей.

## 🤖 Основы GAN: Обучение без функции правдоподобия
[[JUMP:0:04]]

Генеративно-состязательные сети (GAN) представляют собой метод обучения моделей «без правдоподобия» (likelihood-free). Это означает, что разработчику больше не нужно выбирать специальные архитектуры или факторизовать распределение по цепному правилу, что обычно требуется для оценки вероятности каждой точки данных при максимизации правдоподобия [0:18]. Вместо прямого сравнения распределений через дивергенцию Кульбака — Лейблера (KL), GAN используют классификатор, называемый дискриминатором [1:13].

Процесс обучения строится как минимаксная игра двух игроков:

*   **Генератор (G):** Пытается создать образцы, максимально похожие на реальные данные, чтобы обмануть дискриминатор [2:19].
*   **Дискриминатор (D):** Обучается отличать реальные образцы из набора данных от «подделок», созданных генератором [1:27].
*   **Метрика успеха:** Если дискриминатор не может отличить образцы генератора от реальных, считается, что генератор обучен успешно [1:53].

При условии достижения оптимального дискриминатора, исходная целевая функция GAN фактически минимизирует дивергенцию Йенсена — Шеннона (Jensen-Shannon divergence) между распределением данных и распределением модели [3:51]. Лектор отмечает, что на практике это реализуется через две нейронные сети, где генератор трансформирует простые образцы (например, из распределения Гаусса) в сложные объекты [5:25].

## 📉 Обобщение через f-дивергенции
[[JUMP:7:32]]

Хотя классические GAN ориентированы на дивергенцию Йенсена — Шеннона, это лишь частный случай. Существует более широкий класс мер близости — f-дивергенции. Лектор поясняет, что f-дивергенция между двумя плотностями $p$ и $q$ определяется через ожидание функции $f$ от отношения плотностей $p/q$ [8:16].

Для того чтобы функция $f$ определяла валидную дивергенцию, она должна соответствовать трем техническим условиям:

1.  Быть выпуклой (convex) [8:44].
2.  Быть полунепрерывной снизу (lower semicontinuous) [8:44].
3.  Равняться 0 при аргументе 1 ($f(1) = 0$) [8:44].

Выбирая различные формы функции $f$, можно получить разные известные дивергенции:

*   **KL-дивергенция:** получается при $f(u) = u \log u$ [13:20].
*   **Обратная KL-дивергенция:** используется при $f(u) = -\log u$ [14:01].
*   **Дивергенция Йенсена — Шеннона:** специфическая сложная форма $f$ [13:49].
*   **Другие варианты:** общая вариация (total variation), дивергенция Альфа, квадрат расстояния Хеллингера [14:14].

Основная сложность здесь заключается в том, что мы не можем вычислить отношение плотностей $p/q$ напрямую, так как истинное распределение данных $p_{data}$ нам неизвестно [17:01].

## 🧠 Математический трюк: Сопряжение Фенхеля
[[JUMP:24:26]]

Чтобы оптимизировать f-дивергенции без прямого вычисления вероятностей, используется концепция выпуклого сопряжения (сопряжения Фенхеля). Для любой выпуклой функции $f$ можно найти сопряженную функцию $f^*$, через которую исходная функция $f$ выражается как результат задачи оптимизации [25:07].

Это позволяет переписать f-дивергенцию в виде, который не требует вычисления отношения плотностей внутри функции $f$ [29:31]. В результате сложная задача сводится к разности двух ожиданий:

*   Ожидание функции дискриминатора на реальных данных (распределение $p$) [31:49].
*   Ожидание сопряженной функции на образцах модели (распределение $q$) [32:05].

Лектор подчеркивает, что эта формулировка идеально ложится в архитектуру GAN: дискриминатор $T$ теперь выступает в роли функции, максимизирующей нижнюю границу f-дивергенции [38:48]. Чем гибче архитектура нейронной сети дискриминатора, тем точнее будет оценка дивергенции [36:21]. По мнению лектора, использование разных f-дивергенций дает разработчикам гибкость в определении функции потерь в зависимости от конкретной задачи [42:14].

## 🚚 Wasserstein GAN и «расстояние землекопа»
[[JUMP:48:57]]

Лектор указывает на фундаментальную проблему f-дивергенций: если распределения модели и данных имеют непересекающиеся носители (disjoint supports), дивергенции часто становятся бесконечными или константными [49:40]. В таких случаях градиентный спуск не дает генератору никакого сигнала для обучения: модель «не знает», в какую сторону двигаться, чтобы стать ближе к данным [50:49].

Решением является расстояние Вассерштейна (Wasserstein distance), также известное как Earth Mover’s distance («расстояние землекопа»). Интуитивно оно описывается так: если представить распределения вероятностей как кучи земли, то расстояние Вассерштейна — это минимальное количество усилий (масса земли, умноженная на расстояние переноса), необходимых для превращения одной кучи в другую [52:45].

Математические особенности W-GAN:

*   **Устойчивость:** Расстояние Вассерштейна меняется плавно даже тогда, когда носители распределений не пересекаются [53:35].
*   **Критик вместо дискриминатора:** В W-GAN дискриминатор часто называют «критиком», так как он не классифицирует данные, а оценивает расстояние [1:06:54].
*   **Условие Липшица:** Для работы метода функция критика должна быть ограничена — её наклон (производная) не может превышать единицу [1:05:46].
*   **Реализация:** На практике ограничение Липшица достигается либо через «обрезку» весов (weight clipping), либо через штраф за градиент (gradient penalty) [1:07:24].

По словам лектора, W-GAN гораздо стабильнее в обучении, чем обычные GAN, и практически исключает проблему исчезающих градиентов [1:15:21].

## 🔍 Извлечение признаков и BiGAN
[[JUMP:1:17:15]]

Обычные GAN хорошо генерируют данные из скрытого пространства $z$, но не умеют выполнять обратную операцию — находить скрытый код $z$ для конкретного изображения $x$ [1:18:09]. Чтобы получить полезные признаки (features) для последующих задач машинного обучения, лектор предлагает использовать архитектуру BiGAN (Bidirectional GAN) [1:20:10].

Ключевые отличия BiGAN:

*   **Энкодер (E):** Дополнительная сеть, которая отображает реальные данные $x$ в скрытое пространство $z$ [1:19:58].
*   **Объект дискриминации:** Дискриминатор в BiGAN оценивает не просто изображения, а пары $(x, z)$. Он должен отличить пару «реальное изображение + его код из энкодера» от пары «сгенерированное изображение + его исходный шум из априорного распределения» [1:20:41].
*   **Результат:** После обучения энкодер учится «инвертировать» генератор. Это позволяет использовать BiGAN для обучения без учителя, кластеризации и переноса обучения [1:24:55].

Лектор отмечает, что интуиция BiGAN схожа с вариационными автоэнкодерами (VAE), однако в BiGAN соответствие между кодами и данными обеспечивается не через KL-дивергенцию, а через состязательный тест дискриминатором [1:26:05].