Генеративная состязательная сеть

Материал из MachineLearning.

Перейти к: навигация, поиск

Генеративная состязательная сеть (Generative Adversarial Network, GAN) — это архитектура нейронных сетей, предназначенная для обучения без учителя на неразмеченных данных с целью моделирования их распределения и генерации новых синтетических примеров. Ключевой инновацией метода является состязательная постановка, при которой две сети — генеративная и дискриминативная — обучаются одновременно, решая противоположные задачи. В отличие от классических подходов, требующих явного построения функции плотности вероятности (например, вариационных автоэнкодеров) или её аппроксимации, GAN неявно обучают распределение через процесс минимаксной оптимизации, что позволяет обходить проблему оценки трудноразрешимого нормировочного коэффициента.

Содержание

Введение

До появления генеративных состязательных сетей в 2014 году (работа Яна Гудфеллоу и соавторов) доминирующие подходы к генеративному моделированию сталкивались с принципиальным компромиссом между гибкостью модели и вычислительной эффективностью. Явные модели плотности, требующие вычисления функции правдоподобия, либо делали чрезмерно упрощающие предположения о структуре данных, либо вынуждали прибегать к дорогостоящим аппроксимациям (например, MCMC). GAN предложил радикально иной путь: вместо того чтобы явно вычислять вероятность данных при текущих параметрах, можно научить второй классификатор (дискриминатор) отличать реальные данные от синтетических, а затем использовать сигнал этого классификатора для улучшения генератора.

Интуитивно понятная аналогия, описывающая суть процесса, — это противостояние фальшивомонетчика и полицейского. Генератор (фальшивомонетчик) стремится создавать подделки, неотличимые от настоящих образцов. Дискриминатор (полицейский) старается выявить малейшие различия между подлинниками и подделками. Ключевой момент заключается в том, что обе стороны совершенствуют свои навыки итеративно. Полицейский, научившись распознавать грубую подделку, вынуждает фальшивомонетчика изобретать более изощрённые методы, что, в свою очередь, тренирует ещё более зоркого полицейского. Этот процесс не имеет статичного учителя: градиент, указывающий генератору направление улучшения, вычисляется сквозь дискриминатор. Теоретически в пределе такой игры генератор обучается воспроизводить точную копию распределения реальных данных, а дискриминатор теряет возможность отличать выборки и вынужден угадывать с вероятностью 50%. Такой подход является частным случаем обучения с неявной плотностью и принципиально отличается от явного моделирования распределения вероятностей.

Формальная постановка

С математической точки зрения генеративная состязательная сеть представляет собой минимаксную игру двух игроков, задаваемую функцией ценности


\min_G \max_D V(D,G)=
\mathbb{E}_{\mathbf{x}\sim p_{\mathrm{data}}}
[\log D(\mathbf{x})]
+
\mathbb{E}_{\mathbf{z}\sim p_{\mathbf{z}}}
[\log(1-D(G(\mathbf{z})))].

Здесь G — генератор, отображающий случайный вектор \mathbf{z} из скрытого пространства с распределением p_{\mathbf{z}} (например, многомерным нормальным) в пространство данных. Дискриминатор D получает на вход образец и оценивает вероятность того, что он принадлежит истинному распределению p_{\mathrm{data}}.

С информационно-теоретической точки зрения дискриминатор максимизирует логарифмическую вероятность правильной классификации реальных и сгенерированных объектов. Это эквивалентно минимизации бинарной кросс-энтропии — стандартной функции потерь задачи бинарной классификации.

Для фиксированного генератора оптимальный дискриминатор имеет вид


D_G^*(\mathbf{x})=
\frac{p_{\mathrm{data}}(\mathbf{x})}
{p_{\mathrm{data}}(\mathbf{x})+p_g(\mathbf{x})}.

Подстановка данного выражения в функцию ценности позволяет получить функционал, зависящий только от генератора,


C(G)=
-\log 4+
2\,JSD(p_{\mathrm{data}}\parallel p_g),

где JSD обозначает дивергенцию Йенсена—Шеннона между истинным распределением данных p_{\mathrm{data}} и распределением, задаваемым генератором p_g.

Именно этот результат объясняет эффективность GAN. Минимизация дивергенции Йенсена—Шеннона приводит к тому, что модельное распределение становится всё ближе к распределению обучающих данных. В глобальном оптимуме выполняется равенство


p_g=p_{\mathrm{data}},

при котором дивергенция обращается в нуль, а дискриминатор перестаёт различать реальные и синтетические объекты, выдавая для любого входа значение


D(\mathbf{x})=\frac12.

Архитектура

Генератор

Генератор реализует детерминированное (или неявное стохастическое) отображение G(\mathbf{z}; \theta_g) из латентного пространства \mathcal{Z} в пространство данных \mathcal{X}. Скрытое пространство играет роль низкоразмерного многообразия, параметризующего вариативность данных. Точки, близкие в \mathcal{Z}, порождают семантически схожие объекты в \mathcal{X}, что позволяет выполнять интерполяцию и векторную арифметику над признаками. Архитектурно генератор обычно представляет собой обратную свёрточную сеть (транспонированные свёртки), которая последовательно повышает пространственное разрешение карт признаков, преобразуя вектор шума в полноценное изображение. Ключевым требованием является дифференцируемость всего преобразования, чтобы градиенты дискриминатора могли быть переданы на веса генератора без разрыва вычислительного графа.

Дискриминатор

Дискриминатор D(\mathbf{x}; \theta_d) — это стандартный бинарный классификатор. Использование сигмоидальной функции активации на выходе и бинарной кросс-энтропийной потери — естественный выбор, проистекающий из необходимости получить оценку вероятности принадлежности к реальным данным. Однако важно понимать, что в более продвинутых модификациях (например, WGAN) дискриминатор перестает быть классификатором в строгом смысле и превращается в «критика», оценивающего расстояние между распределениями.

Алгоритм обучения

Обучение происходит поочередно. На каждом шаге дискриминатор обучается различать минибатч реальных данных и минибатч сгенерированных данных. Затем генератор делает один шаг градиентного спуска, стремясь максимизировать \log D(G(\mathbf{z})) (что на практике обеспечивает лучший градиентный сигнал, чем минимизация \log (1 - D(G(\mathbf{z})))). Одновременное обновление весов не допускается, так как дискриминатор должен всегда стремиться к условному оптимуму для текущего генератора, предоставляя осмысленный градиент. Нарушение этого принципа эквивалентно обучению без установленной цели и приводит к расходимости.

Проблемы обучения

Процесс обучения GAN печально известен своей нестабильностью, что обусловлено фундаментальными математическими и численными причинами, а не просто инженерными сложностями.

  • Исчезающие градиенты у генератора. Если дискриминатор чрезмерно хорошо обучен и способен идеально разделять реальные и сгенерированные объекты, его выходы приближаются к нулю для подделок. В этой области сигмоида насыщается, её производная становится пренебрежимо малой. Градиентный сигнал, поступающий через цепное правило обратного распространения к генератору, затухает, останавливая его обучение. Генератор не получает информации о том, как именно улучшить образцы, чтобы пересечь решающую границу классификатора.
  • Коллапс мод (mode collapse). Это наиболее фундаментальная патология оригинальной постановки. Минимаксная игра с JSD не штрафует генератор за игнорирование мод распределения, если тот научился идеально воспроизводить лишь подмножество данных (например, одну цифру в MNIST). Причина в том, что если генератор вырабатывает очень правдоподобные, но однообразные образцы, а дискриминатор локально переобучается их отвергать, генератор может переключиться на другую узкую моду вместо того, чтобы расширить покрытие. Система перескакивает между модами без полного охвата распределения.
  • Нестабильность сходимости. Задача оптимизации не является выпуклой и представляет собой игру с ненулевой суммой на практике (из-за несимметричных апдейтов). Стохастический градиентный спуск не гарантирует сходимости к седловой точке даже в простых играх. Поведение траекторий часто является осциллирующим: улучшение генератора ослабляет дискриминатор, что ухудшает градиент для следующего шага генератора, образуя незатухающий цикл.

Основные разновидности

Многочисленные модификации GAN направлены на преодоление перечисленных выше проблем.

DCGAN (Deep Convolutional GAN)
Решает проблему структурной нестабильности первых полносвязных архитектур. Авторы предложили набор архитектурных эмпирических правил: замена пулинга на свёртки с увеличенным шагом (stride) и транспонированные свёртки, использование пакетной нормализации в обоих сетях, исключение полносвязных скрытых слоев. Стабилизация обучения достигается за счёт того, что нормализация предотвращает экстремальные значения активаций, не давая дискриминатору выигрывать слишком быстро.
Conditional GAN (cGAN)
Устраняет фундаментальную неконтролируемость процесса генерации. В условной генеративной состязательной сети (Conditional GAN, cGAN) генератор и дискриминатор получают дополнительную информацию \mathbf{y} (например, метку класса, текстовое описание или другое условие). При этом генератор реализует отображение


G(\mathbf{z},\mathbf{y}),

а дискриминатор оценивает пары вида


D(\mathbf{x},\mathbf{y}).

Тем самым вместо моделирования безусловного распределения данных строится условное распределение


p(\mathbf{x}\mid\mathbf{y}).

Это превращает задачу в задачу управляемой генерации. Дискриминатор оценивает не только реалистичность синтезированного объекта, но и его соответствие заданному условию \mathbf{y}. Благодаря этому становится возможной генерация изображений заданного класса, синтез изображений по текстовому описанию и другие задачи условного моделирования.

Wasserstein GAN (WGAN)
Критикует саму математическую основу: дивергенция Йенсена — Шеннона разрывна, что порождает нулевые или бесконечные градиенты в областях с непересекающимися носителями распределений. WGAN заменяет JSD на расстояние Вассерштейна (Earth-Mover Distance), которое из оптимального транспорта непрерывно и дифференцируемо почти всюду. Это дает теоретически обоснованный, плавно меняющийся градиентный сигнал даже при далеких распределениях. Дискриминатор преобразуется в «критика», аппроксимирующего расстояние, а ограничение 1-липшицевости накладывается через клиппинг весов.
WGAN-GP (Wasserstein GAN with Gradient Penalty)
Улучшает WGAN, заменяя грубый клиппинг весов (который ограничивал выразительность критика) на дифференцируемый градиентный штраф. Это прямая реализация условия, что норма градиента критика по отношению ко входу должна быть равна единице почти всюду, что является необходимым условием оптимальности в дуальной формулировке Вассерштейна.
StyleGAN
Нацелен на разделение факторов вариативности (disentanglement) и решение проблемы «запутанности» скрытого пространства. Вместо прямой подачи вектора шума на вход, он подает константный тензор, а скрытый код \mathbf{z} через сеть отображения (mapping network) преобразуется в стилевые векторы, которые управляют статистиками карт признаков на разных масштабах через операцию Adaptive Instance Normalization (AdaIN). Это позволяет иерархически управлять грубыми признаками (форма лица, ракурс) на ранних слоях и тонкими (цвет волос, текстура) на поздних.
CycleGAN
Решает задачу переноса стиля без парных обучающих примеров. Вводится функция потерь согласованности цикла (cycle-consistency loss): если перевести изображение из домена A в домен B, а затем обратно в A, должен восстановиться оригинал. Этот самоконтролируемый сигнал предотвращает коллапс мод, когда все изображения отображаются в один правдоподобный, но бессодержательный образ из целевого домена.
Pix2Pix
Адаптирует GAN для задачи перевода «изображение-в-изображение» с парным датасетом. Ключевое нововведение — комбинирование состязательной потери (отвечающей за высокочастотную правдоподобность текстур) с L1-потерей (отвечающей за низкочастотное глобальное соответствие структуры). L1 сама по себе даёт размытый результат (усреднение множества возможных текстур), а adversarial loss в одиночку галлюцинирует несуществующие детали. Синтез обоих сигналов решает проблему качества детализированного синтеза.

Оценка качества генеративных моделей

Оценка генеративных моделей, работающих в высокоразмерном пространстве изображений, нетривиальна и не сводится к логарифмическому правдоподобию, которое GAN не вычисляет.

  • Inception Score (IS) использует предобученный классификатор Inception. Вычисляется условное распределение классов для сгенерированных изображений. Высокий score достигается, когда распределение обладает низкой энтропией (изображения чётко классифицируются, то есть осмысленны) и высокой разнообразием классов (маргинальное распределение равномерно). Проблема метрики — она не чувствительна к коллапсу внутри класса, не сравнивает статистики с реальными данными напрямую.
  • Fréchet Inception Distance (FID) устраняет этот недостаток, рассматривая активации скрытого слоя Inception как многомерное гауссовское распределение. FID вычисляет расстояние Вассерштейна-2 между двумя такими гауссианами для реальных и сгенерированных данных. Снижение FID коррелирует с ростом разнообразия и реалистичности, включая внутриклассовую вариативность.
  • Precision и Recall для генеративных моделей позволяют декомпозировать FID на две компоненты: precision (какая доля сгенерированных образцов попадает в многообразие реальных) и recall (какую долю многообразия реальных данных покрывают сгенерированные образцы). Это дает прямой инструмент для количественной оценки как реалистичности, так и наличия коллапса мод.

Связь с другими генеративными подходами

Вариационные автоэнкодеры (VAE) максимизируют вариационную нижнюю оценку правдоподобия, что делает их стабильными и предоставляет скрытое представление, но накладывает ограничение гауссовости априорного распределения. Это часто приводит к размытым семплам из-за точечной потери восстановления.

Авторегрессионные модели (PixelCNN, GPT) факторизуют распределение на условные произведения, достигая отличных значений правдоподобия, но их генерация последовательна, что делает их крайне медленными на этапе синтеза.

Диффузионные модели в настоящее время доминируют по качеству генерации, превосходя GAN, и решают проблему коллапса мод. Однако их критическим недостатком является скорость инференса, требующая сотен или тысяч итеративных шагов шумоподавления. Именно в этом остаётся ключевое преимущество GAN: генерация происходит за один прямой проход сети, что критически важно для задач реального времени (потоковое видео, интерактивные редакторы). Поэтому исследование GAN остаётся актуальной областью глубокого обучения.

Приложения

  • Генерация и синтез изображений: создание фотореалистичных лиц, объектов, сцен. Повышение разрешения (super-resolution) старых фото и видео.
  • Синтез данных: аугментация обучающих выборок для распознавания в условиях малого количества реальных примеров.
  • Стилизация и перевод изображений: перенос художественного стиля, смена времени суток на фото, конвертация спутниковых снимков в картографические схемы.
  • Обнаружение аномалий: подход AnoGAN и его производные обучают генератор воспроизводить только нормальные образцы. При подаче аномалии процесс восстановления скрытого вектора дает плохую реконструкцию, что служит маркером дефекта в медицине или промышленности.
  • Генерация последовательностей: синтез музыки, речи и текста, где состязательный подход используется для устранения проблемы экспозиционного смещения, характерной для teacher forcing.

Литература

Ошибка цитирования Входные данные недействительны, так как не предполагаются

Личные инструменты