Привет всем,

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

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

Последние могут генерировать новые шаблоны в данных. В результате они могут создавать новые изображения, новый текст, новую музыку. Чтобы выразить это в строгой математической форме, дискриминативные модели пытаются оценить апостериорную вероятность p (y | x), которая представляет собой вероятность выходного образца (например, рукописной цифры) с учетом входного образца ( изображение рукописной цифры). С другой стороны, генеративные модели оценивают совместную вероятность p (x, y), которая представляет собой вероятность того, что как входная выборка, так и выходная выборка будут истинными одновременно. На самом деле он пытается вычислить распределение набора классов, а не границу между ними.

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

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

Что такое генерирующие состязательные сети?

Генеративные состязательные сети были представлены в 2016 году Яном Гудфеллоу в одной из самых многообещающих статей об ИИ за последнее десятилетие. Это метод обучения без учителя, основанный на простой предпосылке:

Вы хотите создать новые данные. Что вы делаете? Вы строите две модели . Вы обучаете первого генерировать поддельные данные, а второго - отличать настоящие от поддельных. И вы ставите их соревноваться друг с другом.

Бум! Вот и все. Я бы хотел, чтобы это было так просто. Это не так. Но это главный принцип GAN.

Хорошо, давайте поговорим о деталях. Первая модель - это нейронная сеть, называемая Генератором. Задача генератора - создавать фальшивые данные, не содержащие ничего, кроме шума. Вторая модель, Дискриминатор, получает в качестве входных данных как реальные изображения, так и поддельные (созданные генератором) и учится определять, является ли изображение поддельным или нет. Когда вы заставляете их соревноваться друг с другом и одновременно тренируете их, начинается волшебство:

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

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

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

Что ж, мы не уверены. Оптимизация GAN - одно из самых активных направлений исследований на данный момент, и постоянно появляется много новых статей. Я попытаюсь объяснить здесь основу, и для этого мне понадобится немного математики и немного теории игр (!!!). Пожалуйста, не уходи. Останься со мной, и, в конце концов, все обретет смысл.

Как их тренировать?

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

Другими словами, первый игрок пытается максимизировать свою награду, минимизируя награду своего оппонента. Второй игрок пытается достичь той же цели.

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

Мы представляем потери как минимаксную функцию:

Что мы имеем здесь?

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

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

Надеюсь, ты все еще здесь. Это основная идея и называется состязательной тренировкой. Конечно, есть несколько часто встречающихся подводных камней, таких как:

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

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

Я закончу некоторыми ключевыми фактами. Если вы пропустили всю статью, ничего страшного. Но не пропустите:

  • Генеративный искусственный интеллект используется для генерации новых данных из реальных.
  • Самая известная модель GAI - это генерирующая состязательная сеть.
  • GAN - это две нейронные сети, участвующие в игре. Первый пытается создать новые поддельные данные, а второй пытается отличить их от реальных. По мере тренировок они оба совершенствуются в своем деле.
  • Есть работа, которую нужно проделать по обучению GAN
  • Приложения GAN в реальном времени - это… (как бы это описать одним словом? Хммм…) HUUUUUGE.

Финито…

Если у вас есть какие-либо мысли, комментарии, вопросы или вы просто хотите быть в курсе моих последних новостей, не стесняйтесь связаться со мной в Linkedin, Twitter, Instagram, Github или на моем сайте.

Первоначально опубликовано на сайте sergioskar.github.io 13 сентября 2018 г.