Изменения

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

Generative Adversarial Nets (GAN)

856 байт добавлено, 15:25, 24 января 2021
Проблемы обучения GAN: 4
Большинство GAN'ов подвержено следующим проблемам:
* Схлопывание мод распределения (англ. mode collapse): генератор коллапсирует, т.е. то есть выдает ограниченное количество разных образцов;.* Проблема стабильности обучения (англ. non-convergence): параметры модели дестабилизируются и не сходятся;.* Исчезающий градиент (англ. diminished gradient): дискриминатор становится слишком "сильным", а градиент генератора исчезает и обучение не происходит;.* Проблема запутывания (англ. disentanglement problem): выявление корреляции в признаках, не связанных (слабо связанных) в реальном мире;.
* Высокая чувствительность к гиперпараметрам.
[[File:mode_collapse.png|600px|thumb|right|Рисунок 4. Проблема mode collapse в GAN сетях, на нижнем ряду представлен обычный GAN, на верхнем {{---}} UGAN с 10 обратными шагами (англ. unrolled steps). Источник: https://arxiv.org/pdf/1611.02163.pdf]]
В процессе обучения генератор может прийти к состоянию, при котором он будет всегда выдавать ограниченный набор выходов. При этом пространство, в котором распределены сгенерированные изображения, окажется существенно меньше , чем пространство исходных изображений.
Главная причина этого в том, что генератор обучается обманывать дискриминатор, а не воспроизводить исходное распределение.
Если генератор начинает каждый раз выдавать похожий выход, который является максимально правдоподобным для текущего дискриминатора, то зависимость от $z$ падает, а следовательно и градиент $G(z)$ стремиться к 0. Лучшей стратегией для дискриминатора будет улучшение детектирования этого конкретного изображения.
Так на следующих итерациях наиболее вероятно, что генератор придет к другому изображению, хорошо обманывающему текущий дискриминатор, а дискриминатор будет учиться отличать конкретно это новое изображение. Этот процесс не будет сходиться и количество представленных мод не будет расти, поэтому приблизиться к исходному распределению не удастся. На рисунке 4 наглядно представлена проблема mode collapse и то как генератор "путешествует" по модам не приближаясь к целевому распределению.
[[File:mode_collapse_UGAN.png|600px|thumb|right|Рисунок 4. Проблема mode collapse в GAN сетях, на нижнем ряду представлен обычный GAN, на верхнем {{---}} UGAN с 20 обратными шагами (англ. unrolled steps). Источник: https://arxiv.org/pdf/1611.02163.pdf]] На текущий момент Mode mode collape является одной из главных проблем GAN, эффективное решение которой ещё ищется.
Возможные решения проблемы mode collapse:
* WGAN {{---}} использование метрики Вассерштейна (англ. Wasserstein Loss) внутри функции ошибки, позволяет дискриминатору быстрее обучаться выявлять повторяющиеся выходы, на которых стабилизируется генератор<ref>[https://developers.google.com/machine-learning/gan/problems Common Problems]</ref>.
[[File:Unstable_X_Y.png|600px|thumb|right|Рисунок 5. Симуляция изменения $x$ и $y$ с помощью градиентного спуска, где изменяя $x$ мы пытается минимизировать величину $x*y$, а при изменении $y$, наоборот, стараемся ее максимизировать. Шаг градиентного спуска <tex>\alpha = 0.1</tex>. Источник: https://lilianweng.github.io/lil-log/2017/08/20/from-GAN-to-WGAN.html]]
Задача обучения двух состязательных сетей дискриминатора и генератора в общем смысле не является задачей поиска локального или глобального минимума функции, а является задачей поиска точки равновесия двух игроков. В теории игр это эта точка называется точкой равновесия Нэша (англ. Nash equilibrium) в которой оба игрока больше не получают выгоды, хотя следуют оптимальной стратегии. Рассмотрим задачу поиска этой точки на игрушечном примере, где $G$ хочет максимизировать произведение $xy$ а $D$ {{---}} минимизировать. Будем обновлять параметры $x$ и $y$ на основе градиентного спуска:
<tex> \Delta x = \alpha\frac{\delta(x*y)}{ \delta(x)} </tex>
<tex> \Delta y = - \alpha\frac{\delta(x*y)}{ \delta(y)} </tex>
Если изобразить на графике поведение $x$,$y$ и $xy$ (рис. 5) то станет ясно, что они не сойдутся, а амплитуда их движения будет только увеличиваться.
В оригинальной статье про GAN используется дивергенция Дженсена-Шеннона (англ. Jensen–Shannon divergence), которая в свою очередь использует дивергенцию Кульбака—Лейблера Кульбака-Лейблера (англ. Kullback–Leibler Kullback-Leibler divergence)::<math>D_\text{KL}(P \parallel Q) = \int_{-\infty}^\infty p(x) \log\left(\frac{p(x)}{q(x)}\right)\, dx</math>, где $P$ и $Q$ {{---}} $k$-мерные абсолютно непрерывные распределения, $p(x)$ и $q(x)$ {{---}} функции плотности этих распределений, заданные на <math>X \subseteq R^k</math>.Нетрудно заметить, что при наличии $x$, в которых $q(x)=0$, весь интеграл разойдется, что плохо влияет на сходимость обучения.
Возможные решения проблемы стабильности:
*Регуляризация {{---}} Добавление шума ко входам дискриминатора и соответствующая настройка гиперпараметров дискриминатора.
*PGGAN (Progressive Growing of GANs, разработана NVidia<ref>[https://research.nvidia.com/sites/default/files/pubs/2017-10_Progressive-Growing-of/karras2018iclr-paper.pdf PROGRESSIVE GROWING OF GANS FOR IMPROVEDQUALITY, STABILITY, AND VARIATION]</ref>) {{---}} в процессе работы разрешение изображений увеличивается от очень малых (4 на 4 пикселя), до конечных (1024 на 1024 пикселя), что позволяет тренировать сначала выявление крупных черт а затем более мелких, что крайне положительно сказывается на стабильности.
*WGAN {{---}} В качестве функции дивергенции используется метрика Вассерштейна, которая в большинстве случаев решает проблему расходимости интеграла в функции Дженсена-Шеннона.
20
правок

Навигация