Генеративно-состязательная сеть
Материал из MachineLearning.
| Строка 1: | Строка 1: | ||
| - | {{well|Статья написана с использованием LLM '''DeepSeek''' | + | {{well|Статья написана с использованием LLM '''DeepSeek''' и проверена участником [[Участник:Kirill_Savitskii|К.А.Савицкий]] {{CURRENTTIME}}, {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} (UTC)}}'''Генеративно-состязательная сеть''' (Generative Adversarial Network, GAN) — класс [[Машинное обучение|машинного обучения]], предложенный в 2014 году [[Гудфеллоу, Иэн|Иэном Гудфеллоу]] и соавторами<ref name="Goodfellow2014">{{статья|автор=Goodfellow I. J., Pouget-Abadie J., Mirza M., Xu B., Warde-Farley D., Ozair S., Courville A., Bengio Y. |заглавие=Generative Adversarial Nets |издание=Advances in Neural Information Processing Systems 27 (NIPS 2014) |год=2014 |страницы=2672–2680}}</ref>, в котором две [[нейронная сеть|нейронные сети]] состязаются друг с другом в рамках [[Теория игр|теоретико-игровой]] постановки. Одна сеть ([[#Генератор|генератор]]) создаёт синтетические данные, другая ([[#Дискриминатор|дискриминатор]]) пытается отличить их от реальных образцов из обучающей выборки. Состязательный процесс заставляет генератор производить всё более правдоподобные примеры, а дискриминатор — всё более точно распознавать подделки, что в пределе приводит к порождению данных, неотличимых от истинных. Интуитивно GAN часто описывают метафорой фальшивомонетчика (генератор) и полицейского (дискриминатор): первый учится изготавливать поддельные банкноты, второй — выявлять их, пока фальшивки не станут неотличимы от настоящих<ref name="Goodfellow2014"/>. |
В отличие от многих [[генеративная модель|генеративных моделей]], GAN не требует явного вычисления плотности распределения данных, а использует неявное моделирование через состязательный процесс. Это позволяет синтезировать чрезвычайно реалистичные изображения, аудио, текст и другие типы данных. Благодаря своей гибкости GAN породили обширное семейство архитектур, включая [[#DCGAN|DCGAN]], [[#WGAN|WGAN]], [[#StyleGAN|StyleGAN]], [[#CycleGAN|CycleGAN]] и многие другие, и нашли применение в решении задач генерации лиц, повышения разрешения, перевода изображений, генерации текста по описанию и т. д. | В отличие от многих [[генеративная модель|генеративных моделей]], GAN не требует явного вычисления плотности распределения данных, а использует неявное моделирование через состязательный процесс. Это позволяет синтезировать чрезвычайно реалистичные изображения, аудио, текст и другие типы данных. Благодаря своей гибкости GAN породили обширное семейство архитектур, включая [[#DCGAN|DCGAN]], [[#WGAN|WGAN]], [[#StyleGAN|StyleGAN]], [[#CycleGAN|CycleGAN]] и многие другие, и нашли применение в решении задач генерации лиц, повышения разрешения, перевода изображений, генерации текста по описанию и т. д. | ||
Текущая версия
| | Статья написана с использованием LLM DeepSeek и проверена участником К.А.Савицкий 02:33, 14 июль 2026 (UTC) |
Генеративно-состязательная сеть (Generative Adversarial Network, GAN) — класс машинного обучения, предложенный в 2014 году Иэном Гудфеллоу и соавторами[1], в котором две нейронные сети состязаются друг с другом в рамках теоретико-игровой постановки. Одна сеть (генератор) создаёт синтетические данные, другая (дискриминатор) пытается отличить их от реальных образцов из обучающей выборки. Состязательный процесс заставляет генератор производить всё более правдоподобные примеры, а дискриминатор — всё более точно распознавать подделки, что в пределе приводит к порождению данных, неотличимых от истинных. Интуитивно GAN часто описывают метафорой фальшивомонетчика (генератор) и полицейского (дискриминатор): первый учится изготавливать поддельные банкноты, второй — выявлять их, пока фальшивки не станут неотличимы от настоящих[1].
В отличие от многих генеративных моделей, GAN не требует явного вычисления плотности распределения данных, а использует неявное моделирование через состязательный процесс. Это позволяет синтезировать чрезвычайно реалистичные изображения, аудио, текст и другие типы данных. Благодаря своей гибкости GAN породили обширное семейство архитектур, включая DCGAN, WGAN, StyleGAN, CycleGAN и многие другие, и нашли применение в решении задач генерации лиц, повышения разрешения, перевода изображений, генерации текста по описанию и т. д.
Содержание |
История
Идея состязательного обучения восходит к началу 1990-х годов: в 1990 году Юрген Шмидхубер предложил принцип «минимизации предсказуемости» (predictability minimization), при котором одна сеть пытается сделать выходы другой сети максимально непредсказуемыми[1]. Однако современная концепция GAN была сформулирована и реализована Иэном Гудфеллоу с коллегами в статье «Generative Adversarial Nets» 2014 года[1]. Авторы показали, что многослойные перцептроны, обученные в минимаксной игре, способны генерировать узнаваемые изображения рукописных цифр MNIST и лиц.
Бурное развитие GAN началось после появления глубоких свёрточных GAN (DCGAN) в 2015 году[1], которые продемонстрировали стабильное обучение и качественные результаты на наборах изображений. В 2016 году были предложены улучшенные техники тренировки и метрика Inception Score[1]. Кардинального улучшения стабильности и разнообразия удалось добиться с появлением Wasserstein GAN (WGAN) в 2017 году[1], основанного на минимизации расстояния Вассерштейна вместо традиционной JS-дивергенции. В том же году Gulrajani и соавт. представили WGAN-GP с градиентным штрафом[1]. Параллельно развивались условные GAN (cGAN)[1], CycleGAN для непарного перевода изображений[1] и Pix2Pix для парного перевода[1]. Качество синтеза было поднято на новый уровень архитектурами прогрессивно растущих GAN[1] и особенно StyleGAN[1] и StyleGAN2[1]. Масштабирование GAN до рекордных размеров было продемонстрировано в BigGAN[1]. После 2020 года акцент в генеративном моделировании частично сместился в сторону диффузионных моделей, однако GAN продолжают активно развиваться и применяться благодаря скорости инференса и высокому качеству.
Архитектура
Стандартная GAN состоит из двух нейронных сетей, обучаемых одновременно в антагонистическом режиме:
Генератор
Генератор (generator) — нейросеть, преобразующая случайный шумовой вектор
, взятый из простого распределения
(чаще всего многомерного нормального или равномерного), в синтетический образец данных
. Архитектурно генератор, как правило, представляет собой декодирующую сеть: в случае изображений — обратную свёрточную (транспонированную свёртку), в случае последовательностей — рекуррентную или трансформерную. Задача
— захватить истинное распределение данных
и порождать примеры, неотличимые от реальных.
Дискриминатор
Дискриминатор (discriminator) — нейросеть, принимающая на вход как реальный образец
, так и сгенерированный
, и возвращающая скалярную величину, интерпретируемую как вероятность того, что вход является истинным. В исходной формулировке
. Обычно дискриминатор реализуется как бинарный классификатор (свёрточная сеть для изображений) с сигмоидой на выходе. В ряде вариантов (WGAN) дискриминатор заменяется «критиком», возвращающим произвольное вещественное число.
Математическая формулировка
GAN решают минимаксную задачу:
Дискриминатор стремится максимизировать вероятность правильной классификации реальных и синтетических данных, а генератор — минимизировать , то есть максимизировать вероятность ошибочной классификации сгенерированных примеров. При оптимальном дискриминаторе для фиксированного
:
,
где — неявное распределение, порождаемое генератором. Подстановка
в
сводит минимаксную игру к минимизации дивергенции Йенсена — Шеннона между
и
[1]:
Таким образом, глобальный минимум достигается при , когда дивергенция обнуляется.
На практике вместо минимизации для генератора часто максимизируют
, поскольку в начале обучения градиент
близок к нулю, и обучение замедляется. Такая замена даёт более сильный градиент при плохом качестве генерации[1].
Процесс обучения
Обучение GAN происходит итеративно путём попеременного обновления параметров дискриминатора и генератора стохастическим градиентным спуском (или его вариантами, такими как Adam). На каждой итерации:
- Дискриминатор делает
шагов (часто
): берётся мини-батч реальных примеров и мини-батч сгенерированных, вычисляется функция потерь
, и веса дискриминатора обновляются в направлении увеличения
.
- Генератор делает один шаг: вычисляется
, и веса генератора обновляются.
Теоретически при бесконечной ёмкости сетей и достаточном количестве итераций процесс сходится к равновесию Нэша, в котором и
. На практике динамика часто осциллирует, и сходимость не гарантируется.
Проблемы обучения и способы их решения
Нестабильность обучения
Основная трудность — негарантированная сходимость минимаксной игры. Параметры могут расходиться или входить в циклы. Нестабильность проявляется в резких скачках функции потерь и снижении качества генерации. Причина кроется в том, что при пересечении распределений градиент дискриминатора обращается в нуль, а вдали от пересечения дивергенция Йенсена — Шеннона ведёт к насыщению градиентов[1].
Wasserstein GAN (WGAN) решает эту проблему, заменяя JS-дивергенцию на расстояние Вассерштейна (Earth Mover’s Distance), которое всюду непрерывно и дифференцируемо. Дискриминатор заменяется «критиком», чьи веса ограничиваются (например, клиппингом). WGAN-GP (Gradient Penalty) заменяет клиппинг штрафом на норму градиента критика, обеспечивая ещё более стабильное обучение[1].
Спектральная нормализация (SN-GAN) стабилизирует дискриминатор, ограничивая его липшицеву константу путём нормирования весовых матриц[1].
Mode collapse
Генератор может начать воспроизводить лишь ограниченный набор мод (разновидностей) из реального распределения, теряя разнообразие. В крайней форме он выдаёт почти идентичные образцы независимо от . Причина — игра сходится к локальному равновесию, в котором генератор обманывает текущий дискриминатор, не покрывая все моды данных.
Меры борьбы включают:
- Мини-батчевую дискриминацию — дискриминатор анализирует сразу несколько примеров, оценивая их разнообразие[1].
- Unrolled GAN — генератор оптимизируется против нескольких будущих шагов дискриминатора[1].
- WGAN/WGAN-GP — использование расстояния Вассерштейна делает ландшафт потерь более гладким и снижает вероятность коллапса.
- Packing — подача нескольких сгенерированных изображений как одного пакета на вход дискриминатору[1].
Исчезающий градиент
На ранних этапах, когда генератор слаб, дискриминатор легко отличает подделки, и . Градиент
стремится к нулю, останавливая обучение генератора. Замена потери на максимизацию
, предложенная изначально, смягчает проблему[1].
Разновидности GAN
С момента появления разработано множество модификаций, адаптирующих идею состязательного обучения под конкретные задачи или улучшающих устойчивость и качество синтеза.
DCGAN (Deep Convolutional GAN)
Предложенная в 2015 году архитектура, которая заменила полносвязные слои на свёрточные и транспонированные свёртки. DCGAN использует пакетную нормализацию в генераторе и дискриминаторе, ReLU и LeakyReLU в качестве активаций, и исключает полносвязные слои на выходе. Продемонстрировала способность к генерации реалистичных изображений и плавную интерполяцию в латентном пространстве[1].
WGAN и WGAN-GP
WGAN[1] формулирует потерю на основе расстояния Вассерштейна, требуя от критика (дискриминатора) принадлежности к классу 1-липшицевых функций. Первоначально ограничение накладывалось клиппингом весов. WGAN-GP[1] добавляет к функции потерь критика штрафное слагаемое , где
— случайная точка на отрезке между реальным и сгенерированным примером. Это обеспечивает более плавное ограничение и улучшает сходимость.
Условные GAN (cGAN)
В условных GAN и генератор, и дискриминатор получают дополнительную информацию (метку класса, текст, изображение)[1]. Функция потерь модифицируется как
. Широко применяются в задачах преобразования изображения в изображение (Pix2Pix[1]) и синтеза изображений по тексту.
CycleGAN
CycleGAN[1] позволяет переводить изображения из одного домена в другой без парных соответствий (например, фотография → картина). Вводится дополнительная функция потерь цикличной согласованности (cycle consistency loss): , где
и
— два генератора, действующие в противоположных направлениях, с соответствующими дискриминаторами
и
. Это гарантирует, что преобразование сохраняет ключевые свойства объекта.
StyleGAN и StyleGAN2
Семейство архитектур, разработанное NVIDIA для сверхреалистичной генерации лиц[1][1]. Генератор StyleGAN состоит из сети отображения (mapping network), преобразующей в промежуточное латентное пространство
, и синтезирующей сети с блоками адаптивной нормализации экземпляра (AdaIN), которые внедряют стиль на разных масштабах. Добавление шума на каждом разрешении повышает стохастическую вариативность. StyleGAN2 исправляет артефакты «капель воды» и устраняет опору на промежуточный латентный код через перепроектирование нормализации. StyleGAN3 решает проблему нежелательных смещений координат, делая генерацию эквивариантной к сдвигу.
Progressive Growing of GAN (ProGAN)
Методика обучения GAN, при которой разрешение генератора и дискриминатора плавно увеличивается в процессе тренировки: сначала генерируются изображения низкого разрешения, затем постепенно добавляются слои для более высокого. Это ускоряет и стабилизирует обучение высококачественных моделей[1].
Метрики оценки качества
Качество генеративных моделей оценивается как визуально, так и количественно. Основные метрики:
- Inception Score (IS)[1] — вычисляет расхождение между условным распределением меток для сгенерированных изображений и маргинальным распределением меток, используя предобученный классификатор Inception. Высокое значение говорит о чёткости и разнообразии. Критикуется за нечувствительность к mode collapse в пределах одного класса.
- Fréchet Inception Distance (FID)[1] — измеряет расстояние Фреше между распределениями признаков (последнего скрытого слоя Inception) для реальных и сгенерированных выборок. Считается, что FID лучше коррелирует с человеческой оценкой реалистичности и разнообразия, чем IS. Чем ниже FID, тем выше качество.
- Precision and Recall для распределений[1] — обобщает понятия точности (какая доля сгенерированных образцов попадает в многообразие реальных данных) и полноты (какая доля многообразия реальных данных покрыта генератором), оценивая качество и разнообразие.
- Kernel Inception Distance (KID) — безсмещённый аналог FID, использующий ядерный метод Maximum Mean Discrepancy.
- Perceptual Path Length (PPL) — измеряет плавность латентного пространства, используемую для StyleGAN.
Практические применения
GAN нашли множество приложений:
- Генерация изображений и видео: создание реалистичных лиц (проекты ThisPersonDoesNotExist.com на основе StyleGAN), аватаров, пейзажей, предметов интерьера.
- Сверхразрешение (Super-Resolution): повышение чёткости спутниковых снимков, медицинской визуализации, исторических фотографий (SRGAN).
- Перевод изображений (Image-to-Image Translation): превращение набросков в фото (Pix2Pix), раскрашивание ч/б кадров, перенос стиля, преобразование дня в ночь, смена времён года.
- Синтез медицинских данных: генерация синтетических МРТ-снимков, снимков КТ для аугментации обучающих наборов, что особенно важно при нехватке размеченных реальных данных.
- Deepfake: замена лиц в видео, создание цифровых актёров; технологии применяются как в индустрии развлечений, так и в злонамеренных целях.
- Дизайн и искусство: автоматическая генерация логотипов, одежды, архитектурных форм, создание картин (портрет «Edmond de Belamy», созданный GAN, был продан на аукционе Christie’s).
- Аугментация данных: расширение обучающих выборок для других моделей компьютерного зрения, повышая их устойчивость и точность.
- Обработка звука и музыки: синтез речи, генерация музыкальных композиций, шумоподавление.
- Молекулярный дизайн: генерация новых химических соединений с заданными свойствами.
Современное состояние и перспективы
На начало 2020-х годов GAN остаются одной из ключевых парадигм генеративного моделирования. Семейство StyleGAN де-факто стало стандартом для синтеза и редактирования лиц и изображений высокого разрешения. StyleGAN3 решил проблему привязки к координатам, открыв путь к генерации плавной анимации. Новые направления включают GAN на основе трансформеров (ViTGAN, StyleSwin), GAN для текстового синтеза изображений (StyleGAN-T, GigaGAN), трёхмерную генерацию (EG3D) и генеративное моделирование видео (StyleGAN-V). Состязательное обучение также интегрируется в диффузионные модели для ускорения вывода и повышения резкости. Хотя диффузионные модели и авторегрессионные трансформеры доминируют в ряде областей, GAN сохраняют нишу благодаря скорости и непревзойдённому качеству в отдельных задачах. Исследования сосредоточены на дальнейшей стабилизации обучения, преодолении mode collapse, улучшении управляемости и интерпретируемости, а также на этических аспектах, связанных с генерацией дипфейков.
См. также
- Глубокое обучение
- Генеративная модель
- Вариационный автоэнкодер
- Диффузионная модель
- Авторегрессионная модель
- Свёрточная нейронная сеть
- Состязательная атака

