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

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

Неконтролируемый и враждебный

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

И в этом заключается враждебный характер этого. У нас есть генератор, создающий поддельные образцы и отправляющий их на дискриминатор. Дискриминатор смотрит на заданный образец и выясняет: «Это поддельный образец из генератора? Или это настоящий образец из набора доменов?»

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

Цветочная сила

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

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

Теперь ответ открывается как генератору, так и дискриминатору. Цветок был фальшивым, и исходя из этого, генератор и дискриминатор изменят свое поведение.

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

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

Теперь, часто с точки зрения изображений, генератор и дискриминатор реализованы как CNN. Это сверточные нейронные сети. CNN — отличный способ распознать закономерности в данных изображения и войти в своего рода область идентификации объекта. У нас есть отдельное видео о CNN, но это отличный способ действительно реализовать генератор и дискриминатор в этом сценарии.

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

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

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

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