Генеративные состязательные сети (GAN) | Введение

Опубликовано: 24 Июля, 2021

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

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

Например:
Если CNN обучен классифицировать собак и кошек и изображение загружено в этот CNN, он может определить, есть ли на этом изображении собака или кошка. Поэтому его также можно назвать алгоритмом классификации.

Чем отличаются GAN?

Сети GAN можно разделить на две части: генератор и дискриминатор .

Дискриминатор -
Эту часть GAN можно считать аналогичной тому, что делают CNN. Дискриминатор - это сверточная нейронная сеть, состоящая из множества скрытых слоев и одного выходного слоя, основное различие здесь заключается в том, что выходной уровень GAN может иметь только два выхода, в отличие от CNN, которые могут иметь выходы в зависимости от количества меток, на которых они обучаются.
Выход дискриминатора может быть либо 1, либо 0 из-за специально выбранной функции активации для этой задачи, если выход равен 1, то предоставленные данные являются реальными, а если выход равен 0, то он относится к ним как к поддельным данным.

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

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

Как показано на изображении выше, вектор случайных значений предоставляется в качестве входных данных для Inverse-CNN, и после прохождения через скрытые слои и функции активации изображение принимается в качестве выходных данных.

Совместная работа генератора и дискриминатора:
Как мы уже обсуждали, Discriminator обучается на реальных данных, чтобы классифицировать, являются ли данные истинными или нет, поэтому работа Discriminator заключается в том, чтобы определить, что реально, а что - подделка.

Теперь генератор начинает генерировать данные из случайных входных данных, а затем эти сгенерированные данные передаются в Дискриминатор в качестве входных данных. Теперь Дискриминатор анализирует данные и проверяет, насколько близко они должны быть классифицированы как реальные, если сгенерированные данные не содержат достаточного количества функций, чтобы быть классифицируются как реальные Дискриминатором, затем эти данные и связанные с ними веса отправляются обратно в Генератор с использованием обратного распространения, чтобы он мог скорректировать веса, связанные с данными, и создать новые данные, которые лучше, чем предыдущие. Эти только что сгенерированные данные снова передаются в Дискриминатор, и это продолжается.
Этот процесс повторяется до тех пор, пока Дискриминатор классифицирует сгенерированные данные как поддельные, каждый раз, когда данные классифицируются как поддельные, и с каждым обратным распространением качество данных становится все лучше и лучше, и наступает время, когда Генератор становится настолько точным, что становится трудно отличить реальные данные от данных, генерируемых генератором.

Проще говоря, Дискриминатор - это обученный парень, который может сказать, что реально, а что фальшиво, а Генератор пытается обмануть Дискриминатора и заставить его поверить, что сгенерированные данные реальны, с каждой неудачной попыткой Генератор учится и совершенствуется, чтобы производить данные более реальными. нравиться. Это также можно назвать соревнованием между Генератором и Дискриминатором.

Дополнительная информация - https://www.geeksforgeeks.org/generative-adversarial-network-gan/