Изменения

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

Generative Adversarial Nets (GAN)

62 байта добавлено, 14:37, 9 октября 2020
м
Постановка задачи и метод
==Постановка задачи и метод==
Как было указано ранее в описании метода, мы хотим обучить две модели: генеративную и дискриминативную. Поскольку, удобнее всего использовать многослойные перцептроны для обучения состязательной модели, будем использовать именно их для детального описания работы модели.
Чтобы вывести вероятностное распределение генератора <tex>p_{g}</tex> над набором данных <tex>X</tex>, определим априорную вероятность шума <tex>p_{z}(z)</tex> и представим генератор, как отображение <tex>G(z, \gamma_{g})</tex>, где <tex>G</tex> дифференциируемая дифференцируемая функция, представленная многослойным перцептроном с параметром <tex>\gamma_{g}</tex>. Аналогичным образом представим второй многослойный перцептрон <tex>D(z, \gamma_{d})</tex>, который на выход подает одно скалярное значение - вероятность того, что <tex>x</tex> пришло из тренировочных данных, а не <tex>p_{g}</tex>. Во время тренировки <tex>D</tex> мы стремимся маскимизировать максимизировать вероятность правильной идентификации объектов из тренировочной и сгенерированной выборок. И в тоже то же время тренируем <tex>G</tex> так, чтобы минимизировать <tex>log(1 - D(G(z)))</tex>:
Другими словами, <tex>D</tex> и <tex>G</tex> играют в "минимакс игру":
<center><tex>\min\limits_{G}\max\limits_{D} V(D,G) = \mathop{E}\limits_{x \sim p_{data}}[logD(x)] + \mathop{E}\limits_{z \sim p_{z}(z)}[log(1-D(xG(z)))]</tex></center>
==Интуитивный процесс тренировки==
[[File:GANIntuitive.jpg|500px|thumb|right|Иллюстрация процесса тренировки порождающих состязательных сетей GAN. Источник: https://arxiv.org/pdf/1701.07875.pdf]]
Генеративные состязательные сети обучаются путем одновременного обновления дискриминирующего распределения (<tex>D</tex> синяя пунктирная линия), так чтобы дискриминатор мог различать объекты из распределения тренировочного сета(черная пунктирная в точку линия) и из распределения генератора (<tex>DG</tex> зеленая сплошная линия). Нижняя горизонтальная линия представляет собой область, из которой составлена выборка <tex>z</tex>, в нашем случае равномерно. Горизонтальная линия над ней является частью области <tex>x</tex>. Стрелками на картинке показано, как отображение <tex>x = G(z)</tex>, накладывает неравномерное распределение <tex>p_{g}</tex> на тренировочное. <tex>G</tex> сжимается в областях с высокой плотностью и расширяется в областях с низкой.Рассмотрим описанный на картинках процесс. (a) Близкая сходимость состязающейся пары: <tex>p_{g}</tex> похоже на распределение <tex>p_{data} и D</tex> частично-точный классификатор. (b) Во внутреннем цикле алгоритма <tex>D</tex> обучается отличать объекты из тренировочных данных, сходясь к <tex>\frac{p_{data}(x)}{p_{data}(x) + p_{g}(x)}</tex>. (c) После обновления <tex>G</tex> градиент <tex>D</tex> привел <tex>G(z)</tex> к передвижению в область, с большей вероятностью быть классифицированным как данные. (d) После нескольких шагов обучения <tex>G</tex> и <tex>D</tex> придут в состояние, в котором не смогу улучшиться, так как будет выполняться условие <tex>p_{g} = p_{data}</tex> и диксриминатор не сможет различать два распределения и его выход всегда будет <tex>D(x) = \frac{1}{2}</tex>.
==Оригинальный алгоритм обучения GAN==
*[[:Порождающие модели|Порождающие модели]]
*[[:Вариационный автокодировщик|Variational autoencoder (VAE)]]
*[[:Автокодировщик|Автокодировщик]]
==Примечания==
174
правки

Навигация