Изменения

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

Generative Adversarial Nets (GAN)

1946 байт добавлено, 23:54, 23 января 2021
Нет описания правки
'''end''' '''for'''
На практике не всегда удобно использовать уравнение описанной выше. В начале обучения, когда <tex>G</tex> плохо настроен дискриминатор <tex>D</tex> может не учитывать объекты, с высокой уверенностью в классификации, так как они сильно отличаются от тренировочного сета, в таком случае <tex>log(1 - D(G(z)))</tex> стагнирует. Чтобы избежать этого, можно вместо минимизации <tex>log(1 - D(G(z)))</tex> максимизировать <tex>log D(G(z))</tex>. На рисунке 3 представлена зависимость получаемого изображения от итерации обучения.
 
==Проблема запутывания (Проблема связанности характеристик)==
 
Сложность с генеративно состязательными сетями заключается в том, что непонятно, как им удается определять конкретные различные характеристики, как, например, возраст и пол, и связаны ли между собой эти характеристики.
 
Генератор хорошо обученной сети $-$ функция
<tex>g : Z \rightarrow X</tex>, где <tex>Z \subseteq \mathbb{R}^{d}</tex> $-$ скрытое пространство размерности <tex>d</tex>, для которого обычно применимо Гауссово распределение в многомерном случае.
<tex>X</tex> $-$ пространство изображений, где у каждого изображения существует набор характеристик вроде возраста или пола. Пусть нам дана функция оценки <tex>f_{S} : X \rightarrow S</tex>, где <tex>S \subseteq \mathbb{R}^{m}</tex> $-$ пространство изображений размерности <tex>m</tex>. Тогда <tex>s = f_{S}(g(z))</tex>, где <tex>z \in Z</tex>, <tex>s \in S</tex> $-$ связь между точкой в скрытом подпространстве и характеристиками получившегося изображения. Для функции оценок часто исользуют The Inception score и FID (The Frechet Inception distance), где главными критериями хорошо сгенерированных образцов является разнообразие отличительных черт в образцах и их выраженность.
 
Установлено, что при движении между двумя точками <tex>z_1</tex> и <tex>z_2</tex> характеристики меняются постепенно, без скачков. Тогда по этому направлению в $Z$ можно построить гиперплоскость.
Тогда сделаем предположение, при котором для любого бинарного параметра существует гиперплоскость, что все образцы с одной стороны от нее имеют одинаковое значение этого параметра.
 
Заведем следующую функцию "расстояния":
 
<tex>d(n, z) = n^{T}z</tex>, где <tex>n \in \mathbb{R}^{d}</tex>, <tex>n</tex> $-$ вектор нормали гиперплоскости.
Данная функция не подходит под определение расстояния из-за наличия отрицательных значений (но знак нам необходим для определения знака параметра характеристики).
Ожидается, что есть близкая к линеной зависимость оценки $f$ по данному параметру от "расстояния":
 
<tex>f(g(z)) = \lambda d(n, z)</tex>.
 
[[File:SubspaceManipulation.png|200px|thumb|right|Рисунок 16. Манипулирование подпространством. Источник:<tex>\href{https://arxiv.org/pdf/1907.10786.pdf}{\text{[x]}}</tex>]]
В таком случае выраженность характеристики зависит от "расстояния" до этой гиперплоскости.
Аналогично происходит и в случае нескольких характеристик:
 
<tex>f_{S}(g(z)) = \Lambda N^{T}z</tex>, где <tex>\Lambda</tex> - диагональная матрица с линейными коэффициентами <tex>\lambda_{i}</tex> для каждой из характеристик, <tex>N = [n_1, . . . , n_m]</tex> $-$ границы.
 
В случае если <tex>\Lambda</tex> {{---}} диагональная, то проблемы запутывания нет.
 
В противном случае проделаем манипуляции в скрытом подпространстве (рис. 16). Проецируя, можно найти такое направление <tex>n_1 - (n_1^{T} - n_2)n_2</tex> в скрытом подспространстве, что вдоль этих направлений у сгенерированных изображений будем изменяться характеристика $1$ в независимости от характеристики $2$.
 
При слишком большом "расстоянии" от гиперплоскости соответствующая характеристика слишком сильно делает лицо непохожим на изначальное, но это объяснимо нормальным распределением вектора шума.
 
Также в скрытом пространстве имеют место арифмитические операции. То есть можно складывать и вычитать вектора из этого пространства, чтобы как получать промежуточные результаты, так и убирать или добавлять какую-либо характеристику.
==Улучшение обучения GAN==
На текущий момент Mode collape является одной из главных проблем GAN, эффективное решение которой ещё ищется.
Возможные решения проблемы mode collapse:
* WGAN {{- --}} использование метрика Вассерштейна (англ. Wasserstein Loss) внутри функции ошибки.* UGAN (Unrolled GAN) {{--- }} для генератора используется функция потерь, которая не только от того, как текущий дискриминатор оценивает выходы генератора, но и от выходов будущих версий дискриминатора.
===Проблема стабильности обучения===
[[File:Unstable_X_Y.png.png|1305px650px|thumb|right|Рисунок 5. Симуляция поведения $x $ и $y$, где $x $ изменяется , чтобы лучше минимизировать $x*y$, а $y $ изменяется чтобы лучше минимизировать , чтобы минимизировать $-x*y$. Шаг градиентного спуска <tex>\alpha = 0.1</tex>. Источник: https://lilianweng.github.io/lil-log/2017/08/20/from-GAN-to-WGAN.html]]
Задача обучения двух состязательных сетей не является задачей поиска локального или глобального минимума функции, а является задачей поиска точки равновесия двух игроков. В теории игр это точка называется точкой равновесия Нэша (англ. Nash equilibrium) в которой оба игрока больше не получают выгоды, хотя следуют оптимальной стратегии.
Возможные решения проблемы стабильности:
*Регуляризация {{- --}} Добавление шума ко входам дискриминатора и соответствующая настройка гиперпараметров дискриминатора.*PGGAN (Progressive Growing of GANs - , разработана NVidia) {{--- }} в процессе работы разрешение изображений увеличивается от очень малых (4 на 4 пикселя), до конечных (1024 на 1024 пикселя), что позволяет тренировать сначала выявление крупных черт а затем более мелких, что крайне положительно сказывается на стабильности.*WGAN {{--- }} В качестве функции дивергенции используется метрика Вассерштейна, которая в большинстве случаев решает проблему расходимости интеграла в функции Дженсена-Шеннона.
==Применение==
Хоть CGAN и являются самыми популярными моделями для генерации образцов, зависимых от внешних данных, но лучше они умеют генерировать образцы с заданными ярко отличительными чертами (цвет волос, веснушки), но менее явные детали (форма бровей, сережки) вызывают затруднения (Но более поздний StyleGAN2 справляется и с этой задачей). C помощью отделения классификатора от дискриминатора, ControlGAN позволяет контролировать черты образцов. К тому же и само качество сгенерированных изображений может быть улучшено засчет того, что такое разделение на три составляющие дает возможность дискриминатору лучше выполнять свою главную задачу.
 
Более того, аугментация данных может помешать некоторым сетям, например, Auxiliary Classifier GAN (ACGAN) обучаться, хотя сам способ может улучшить качество классификации. К тому же в случае контролируемой генерации нет необходимости размечать тренировочные данные, выбираются желаемые характеристики объектов для генерации, а не условная информация (например, метка объекта).
[[File:ControlGANPrinciple.png|200px|thumb|right|Рисунок 15.
<tex>t_D</tex> $-$ метка для генератора, <tex>\alpha</tex> $-$ параметр для дискриминатора, <tex>\gamma_t</tex> $-$ параметр для входных меток на генератор, <tex>l</tex> $-$ метки образца <tex>x</tex>.
ControlGAN управляет тем, продолжать ли обучение на данных или обучаться генерировать образцы c помощью параметра $E$, который сохраняет значение функции потерь классификации. <tex>\gamma_tE</tex> $-$ параметр обучения, чтобы сохранить отношение между ошибками классификации сгенерированных образцов и изначальных данных. Для тренировки генератора используем оценочное значение <tex>\hat{E}</tex>, изменяющегося со временем полученное, использующее классификатор и генератор из сети. При значении <tex>t\hat{E}</tex>меньше $1$, генератор обучается на входных данных, иначе обучается генерировать образцы. С помощью этого параметра ControlGAN управляет, чему из вышеперечисленного обучаться. Сам параметр поддерживает постоянной отношение между ошибками.
<tex>E = \dfrac{L_C(l,G(z,l;\delta_G))}{L_C(l, x)}</tex>,
<tex>\gamma_t = \gamma_{t - 1} + r \{L_C(l, G(z,l;\delta_G)) - \hat{E } \cdot L_C(l, x)\}</tex>,
<tex>r</tex> $-$ коэффициент обучения для <tex>\gamma_t</tex>.
 
==Проблема запутывания (Проблема связанности характеристик)==
 
Сложность с генеративно состязательными сетями заключается в том, что непонятно, как им удается определять конкретные различные характеристики, как, например, возраст и пол, и связаны ли между собой эти характеристики.
 
Генератор хорошо обученной сети $-$ функция
<tex>g : Z \rightarrow X</tex>, где <tex>Z \subseteq \mathbb{R}^{d}</tex> $-$ скрытое пространство размерности <tex>d</tex>, для которого обычно применимо Гауссово распределение в многомерном случае.
<tex>X</tex> $-$ пространство изображений, где у каждого изображения существует набор характеристик вроде возраста или пола. Пусть нам дана функция оценки <tex>f_{S} : X \rightarrow S</tex>, где <tex>S \subseteq \mathbb{R}^{m}</tex> $-$ пространство изображений размерности <tex>m</tex>. Тогда <tex>s = f_{S}(g(z))</tex>, где <tex>z \in Z</tex>, <tex>s \in S</tex> $-$ связь между точкой в скрытом подпространстве и характеристиками получившегося изображения.
 
Установлено, что при движении между двумя точками <tex>z_1</tex> и <tex>z_2</tex> характеристики меняются постепенно, без скачков. Тогда по этому направлению в $Z$ можно построить гиперплоскость.
Тогда сделаем предположение, при котором для любого бинарного параметра существует гиперплоскость, что все образцы с одной стороны от нее имеют одинаковое значение этого параметра.
 
Заведем следующую функцию "расстояния":
 
<tex>d(n, z) = n^{T}z</tex>, где <tex>n \in \mathbb{R}^{d}</tex>.
Данная функция не подходит под определение расстояния из-за наличия отрицательных значений (но знак нам необходим для определения знака параметра характеристики).
Ожидается, что функция оценки $f$ по данному параметру линейно зависит от "расстояния":
 
<tex>f(g(z)) = \lambda d(n, z)</tex>.
 
[[File:SubspaceManipulation.png|200px|thumb|right|Рисунок 16. Манипулирование подпространством. Источник:<tex>\href{https://arxiv.org/pdf/1907.10786.pdf}{\text{[x]}}</tex>]]
В таком случае выраженность характеристики зависит от "расстояния" до этой гиперплоскости.
Аналогично происходит и в случае нескольких характеристик:
 
<tex>f_{S}(g(z)) = \Lambda N^{T}z</tex>, где <tex>\Lambda</tex> - диагональная матрица с линейными коэффициентами <tex>\lambda_{i}</tex> для каждой из характеристик, <tex>N = [n_1, . . . , n_m]</tex> $-$ границы.
 
В случае если <tex>\Lambda</tex> {{---}} диагональная, то проблемы запутывания нет.
 
В противном случае проделаем манипуляции в скрытом подпространстве (рис. 16). Проецируя, можно найти такое направление <tex>n_1 - (n_1^{T} - n_2)n_2</tex> в скрытом подспространстве, что вдоль этих направлений у сгенерированных изображений будем изменяться характеристика $1$ в независимости от характеристики $2$.
 
При слишком большом "расстоянии" от гиперплоскости соответствующая характеристика слишком сильно делает лицо непохожим на изначальное, но это объяснимо нормальным распределением вектора шума.
==См. также==
101
правка

Навигация