«То, что я не могу создать, я не понимаю».

- Ричард Фейнман

Привет, технические специалисты!

GAN была представлена ​​Яном Голдфеллоу и Яном Гудфеллоу и другими исследователями из Монреальского университета, в том числе Йошуа Бенджио, в 2014 году. Многие другие исследователи, которые ссылаются на GAN, директор по исследованиям искусственного интеллекта Facebook Янн ЛеКун назвал состязательность «самой интересной». идея за последние 10 лет в ML ». GAN считаются творческой нейронной сетью, которая больше похожа на рисование картины или сочинение новой песни. Генеративная состязательная сеть состоит из двух архитектур нейронных сетей, которые конкурируют друг с другом, чтобы обеспечить лучший результат. Сети GAN набирают популярность благодаря огромному потенциалу изучения распределения данных, а затем имитации данных.

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

Давай зажжем!

Генеративные модели

Согласно Википедии

«Генеративная модель - это модель условной вероятности наблюдаемого X при заданной цели y, символически {P (X | Y = y)} »

Независимо от своего определения Генеративная модель вращается вокруг создания случайных экземпляров как независимых, так и зависимых переменных или наблюдений за независимыми переменными x, заданными зависимой переменной y. С другой стороны медали, у нас есть дискриминативная модель или дискриминативный классификатор (без модели) можно использовать для «различения» значения целевой переменной Y с учетом наблюдения x.

Чтобы обучить генеративные модели, мы сначала собираем большой объем данных в некоторой области (например, думаем о миллионах изображений, предложений или звуков и т. Д.), А затем обучаем модель генерировать подобные данные. Обычно в нейронных сетях мы обучаем модель на меньшем количестве данных, чем количество параметров, поэтому модели вынуждены генерировать данные внутри себя. Основная цель всех типов генеративных моделей - изучить распределение обучающих данных для создания новых точек данных с некоторыми вариациями. Нейронные сети в основном имитируют истинное распределение точек данных для моделирования распределения.

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

Генеративные рекламные сети

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

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

GAN в основном состоит из двух нейронных сетей, которые конкурируют друг с другом в рамках игры с нулевой суммой, т. е. генератора и дискриминатора.

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

Генератор

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

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

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

Механизм GAN

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

В случае Discriminator, если мы способны различать настоящие или поддельные изображения, также пытается определить, является ли конкретное изображение настоящим или поддельным. Мы должны быть достаточно уверены в том, что одно изображение взято из исходного набора данных или из поддельного набора данных. Для этого мы можем соответствующим образом пометить изображения и выполнить классическое обратное распространение, позволяющее Дискриминатору со временем учиться и лучше различать изображения. Если дискриминатор провел правильную классификацию, то у нас будут положительные отзывы в виде градиентов потерь, в случае отказа отрицательные отзывы вознаграждаются!

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

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

Вот подробное объяснение некоторых популярных GAN

Глубокие сверточные генерирующие неблагоприятные сети (DCGAN)

  • Нейронная архитектура с глубоким обучением, способная генерировать выходные данные, имитирует структуру данных, доступных в обучающем наборе.
  • Основное различие между генерирующей состязательной сетью и DCGAN заключается в том, что DCGAN заменяет полностью связанные уровни модели генерирующей состязательной сети на сверточные.
  • Давайте начнем с реального примера, когда Фальсификатор (он же «генератор») пытается создать поддельные картины и передать их как реальное изображение.

  • С другой стороны, дискриминатор на самом деле пытается поймать фальсификатора, используя свои знания о настоящих картинах. По мере обучения фальсификатор становится все лучше и лучше, подделывая реальную картину.

  • Генератор, однако, имеет вектор случайного шума и генерирует изображение. Сгенерированное изображение попадает в дискриминатор, который сравнивается между обучающей выборкой и реальным изображением.
  • Дискриминатор возвращает число от 0 (поддельное изображение) до 1 (реальное изображение), что является не чем иным, как типичной классификацией.

История дескриминатора

Следует отметить

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

  • Размер фильтра для каждого сверточного слоя следует увеличить вдвое.
  • Вместо понижающей дискретизации рекомендуется развернутый сверточный слой.
  • Содействовать пакетной нормализации на каждом слое, игнорируя входной слой, потому что он ухудшает ковариационный сдвиг. Используйте Leaky ReLU в качестве функции активации, поскольку это помогает избежать эффекта исчезающего градиента.

История генератора

Следует отметить

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

Условные GAN (cGAN)

  • GAN можно расширить на условные операторы, если и генератор, и дискриминатор зависят от некоторой дополнительной информации о y. . y - это метка или флаг класса.
  • Основная идея cGAN заключается в обучении генерирующей состязательной сети с условием. Кондиционирование может выполняться, подавая y как в дискриминатор, так и в генератор в качестве вспомогательного входного уровня.
  • Для различения реальных и поддельных данных метки также помещаются в Дискриминатор в качестве входных данных во время процесса обучения.

Лапласовская пирамида GAN (LAPGAN)

  • LAPGAN - это в основном линейное обратимое представление изображения, состоящее из набора полосовых изображений, разнесенных на октаву друг от друга, плюс низкочастотный остаток.
  • Этот GAN использует множественный генератор и дискриминатор с разными уровнями пирамиды Лапласа.
  • LAPGAN используется в основном потому, что производит очень качественные изображения.
  • Архитектура субдискретизированного изображения на каждом слое пирамиды. Повышающее масштабирование также выполняется для получения некоторого шума от условной GAN на этих уровнях до тех пор, пока он не достигнет своего исходного размера.

StackGAN

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

  • В основном он состоит из двух этапов в StackGAN. Этап I. Преобразование формы и цвета объекта на основе текстового описания выводит изображения с низким разрешением.
  • GAN этапа II принимает входные данные этапа I, а также текстовые описания и генерирует изображения высокого разрешения с реалистичными деталями.

InfoGAN’s

  • InfoGAN - это теоретико-информационное расширение GAN, способное изучать разрозненные представления неконтролируемым образом.
  • Используется, когда ваш набор данных очень сложен, а также при обучении cGAN, когда набор данных не помечен.
  • InfoGAN также может использоваться как метод извлечения функций из ввода изображения.

GAN со сверхвысоким разрешением (SRGAN)

  • SRGAN’s - это способ построения GAN, который представляет собой глубокую нейронную сеть, которая используется вместе с враждебной сетью для создания изображений с более высоким разрешением.
  • Используется для оптимального масштабирования исходных изображений с низким разрешением, чтобы улучшить их детали, минимизируя при этом ошибки.

Откройте для себя междоменные отношения с генерирующими враждебными сетями (Disco GANS)

  • Автор технического документа DISCO GANS предлагает метод, основанный на генеративных состязательных сетях, которые учатся обнаруживать отношения между различными доменами.

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

Покажите мне код!

Пример DCGAN на базе Keras

Итак, мы подошли к концу удивительного путешествия GAN. Однако существует еще много типов GAN, но мы не сможем охватить их все в этой статье!

Ссылки

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

Ура!