Как вы можете сжимать данные или даже генерировать данные из случайных значений? Вот что такое автоэнкодер и вариационный автоэнкодер.

Умение упрощать означает устранять ненужное, чтобы необходимое могло говорить — Ганс Хофманн

Контекст — сжатие данных

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

Здесь в игру вступают автоэнкодер (AE) и вариационный автоэнкодер (VAE). Это сквозные сети, которые используются для сжатия входных данных. И автоэнкодер, и вариационный автоэнкодер используются для преобразования данных из пространства с более высокой размерностью в пространство с более низкой размерностью, что по существу обеспечивает сжатие.

Автоэнкодер — AE

Что это такое?

Автоэнкодер используется для изучения эффективных вложений неразмеченных данных для заданной конфигурации сети. Автоэнкодер состоит из двух частей: энкодера и декодера. Кодер сжимает данные из многомерного пространства в низкоразмерное пространство (также называемое скрытым пространством), в то время как декодер делает обратное, то есть преобразует скрытое пространство обратно в многомерное пространство. Декодер используется для обеспечения того, чтобы скрытое пространство могло захватить большую часть информации из пространства набора данных, заставляя его выводить то, что было передано в качестве входных данных для декодера.

Блок-схема

Блок-схему можно увидеть ниже.

Во время обучения входные данные x передаются функции кодировщика e_theta(x). Входные данные проходят через серию слоев (параметризованных переменной theta), уменьшая их размеры для получения сжатого скрытого вектора z. Количество слоев, тип и размер слоев, размер скрытого пространства являются параметрами, контролируемыми пользователем. Сжатие достигается, если размер скрытого пространства меньше размера входного пространства, по существу избавляясь от избыточных атрибутов.

Декодер d_phi(z) обычно (но не обязательно) состоит из слоев, близких к слоям, используемым в кодировщике, но в обратном порядке. Почти комплементарный слой слоя — это тот, который можно использовать для отмены операций (в некоторой степени) исходного слоя, таких как транспонирование слоя преобразования в слой преобразования, объединение в разделение, полное подключение к полностью подключенному и т. д.

Функция потерь

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

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

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

Визуализация скрытого пространства

Ниже приведен пример скрытого пространства, созданного путем обучения сети на наборе данных MNIST.

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

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

Зачем использовать AE для сжатия?

Скрытое пространство линейного автоэнкодера сильно напоминает собственное пространство, полученное в ходе анализа данных методом главных компонент. Линейный автоэнкодер с размерностью входного пространства n и размерами скрытого пространства, установленными на m‹n, будет охватывать один и тот же результат. векторное пространство, натянутое на первые m собственные векторы PCA. Если AE похож на PCA, зачем использовать AE? Сила AE заключается в его нелинейности. Добавление нелинейности (такой как нелинейные функции активации и больше скрытых слоев) делает AE способным изучать довольно мощные представления входных данных в более низких измерениях с гораздо меньшей потерей информации.

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

Что это такое?

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

Блок-схема

Блок-схему VAE можно увидеть ниже. Во время обучения входные данные x передаются функции кодировщика e_theta(x). Как и в случае с AE, входные данные проходят через серию слоев (параметризованных переменной theta), уменьшая их размеры для получения сжатого скрытого вектора z. Однако скрытый вектор не является выходом кодера. Вместо этого кодировщик выводит среднее значение и стандартное отклонение для каждой скрытой переменной. Затем из этого среднего значения и стандартного отклонения выбирается скрытый вектор, который затем подается в декодер для восстановления входных данных. Декодер в VAE работает так же, как и в AE.

Функция потерь

Функция потерь определяется целями VAE. VAE преследует две цели

  1. Реконструировать ввод
  2. Скрытое пространство должно быть нормально распределено

Следовательно, потери при обучении VAE определяются как сумма этих потерь реконструкции и потерь сходства. Ошибка реконструкции, как и в AE, представляет собой среднеквадратичную потерю входных данных и реконструированных выходных данных. Потеря подобия - это расхождение KL между распределением в скрытом пространстве и стандартным гауссовским (нулевое среднее и единичная дисперсия). Тогда функция потерь представляет собой сумму этих двух потерь.

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

Визуализация скрытого пространства

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

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

Краткое содержание

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

Автоэнкодер (AE)

· Используется для создания сжатого преобразования ввода в скрытом пространстве

· Скрытая переменная не регуляризована

· Выбор случайной скрытой переменной будет генерировать мусорный вывод

· Скрытая переменная имеет разрыв

· Скрытая переменная имеет детерминированные значения

· Скрытому пространству не хватает генеративной способности

Вариационный автоэнкодер (VAE)

· Применяет условия для скрытой переменной, чтобы она была единичной нормой

· Скрытой переменной в сжатой форме является среднее и дисперсия

· Скрытая переменная гладкая и непрерывная

· Случайное значение скрытой переменной генерирует осмысленный вывод в декодере

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

· Упорядоченное скрытое пространство

· Скрытое пространство обладает генеративными способностями.

Если эта статья была вам полезна или вы хотите узнать больше о машинном обучении и науке о данных, подпишитесь на Aqeel Anwar или свяжитесь со мной в LinkedIn или Twitter.