Когда я должен использовать вариационный авто-кодер, а не авто-кодер?

19

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

DiveIntoML
источник

Ответы:

13

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

Сказав это, можно, конечно, использовать VAE для изучения скрытых представлений. Известно, что VAE дают представления с распутанными факторами [1] Это происходит из-за изотропных гауссовых априоров на скрытых переменных. Моделирование их как гауссиан позволяет каждому измерению в представлении продвинуться как можно дальше от других факторов. Также в [1] добавлен коэффициент регуляризации, который контролирует влияние априора.

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

Возвращаясь к вопросу, как можно видеть, априор дает значительный контроль над тем, как мы хотим моделировать наше скрытое распределение. Этот вид контроля не существует в обычной структуре AE. Это фактически сила самих байесовских моделей, VAE просто делают это более практичным и выполнимым для крупномасштабных наборов данных. Итак, в заключение, если вы хотите точно контролировать свои скрытые представления и то, что вы хотели бы, чтобы они представляли, тогда выберите VAE. Иногда точное моделирование может захватывать лучшие представления, как в [2]. Однако, если AE достаточно для работы, которую вы выполняете, то просто используйте AE, это просто и достаточно просто. В конце концов, с AE мы просто делаем нелинейный PCA.

[1] Раннее визуальное концептуальное обучение с неконтролируемым углубленным обучением, 2016
Ирина Хиггинс, Лоик Матти, Ксавье Глорот, Арка Пал, Бениньо Урия, Чарльз Бланделл, Шакир Мохамед, Александр Лерхнер
https://arxiv.org/abs/1606.05579

[2] Модель рекуррентных скрытых переменных для последовательных данных, 2015 г.
Junyoung Chung, Kyle Kastner, Laurent Dinh, Kratarth Goel, Aaron Courville, Yoshua Bengio
https://arxiv.org/abs/1506.02216

TenaliRaman
источник
6

У TenaliRaman были некоторые хорошие моменты, но он также упустил много фундаментальных понятий. Прежде всего следует отметить, что основной причиной использования AE-подобной структуры является скрытое пространство, которое позволяет нам сжимать информацию и, как мы надеемся, извлекать из нее независимые факторы, которые представляют особенности данных высокого уровня. Важным моментом является то, что, хотя AE можно интерпретировать как нелинейное расширение PCA, поскольку скрытые единицы «X» будут занимать то же пространство, что и первое число «X» главных компонентов, AE не обязательно создает ортогональные компоненты в скрытой среде. пространство (которое будет равнозначно форме распутывания). Кроме того, из VAE вы можете получить видимость вероятности данных (хотя и приблизительную), а также выборку из нее (которая может быть полезна для различных задач). Тем не мение,

Предыдущее распределение, наложенное на скрытые единицы в VAE, только способствует подгонке модели из-за члена дивергенции KL, который в ссылке [1] просто добавил множитель гиперпараметра для этого термина и получил полную статью из него (большая часть довольно очевидно). По сути, «неинформативным» априором является тот, который по отдельности имеет расхождение KL, близкое к нулю, и не вносит значительного вклада в потери, что означает, что конкретный блок не используется для восстановления в декодере. Разъединение вступает в игру на VAE, естественно, потому что, в простейшем случае мультимодальных данных, стоимость дивергенции KL ниже благодаря наличию уникального скрытого гауссовского значения для каждого режима, чем если бы модель пыталась захватить несколько режимов с одним гауссианом (что будет отклоняться дальше от предыдущего, что в значительной степени оштрафовано стоимостью дивергенции KL), что приводит к распутыванию в скрытых единицах. Поэтому VAE также естественным образом подходит для большинства источников данных из-за связанных с этим статистических последствий.

Существуют также разреженные структуры для AE, но, к сожалению, я не знаю ни одной статьи, которая бы сравнивала VAE с AE строго на основе скрытого представления пространства и распутывания. Я бы очень хотел увидеть что-то на этой арене - поскольку АЕ гораздо легче обучать, и если бы они могли добиться такого же хорошего распутывания, как и ВАЕ в скрытом пространстве, то они, очевидно, были бы предпочтительнее. Что касается примечания, я также видел некоторые обещания методов ICA (и нелинейных ICA), но те, которые я видел, заставили скрытое пространство иметь то же измерение, что и данные, что не так полезно, как AE для извлечения функций высокого уровня.

JPJ
источник
3

Стандартный автоэнкодер можно проиллюстрировать с помощью следующего графика: введите описание изображения здесь

Как указывалось в предыдущих ответах, его можно рассматривать как просто нелинейное расширение PCA.

Но по сравнению с вариационным автоэнкодером ванильный автоэнкодер имеет следующий недостаток:

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

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

введите описание изображения здесь

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

введите описание изображения здесь

Тогда даже для одного и того же входного сигнала декодированный выходной сигнал может изменяться, а кодированные и кластеризованные входные данные становятся гладкими:

введите описание изображения здесь

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

Справка:
интуитивно понятное понимание вариационных автоэнкодеров

Лернер Чжан
источник
1

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

Если вам нужен более глубокий анализ, взгляните на тезис Дюрка Кингмы . Это отличный источник для вариационного вывода.

PickleRick
источник
Когда вы говорите о «выборе дистрибутива», о каком дистрибутиве вы говорите? p (z), p (z | x), p (x | z) или все они? Я видел только использование нормального распределения или распределения Бернулли. Знаете ли вы о какой-либо работе, сравнивающей производительность с использованием другого распределения? Что касается вашего второго пункта, я не могу понять, почему вариационный автоэнкодер будет работать лучше, чем обычный автоэнкодер, не могли бы вы уточнить? Благодарю.
DiveIntoML