Я пытаюсь глубже понять 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 декодера?