Глубокое обучение изменило способ работы, вычислений и сделало нашу жизнь намного проще. Как заметил Андрей Карпаты, это действительно программное обеспечение 2.0, поскольку мы научили машины разбираться в вещах сами. Существует множество существующих методов глубокого обучения, которые можно объяснить его успешным успехом. Но глубокие генеративные модели не оказали серьезного воздействия, что связано с их неспособностью аппроксимировать трудноразрешимые вероятностные вычисления. Ян Гудфеллоу смог найти решение, которое могло бы обойти эти трудности, с которыми сталкиваются генеративные модели, и создал новую гениальную модель под названием Generative Adversarial Networks. Я считаю, что это удивительно, когда вы смотрите на возможности GAN. Прежде чем перейти к введению в GAN, давайте рассмотрим несколько примеров, чтобы понять, на что способны GAN и ее варианты.

Примеры

  • Учитывая сегментированное изображение дороги, сеть может заполнять детали такими объектами, как автомобили и т. Д. Сеть может преобразовывать черно-белое изображение в цветное. Имея аэрофотоснимок, сеть может находить дороги на изображении. Он также может заполнить детали фотографии по краям.

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

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

Вступление

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

Как это работает

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

Целевая функция

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

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

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

Недостатки

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

Заключение

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

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

  1. Https://arxiv.org/abs/1406.2661
  2. Http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture13.pdf
  3. Https://github.com/ZZUTK/Face-Aging-CAAE
  4. Https://github.com/phillipi/pix2pix