В мире, наполненном технологиями и искусственным интеллектом, становится все труднее отличить реальное от подделки. Посмотрите на эти две картинки ниже. Можете ли вы сказать, какая из них настоящая фотография, а какая создана искусственным интеллектом?

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

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

Базовая архитектура GAN

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

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

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

Модель генератора и дискриминатора

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

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

Модель дискриминатора, с другой стороны, решает, являются ли данные, которые ей передаются, из реальной выборки или фальшивой выборки, созданной сетью генератора посредством двоичной классификации. Дискриминаторная сеть обучена брать истинные данные и сгенерированные данные и соответствующим образом их классифицировать. Таким образом, вы можете сделать вывод, что основная цель дискриминатора - (как вы уже догадались!) уменьшить классификацию ошибка.

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

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

Процесс

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

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

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

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

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

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

Проблемы GAN

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

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

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

Приложения GAN

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

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

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

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



TL;DR

  • GAN используют подход к обучению без учителя, помещая две нейронные сети друг против друга с противоположными целями (так называемая модель генератора и дискриминатора).
  • Основная цель модели генератора состоит в том, чтобы максимизировать ошибку классификации, создаваемую моделью дискриминатора, путем создания чрезвычайно реалистичных «фальшивых» изображений для представления дискриминатору.
  • Основная цель модели дискриминатора - минимизировать ошибку классификации между изображениями настоящими и поддельными.
  • Градиенты между генератором и моделью дискриминатора постоянно обновляются в зависимости от характеристик противоположной модели.
  • GAN часто сталкиваются с двумя проблемами: балансировка стабильности между моделью генератора и дискриминатора и определение положения определенных объектов для развития целостной перспективы изображения.
  • У GAN есть широкий спектр приложений: от создания изображений до обучения классификаторов изображений с ограниченным объемом данных до текста и обнаружения изображений.

Дополнительные ресурсы

Привет! Мне 16 лет, и я интересуюсь машинным обучением и биотехнологиями. Если вы хотите видеть больше моего контента и того, что я публикую, подумайте о подписке на мою рассылку новостей! Ознакомьтесь с моей рассылкой здесь! Также загляните на мои страницы LinkedIn и Github. Если вам интересно поговорить об автономных транспортных средствах или просто о технологиях в целом, зарегистрируйтесь в чате, используя мой Calendly.