
Порождающие состязательные сети — это метод машинного обучения, в котором две нейронные сети соревнуются за генерацию реалистичных синтетических данных.GAN — архитектура из двух нейросетей, которые играют в минимаксную игру: генератор G пытается обмануть дискриминатор D, создавая правдоподобные данные, а D учится отличать подделку. Равновесие наступает, когда G воспроизводит распределение реальных данных настолько точно, что D уже не может отличить — его точность падает до случайного угадывания (50%). Как в гонке вооружений между изготовителем фальшивых купюр и банковским экспертом, каждая сторона поднимает планку.
Предложены Яном Гудфеллоу и соавторами (2014) как способ обучения порождающих моделей без явного моделирования распределения данных. Идея восходит к состязательным играм и теории минимакса. Быстро стали популярны благодаря способности генерировать реалистичные изображения, звук и видео. Дальнейшие модификации — DCGAN, StyleGAN, CycleGAN — решили проблемы нестабильности обучения и повысили качество.
Во время обучения G и D обновляются по очереди. Дискриминатор получает реальный образец и выдачу генератора, вычисляет свой проигрыш (логистическую функцию ошибки). Генератор корректирует веса так, чтобы максимизировать ошибку дискриминатора — то есть чтобы подделка казалась настоящей. Градиенты от D проходят через G, формируя скрытое представление. Проблема: исчезающие градиенты, если D слишком силён, поэтому часто используют нестандартные функции потерь (Wasserstein GAN).
Генерация фотореалистичных лиц, создание дизайнов одежды, улучшение медицинских снимков — везде, где нужно правдоподобно домыслить детали.
Самые эффектные дипфейки и восстановление старых фильмов обязаны именно GAN.
| x | переменная | выборка данных — sample |
| z | переменная | выборка скрытой переменной — latent variable |
| D(x) | переменная | выход дискриминатора для реальных данных — discriminator output |
| G(z) | переменная | выход генератора для скрытой переменной — generator output |
| V(D,G) | переменная | функция ценности игры — value function |
| min_G | оператор | минимизация по параметрам генератора — minimization over generator |
| max_D | оператор | максимизация по параметрам дискриминатора — maximization over discriminator |
| E_{x~p_data} | оператор | математическое ожидание по эмпирическому распределению данных — expectation over data distribution |
| E_{z~p_z} | оператор | математическое ожидание по априорному распределению скрытых переменных — expectation over latent distribution |
| log | оператор | натуральный логарифм — логарифм |



















