Изменения

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

Generative Adversarial Nets (GAN)

9113 байт добавлено, 09:57, 21 января 2021
Нет описания правки
Процедура обучения '''LAPGAN''' (рис. 13). Начинаем с изображения <tex>I</tex> размера <tex>64 \times 64</tex> из тренировчного набора. Берем <tex>I_0 = I </tex> и сжимаем его(красная стрелка) чтобы получить <tex>I_1</tex>; затем расширяем его(зеленая стрелка), чтобы получить <tex>l_0</tex> низко-частотное изображение <tex>I_0</tex>; с равной вероятностью используем его для создния либо реального, либо сгенерированного примера для дискриминатора <tex>D_0</tex>. В случае реального изображения(синяя стрелка) считаем цветовой контраст <tex>h_0 = I_0 - l_0</tex>, которая подается на вход дискриминатору <tex>D_0</tex>, для опредления реальное изображение или нет. В случае сгенерированного(розовая стрелка), генеративная сеть <tex>G_0</tex> получает на вход шум <tex>z_0</tex> и <tex>l_0</tex>. Оно генерирует цветовой контраст <tex>\tilde{h_0} = G_0(z_0,l_0)</tex>, который подается на вход <tex>D_0</tex>. В обоих случаях дискриминатор также получает <tex>l_0</tex> (оранжевая стрелка). Оптимизируя минмакс игру условной порождающей сети <tex>G_0</tex> учится генерировать реалистичную высоко-частотную структуру <tex>\tilde{h_0}</tex> с помощью низко-частотного представления <tex>l_0</tex>. Такая процедура проходит на всех слоях, кроме последнего, где можно уже использовать обычный GAN.
 
==ControlGAN (Controllable Generative Adversarial Networks)==
 
[[File:ControlGANconcept.png|200px|thumb|right|Рисунок 14. Концепт модели ControlGAN. Источник: https://arxiv.org/pdf/1708.00598.pdf]]
 
Контролируемые порождающие состязательные сети (англ. Controllable Generative Adversarial Nets, '''ControlGAN''') $-$ модифицированная версия алгоритма GAN, состоящая из трех нейронных сетей: генератор, дискриминатор, классификатор. Концепт модели ControlGAN (рис. 14). Как и в обычной версии алгоритма, генератор пытается обмануть дискриминатор, и одновременно с этим пытается быть классифицированным как нужный класс в классификаторе.
 
Хоть CGAN и являются самыми популярными моделями для генерации образцов, зависимых от внешних данных, но они умеют генерировать образцы лишь с глобальными задуманными отличительными чертами. К примеру, сгенерировать изображения лица со светлыми волосами не составляет проблем, но более тонкие черты, как приоткрытый рот или наличие сережек вызывают затруднения. C помощью отделения классификатора от дискриминатора, ControlGAN позволяет контролировать черты образцов. К тому же и само качество сгенерированных изображений может быть улучшено засчет того, что такое разделение на три составляющие дает возможность дискриминатору лучше выполнять свою главную задачу.
 
[[File:ControlGANPrinciple.png|200px|thumb|right|Рисунок 15.
Принцип работы. Источник:https://arxiv.org/pdf/1708.00598.pdf]]
 
Иллюстрация принципа работы сети (рис. 15). Зеленые линии $-$ результат работы классификатора; оранжевые $-$ дискриминатора. Серые фигуры $-$ образцы из разных классов. Результат генератора обозначается голубыми участками, которыми он показывает распределение образцов, как и пытается быть классифицированным верно.
 
ControlGAN минимизирует следующие уравнения:
 
<tex>\delta_D = arg min\{\alpha L_D(t_D, D(x;\delta_D)) + (1 - \alpha)L_D((1 - t_D), D(G(z, l; \delta_G);\delta_D))\}</tex>
 
<tex>\delta_D = arg min\{\gamma_t L_C(l, G(z, l; \delta_G)) + L_D(t_D, D(G(z, l; \delta_G);\delta_D)\}</tex>
 
<tex>\delta_C = arg min\{L_C(l, x; \delta_C)\}</tex>
 
<tex>t_D</tex> $-$ метка для генератора, <tex>\alpha</tex> $-$ параметр для дискриминатора, <tex>\gamma_t</tex> $-$ параметр для входных меток на генератор, <tex>l</tex> $-$ метки образца <tex>x</tex>.
 
ControlGAN управляет тем, продолжать ли обучение на данных или обучаться генерировать образцы c помощью параметра $E$, который сохраняет значение функции потерь классификации. <tex>\gamma_t</tex> $-$ параметр обучения, чтобы сохранить значение <tex>E</tex>, изменяющегося со временем <tex>t</tex>.
 
<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)) - 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. Манипулирование подпространством. Источник:https://arxiv.org/pdf/1907.10786.pdf]]
В таком случае выраженность характеристики зависит от "расстояния" до этой гиперплоскости.
Аналогично происходит и в случае нескольких характеристик:
 
<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$.
 
При слишком большом "расстоянии" от гиперплоскости соответствующая характеристика слишком сильно делает лицо непохожим на изначальное, но это объяснимо нормальным распределением вектора шума.
 
 
==См. также==
* [https://arxiv.org/pdf/1612.03242.pdf StackGAN Paper]
* [https://arxiv.org/pdf/1506.05751.pdf LAPGAN Paper]
* [https://arxiv.org/pdf/1708.00598.pdf ControlGAN Paper]
* [https://arxiv.org/pdf/1907.10786.pdf Interpreting the Latent Space Paper]
[[Категория: Машинное обучение]]
[[Категория: Порождающие модели]]
101
правка

Навигация