Генеративные состязательные сети (GAN) | Введение
Генеративные состязательные сети (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/