Генеративно-состязательные сети (GAN): Теория и практика 0:05
Генеративно-состязательные сети (Generative Adversarial Networks, GAN) представляют собой класс моделей, которые кардинально меняют подход к обучению генеративных нейросетей, отказываясь от прямого использования функции правдоподобия в пользу конкурентного обучения. В рамках курса CS236 в Стэнфордском университете (Stanford Online) подробно рассматривается механика их работы, математические основы и основные проблемы, с которыми сталкиваются исследователи при их использовании.
От максимизации правдоподобия к состязательному обучению 0:18
Классические генеративные модели, такие как авторегрессионные модели, вариационные автокодировщики (VAE) и нормализующие потоки, основаны на максимизации правдоподобия (maximum likelihood training). Основная идея заключается в том, чтобы сделать распределение модели максимально близким к распределению реальных данных согласно выбранной метрике (например, дивергенции Кульбака-Лейблера).
Однако у максимизации правдоподобия есть ограничения:
- Качество против правдоподобия: Модель может достигать высокого правдоподобия (хорошо сжимать данные), но при этом генерировать крайне низкокачественные изображения.
- Иллюстративный пример: Можно создать «смешанную» модель, которая в 99% случаев генерирует случайный шум, а в 1% — идеальные данные. Такая модель будет иметь высокое среднее правдоподобие, но при этом выдавать «мусор» почти всегда.
- Переобучение: Если модель просто запоминает обучающую выборку (оверфиттинг), она будет выдавать отличные «реалистичные» сэмплы, но иметь катастрофически низкое правдоподобие на тестовых данных.
GAN решают эту проблему, отказываясь от оценки плотности вероятности. Вместо этого они используют «двухвыборочный тест» (two-sample test), цель которого — выяснить, можно ли различить две группы образцов: реальные данные и данные, сгенерированные моделью.
Механизм дискриминатора и генератора 34:38
В GAN мы не просто задаем статистику для сравнения, а обучаем классификатор — дискриминатор — автоматически находить признаки, отличающие реальные данные от синтетических.
- Дискриминатор (Classifier): Это нейросеть, которая учится классифицировать образцы как «реальные» (метка 1) или «фейковые» (метка 0).
- Генератор (Generator): Это вторая нейросеть, которая принимает на вход случайный вектор шума ($Z$) и преобразует его в «фейковые» данные, стараясь максимально запутать дискриминатор.
Процесс обучения превращается в игру с нулевой суммой (MiniMax optimization): дискриминатор максимизирует свою способность отличить реальное от фейкового, а генератор минимизирует эту способность.
- В идеальных условиях, когда дискриминатор оптимален, задача сводится к минимизации дивергенции Дженсена-Шеннона между данными и моделью.
- Для обучения генератора не требуется вычислять правдоподобие, что снимает ограничения на архитектуру: генератор может быть любым дифференцируемым отображением, работающим очень быстро (генерация за один проход).
Проблемы и ограничения GAN
Несмотря на мощную концепцию, GAN известны своей нестабильностью:
- Отсутствие сходимости: Обучение представляет собой осциллирующий процесс, где игроки постоянно пытаются переиграть друг друга.
- Коллапс моды (Mode Collapse): Модель может сфокусироваться на генерации одного или нескольких типов данных (например, только одной цифры в MNIST), полностью игнорируя разнообразие остальной выборки.
- Сложность оценки: В отличие от likelihood-based моделей, где мы видим рост функции правдоподобия, в GAN нет четкого критерия остановки, кроме визуальной оценки качества сэмплов.
На текущий момент популярность GAN снизилась в пользу диффузионных моделей, которые обладают более стабильным процессом обучения с четким целевым функционалом. Тем не менее, идеи GAN остаются востребованными — например, использование дискриминатора в комбинации с другими моделями для улучшения качества генерации.