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

Что такое ГАН??

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

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

В 2014 году Ян Гудфеллоу и другие исследователи опубликовали статью, в которой впервые представили GAN в Университете Монреаля.

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

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



Проще говоря, мы можем взять в качестве примера наши ежедневные электронные письма. учитывая все слова в электронном письме, работа дискриминатора состоит в том, чтобы предсказать, является ли сообщение спамом или нет. В этом примере спам является одним из ярлыков, а слова электронного письма — функциями, из которых состоят входные данные. Если мы сформулируем эту проблему математически, то метка будет называться y, а функция — x. Формулировка p (y|x) используется для обозначения «вероятности y при данном x».

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

Лучший способ отличить генеративное от дискриминативного вот так:

  • Дискриминативные модели изучают диапазон между классами
  • • Генеративные модели моделируют распределение отдельных классов

Как работают GAN??

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

• Первая модель называется Генератор и предназначена для создания новых данных, подобных реальным. Генератор может создавать данные, а дискриминатор проверяет, являются ли данные реальными или поддельными.

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

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

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

Как обучить простую модель GAN??

Здесь показаны основные шаги для обучения простой модели GAN:

I. Образец шумовых данных и реального набора данных размером x.

II. Обучите Дискриминатор этим данным.

III. Произведите выборку другого подмножества шума с тем же размером x.

IV. Обучите генератор этим данным.

V. Повторить с шага 1

Выглядит довольно просто из шагов, но как это работает на самом деле: Генератор принимает входные данные с дополнительным шумом и возвращает изображение, которое называется сгенерированным изображением. Сгенерированное изображение сравнивается с фактическим набором данных и передается в дискриминатор. Затем дискриминатор принимает как настоящие, так и поддельные изображения и вероятности возврата, а также число от 0 до 1, как логистическая регрессия. На выходе 1 представляет собой реальное изображение, что означает, что снятое изображение взято из реального набора данных, а 0 — как фальшивое, что означает, что снятое изображение создано не из фактического набора данных.

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

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

Вся модель GAN также определяется как минимаксная игра с целевой функцией:

max 𝑉 (𝐷) ​​min 𝑉 (𝐺) = 𝐸𝑥 ~ 𝑝𝑑𝑎𝑡𝑎 (𝑥) [log 𝐷 (𝑥)] + 𝐸𝑧 ~ 𝑝𝑧 (𝑧) [log (1 - 𝐷 (𝐺 (𝑧)))]]]

Проблемы с GAN??

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

Многие модели GAN страдают от огромной проблемы:

I. Иногда модель не может сочетать неконвергентность.

II. Генератор рушится, поэтому выдает ограниченную достоверность выборочных данных.

III. Дисбаланс между дискриминатором и генератором приводит к переподгонке данных

IV. Высокая чувствительность к выбору гиперпараметров.

Типы ГАН:

Существует много типов GAN в зависимости от его внутренней структуры или применения.

Некоторые из типов GAN:

  • Традиционный ГАН
  • Условный GAN (CGAN)
  • Глубокий сверточный GAN (DCGAN)
  • Цикл ГАН
  • Стиль ГАН
  • ГАН сверхвысокого разрешения (СРГАН)
  • ПиксельГАН
  • ЛСГАН и др..

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