Обратное распространение от входа декодера к выходу кодера в вариационном автоэнкодере - PullRequest
6 голосов
/ 05 августа 2020

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

VAE

Моя сеть кодировщика выводит 8 пар (sigma, mu) , которые я затем объединяю с результатом сэмплера stochasti c для получения 8 входных значений (z) для сети декодера:

decoder_in = sigma * N(0,I) + mu

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

Здесь я застрял полностью, так как нет понятного объяснения того, как распространять потери от входного уровня декодера к выходному слою кодера. 0, I) в ( эпсилон ) и используйте их таким образом:

L(sigma) = epsilon * dLz(decoder_in)
L(mu) = 1.0 * dLz(decoder_in)

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

Кроме того, я до сих пор не знаю, как интегрировать KL-потери в эту схему. Стоит ли добавить это к потере кодировщика или как-то объединить с потерями MSE декодера?

1 Ответ

2 голосов
/ 15 августа 2020

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

1/2 (d + log (sigmaTsigma) - (muTmu) - (sigmaTsigma)) + log p (x / z)

Где d - количество скрытых переменные, mu и sigma - это выходные данные кодирующей нейронной сети, используемые для масштабирования стандартных нормальных выборок, а z - это закодированная выборка. p (x / z) - это просто вероятность декодера сгенерировать вход x.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...