Вопрос или проблема
По моему пониманию, VAE, в отличие от автокодировщиков, не дает вам непосредственно дискретное кодирование (латентные векторы кодов n-мерности); вместо этого он предоставляет и mu, и sigma (n-мерные вектора средних и n-мерные вектора стандартных отклонений). Затем у вас есть epsilon, который вы используете для выборки из нормального распределения с mu и sigma, чтобы создать z. Комбинируя mu, sigma и epsilon, вы получаете z, который декодируется декодером VAE. z по сути является основным кодированием.
Предположим, что мои z, mu и sigma имеют n-мерность, например, 10 (10-мерные z, mu, sigma). Я позволяю пользователю свободно выбирать/давать мне числа для 10 векторов [-a, a], скажем, a = 5. Таким образом, пользователь может свободно выбирать 10 векторов в диапазоне от -5 до 5.
Это становится моим z, которое декодируется моим декодером для генерации нового изображения.
[Основная проблема]
Мой VAE обучен на наборе данных одежды. Теперь, если я запущу кодировщик моего VAE на каждом из данных в наборе, я получу mu и sigma для каждого (не уверен, все ли это еще правильно).
Используя z, предоставленный пользователем, как я могу найти наиболее похожий из набора данных, используя кодирование VAE только mu и sigma?
Я думаю, что нужно сгенерировать z, используя mu и sigma, полученные от кодировщика VAE, но для того, чтобы сгенерировать z, мне все еще нужно сделать выборку из распределения, используя epsilon, что делает его недискретным относительно z, созданного пользователем. Это добавляет случайность, поэтому я не уверен, как я могу использовать закодированное z, чтобы найти ближайшее к z, созданному пользователем.
Если вы обучаете VAE, кодировщик в основном параметризует вариационное апостериорное распределение $z$ при данных $x$, т.е.
$$ q(z | x) = \prod_{i=1}^{N_z} q(z_i | x) = \prod_{i=1}^{N_z} \frac{1}{\sqrt{2\pi}\sigma_i(x)} \exp \left[ -\frac{(z_i – \mu_i(x))^2}{2\sigma_i(x)^2} \right] $$
где $\mu_i(x)$ и $\sigma_i(x)$ задаются кодировщиком, а $z$ находится в $N_z$-мерном латентном пространстве.
Я бы рассматривал эту задачу так, как будто $x$ являются параметрами вероятностного распределения, а $z$ — это некоторые наблюдения, которые вы сделали.
“Ближайшее” кодирование из ваших обучающих данных $x$ будет кодированием с наивысшей вероятностью, т.е. вы вычисляете вероятность для каждой точки данных для заданного $z$, оценивая приведенное выше выражение, и берете $x$ с максимальным значением.
Логарифм вероятности обычно используется в таких сценариях, потому что он более удобен, но он эквивалентен, поскольку вероятность неотрицательна, а логарифм является монотонной функцией.
В комментариях вы упомянули использование метрики расстояния. Логарифм вероятности предоставляет хорошую интерпретацию, поскольку он дает что-то похожее на отрицательное евклидово расстояние между $\mu(x)$ и $z$, но масштабируется и сдвигается за счет членов, определяемых стандартным отклонением:
$$ \log q(z|x) = \sum_{i=1}^{N_z} \log q(z_i|x) = \sum_{i=1}^{N_z} \left[ -\frac{(z_i – \mu_i(x))^2}{2\sigma_i(x)^2} – \log \left( \sqrt{2\pi}\sigma_i(x) \right) \right] $$
Таким образом, интуитивно, максимизируя (лог-)вероятность, вы минимизируете евклидово расстояние между заданным z и кодированием $\mu(x)$ из набора обучающих данных $x$, но вы платите штрафы за наличие больших дисперсий.
(Более того, если вы делаете это таким образом, выборка $\epsilon$ не требуется.)
Ответ или решение
Вариационные автоэнкодеры (VAE) представляют собой мощный инструмент для генерации данных, что позволяет не только восстанавливать входные данные, но и генерировать новые, используя латентное пространство, описываемое параметрами μ (среднее) и σ (стандартное отклонение). Ваш вопрос касается использования пользовательских векторов z, и как с их помощью находить наиболее схожие элементы из обучающего набора данных.
Понимание архитектуры VAE
В VAE, энкодер преобразует входные данные ( x ) в параметры ( \mu(x) ) и ( \sigma(x) ). Эти параметры описывают многомерное нормальное распределение, из которого, в свою очередь, можно сэмплировать ( z ) с помощью формулы:
[ z = \mu + \sigma \cdot \epsilon ]
где ( \epsilon \sim \mathcal{N}(0, 1) ). Это позволяет выводить представление ( z ), которое будет иметь свойства стохастичности, что делает VAE отличным от стандартных автоэнкодеров.
Использование пользовательских векторов z
Если пользователь вводит вектор ( z ) с фиксированными значениями в диапазоне ([-a, a]), например, от -5 до 5, ваше главная задача заключается в том, чтобы найти наиболее похожие encodings (вектора ( \mu ) и ( \sigma )) в вашем обучающем наборе данных.
-
Выбор расстояния для оценки схожести:
Для нахождения «ближайшего» ( \mu(x) ) к заданному ( z ) вы можете использовать логарифмическую вероятность:[
\log q(z| x) = -\frac{1}{2} \sum_{i=1}^{N_z} \left( \frac{(z_i – \mu_i(x))^2}{\sigma_i^2(x)} + \log(2\pi) + \log(\sigma_i(x)) \right)
]Максимизация данного логарифма эквивалентна минимизации расстояния по евклидовой метрике между вектором ( z ) и ( \mu(x) ), с учетом величины стандартного отклонения ( \sigma(x) ).
-
Матчинг данных:
Вам необходимо перебрать все данные в вашем обучающем наборе и вычислить логарифмическую вероятность для каждого из них, используя:- Полученные значения ( \mu_i(x) ) и ( \sigma_i(x) ) от VAE энкодера для каждого обучающего примера.
- Заданное значение ( z ) от пользователя.
Таким образом, вы можете вычислить вероятность для каждого ( x ) и затем выбрать максимальную вероятностную массу, что даст вам наиболее схожий образец.
-
Отсутствие необходимости в отслеживании epsilon:
Так как вы работаете с фиксированным вектором ( z ), вам не потребуется генерировать случайные значения ( \epsilon ). Данная процедура позволит вам избежать дополнительного "шумления" в процессе.
Заключение
Используя приведенные шаги, вы сможете有效но находить наиболее похожие представления из обучающего набора данных с опорой на пользовательские значения ( z ). Это гарантирует, что вы можете извлекать ценные аналогии между сгенерированными данными и реальными примерами, что может быть крайне полезно для задач, таких как создание новых дизайнов одежды на основе существующих образцов.