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

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

Впервые GAN были представлены в статье «Generative Adversarial Nets», написанной Яном Дж. Гудфеллоу и др. еще в 2014 году. С тех пор GAN прошли долгий путь. В 2017 году первые лица были сгенерированы с помощью GAN, и были созданы первые CAN (Creative Adversarial Networks), которые могут генерировать оригинальные абстрактные картины. Через год после этого GAN смогла создать картину «Эдмон де Белами», которая была продана за 432 500 долларов. В 2019 году группа исследователей из Samsung создала систему для создания видеозаписей разговора человека с использованием только одной фотографии этого человека. В прошлом году группа исследователей из Nvidia научила систему на основе GAN воссоздавать игру Pac-Man, просто наблюдая за ней.

Теперь, когда мы закончили краткий урок истории, позвольте мне объяснить две основные части GAN, одну за другой.

Генератор

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

Дискриминатор

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

Архитектура

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

Обучение GAN

Поскольку GAN состоит из двух моделей, она должна пройти два процесса обучения. Это не только усложняет обучение GAN, но также затрудняет определение конвергенции. Чтобы преодолеть эти сложности, GAN проходят обучение в чередующиеся периоды. Сначала модель дискриминатора обучается для одной или нескольких эпох, затем модель генератора обучается для одной или нескольких эпох. Затем этот процесс повторяется для продолжения обучения моделей генератора и дискриминатора. Результатом этого непрерывного обучения станет очень продвинутая модель GAN, которая будет выдавать результаты, которые даже людям кажутся реальными данными.

Например, если вы посетите https://thispersondoesnotexist.com/, вы увидите фотографии людей. Шокирует то, что каждое изображение, которое вы увидите, будет подделкой. Это изображения людей, которых не существует, просто люди, придуманные GAN. Один только этот пример убедит вас, насколько продвинутыми могут быть эти сети GAN для создания данных из воздуха, способных обмануть даже людей.

Теперь давайте посмотрим на процесс обучения GAN с точки зрения дискриминатора и генератора.

Обучение дискриминатора

Обучение дискриминатора в основном похоже на обучение нормальной модели классификации. Модель обучается классифицировать, являются ли ее входные данные настоящими или поддельными. Реальные изображения используются как положительные случаи, а изображения из генератора - как отрицательные. Генератор остается постоянным во время процесса обучения дискриминатора. Конечно, модель генератора будет создавать данные во время этого процесса, но ни один из весов в генераторе не будет изменен во время обучения дискриминатора. .

Дискриминатор связан с двумя функциями потерь; потеря дискриминатора и потеря генератора. В процессе обучения дискриминатора используются только потери дискриминатора, а потери генератора игнорируются. Во время обучения дискриминатор обновляет свои веса, используя обратное распространение.

Тренировка генератора

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

Функция потерь

Есть несколько функций потерь, которые можно использовать в GAN. Поскольку это краткое введение, я упомяну только Minimax, функцию потерь, которая была предложена в «Generative Adversarial Nets», статье, которая познакомила мир с GAN.

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

На этом мое краткое введение в Generative Adversarial Networks подходит к концу. Вы должны заметить, что это область глубокого обучения, в которой ведется много активных исследований, и есть много интересных попыток использовать GAN для самых разных задач. Если вы хотите узнать больше о GAN, я предлагаю вам использовать следующие ресурсы, перечисленные ниже.

Дальнейшее чтение











использованная литература