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

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

Что такое GAN?

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

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

Как учатся GAN

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

Как GAN используются прямо сейчас

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

Создание искусства

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

Создание новых изображений

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

Заполнение недостающих частей изображений

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

Текст в изображение

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

Генерация рукописных цифр с использованием GAN

Я создал GAN, который анализирует рукописные цифры и постепенно учится создавать новые изображения с нуля, фактически обучая нейронную сеть письму. Я обучил этот GAN, используя TensorFlow и набор данных MNIST.

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

Здесь мы можем увидеть весь процесс обучения тому, что нужно, чтобы получить реалистично выглядящие рукописные цифры, в данном случае, в частности, число 6. Оно начинается с очень расплывчатых чисел и вообще не имеет числа, а затем постепенно приближается к как на самом деле выглядит 6.

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

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

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

Если вам понравилась эта статья:

  • Поделитесь им со своей сетью.
  • Посетите мой сайт, чтобы узнать больше об этом проекте и больше обо мне!
  • Следите за моими LinkedIn и Medium, чтобы не отставать от моих успехов в машинном обучении!