Основы глубокого обучения

Дифференцируемые генераторные сети: введение

Введение в VAE, GAN и их проблемы

Введение

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

В этой статье я рассмотрю основы генеративных моделей и функционирование двух основных дифференцируемых сетей генераторов. Это вариационные автокодеры (VAE) и генерирующие состязательные сети (GAN).

Генеративные модели

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

Конечная цель генеративных моделей - генерировать синтетические данные, максимально похожие на обучающие данные. Таким образом, все дело в моделировании функции плотности вероятности по нашим обучающим данным p (x). Учитывая набор обучающих данных, генеративные модели пытаются построить функцию, которая позволяет нам определить, насколько вероятно, что любая точка данных принадлежит обучающему набору. Эта плотность позволяет генеративным моделям делать интересные вещи, например оценивать вероятность вновь сгенерированной точки данных p (x | y = y) или выборки из плотности для генерации новых данных.

Генеративные модели: GMM

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

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

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

Весь смысл генеративных моделей состоит в том, чтобы построить нашу функцию плотности по пространству обучающих данных p (x). GMM делают это, аппроксимируя это скрытое пространство через набор гауссовых плотностей. Аппроксимация скрытого пространства с помощью набора гауссианов выгодна, поскольку позволяет нам оценивать любую новую выборку в этом пространстве, которую мы можем использовать, чтобы понять, соответствует ли новая выборка нашим существующим данным. Более того, имея полностью определенное скрытое пространство, можно производить выборку каждого из кластеров, генерируя новые синтетические данные.

Дифференцируемые сети генераторов

При создании сетей генераторов нам нужны дифференцируемые модели, которые изучают соответствие между скрытой переменной Z (из случайного распределения) с распределением наших данных X.

Сети дифференцируемых генераторов предполагают, что информация, переносимая каждым образцом, может быть представлена ​​в более простом пространстве, чем пространство данных. Даже если данные находятся в многомерном пространстве (например, изображение с высоким разрешением), информация в изображении может быть выражена в более простом многообразии. Допустим, у нас есть изображения рукописных цифр, даже если обучающие данные находятся в многомерном пространстве (изображения могут иметь размер 32x32 пикселя), основная информация за каждым изображением намного меньше. Размер всех возможных рукописных цифр намного меньше, чем все возможные изображения размером 32x32 пикселя.

Генеративные модели создают низкоразмерное скрытое пространство над скрытой переменной Z, которое они затем используют для аппроксимации пространства обучающих данных. Есть два основных способа использовать это скрытое пространство для создания новых данных:

  • Чтобы преобразовать скрытую переменную Z в новую выборку X (приблизительные выборки из p (x))
  • Чтобы преобразовать Z в распределение по X (сгенерируйте функцию для аппроксимации p (x), а затем выберите из нее)

Таким образом, генеративные модели либо генерируют новые выборки (генерируют X из Z), либо генерируют распределения, где все выборки в этом подпространстве являются репрезентативными для обучающих данных (генерируют распределение по X из Z).

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

Вариационные автокодеры

Оптимизация VAE

И GMM, и VAE пытаются построить распределение по обучающим данным X, из которого затем можно произвести выборку для генерации новых данных (сгенерировать распределение по X из Z). Однако VAE не создают прямой PDF-файл по нашим обучающим данным X, вместо этого они используют предположение, изложенное ранее, и изучают соответствие между распределением по нашей скрытой переменной Z и нашими обучающими данными X (где скрытое пространство в Z равно намного проще, чем пространство наших данных X).

В VAE мы выбираем очень простое распределение нашей скрытой переменной Z (обычно нормально распределенное) с формой N (0, I). Делая это, VAE предполагают, что изменение данных является гауссовым. Возьмем пример рукописной цифры из предыдущего: если вы подумаете обо всех возможных рукописных «тройках», вариация между всеми возможными рукописными «тройками» будет примерно гауссовской. На самом деле это часто хорошее предположение, поскольку шум, который можно найти, например, в данных датчика, часто бывает гауссовым.

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

где p (x | z, θ) - апостериорная (вероятность наших обучающих данных X с учетом наших скрытых выборок Z и наших параметров модели θ), а p (z) - это априорное распределение, которое, как мы предполагаем, является гауссовым со средним нулевым и единичной ковариационной матрицей.

Цель состоит в том, чтобы найти набор весов θ, который максимизирует эту вероятность, максимизация p (x) дает:

Полученное выражение известно как ELBO (Evidence LOwer Bound), и понимание его терминов важно.

Первый член - это ожидание вероятности наших данных с учетом нашей скрытой переменной (мы хотим максимизировать это). Это говорит нам, производит ли модель хорошие выборки X при Z. Максимизация этого члена фактически эквивалентна минимизации среднеквадратичной ошибки автокодировщиков, когда предполагается, что апостериорная вероятность является гауссовой.

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

Архитектура ВАЭ

Структура VAE разделена на две части: кодировщик и декодер. Кодировщик уменьшает размерность наших входных данных до двух измерений. Эти измерения используются для параметризации нашего нормального распределения скрытого пространства p (z). Затем из этого распределения могут быть взяты выборки, которые используются в качестве входных данных для декодера. Декодер пытается восстановить точку данных в пространстве обучающих данных, которая соответствует выборке в скрытом пространстве.

Таким образом, VAE сопоставляют входные данные со скрытым пространством по Z. Затем декодер отображает это скрытое пространство обратно в пространство изображения по X. Выборка по скрытому распределению p (z) и передача входных данных через декодер по существу позволяет нам брать выборку из p (x). это была наша цель!

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

Генеративные состязательные сети

Теория GAN

До сих пор мы видели, что VAE способны генерировать распределение по обучающим данным p (x) из скрытого распределения p (z). GAN по-разному генерируют данные. Вместо создания распределения они генерируют образцы, которые, вероятно, принадлежат этому распределению.

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

Как видите, этот способ создания изображений в корне отличается от способа создания изображений VAE. Мы не создаем функцию плотности p (x), мы вместо этого создаем образцы, аналогичные тем, что в p (x).

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

Однако у GAN есть некоторые проблемы:

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

GAN сложно обучить из-за четырех основных препятствий

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

Глубокие сверточные сети GAN (DCGAN) решают некоторые из этих проблем, предлагая следующее:

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

В документе DCGANs сделаны эти выводы после серии экспериментов. С тех пор DCGAN широко используются для генерации данных в самых разных областях.

Вывод

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

Поддержите меня

Надеюсь, это помогло вам, если вам понравилось, вы можете подписаться на меня!

Вы также можете стать средним участником, используя мою реферальную ссылку, получить доступ ко всем моим статьям и многому другому: https://diegounzuetaruedas.medium.com/membership

Другие статьи, которые могут вам понравиться

VAE: косвенная выборка из скрытого распространения изображений

Методы ядра: простое введение

Фильтрация Калмана: простое введение