Я внедрял VAE и заметил в Интернете две разные реализации упрощенной однофакторной гауссовой дивергенции KL. Исходная дивергенция, здесь, выглядит следующим образом: Если мы предположим, что наша единица является т.е. и \ sigma_2 = 1 , это упрощается до KL_ {loss} = - \ log (\ sigma_1) + \ frac {\ sigma_1 ^ 2 + \ mu_1 ^ 2} {2} - \ frac {1} {2} KL_ {loss} = - \ frac {1} {2} (2 \ log (\ sigma_1) - \ sigma_1 ^ 2 - \ mu_1 ^ 2 + 1) И вот тут-то и лежит мое замешательство. Хотя я обнаружил несколько неясных репозиториев github с вышеуказанной реализацией, чаще всего я использую:
источник
Я считаю, что ответ проще. В VAE люди обычно используют многомерное нормальное распределение, которое имеет ковариационную матрицу вместо дисперсии . Это выглядит запутанно в части кода, но имеет желаемую форму.Σ σ2
Здесь вы можете найти вывод дивергенции KL для многомерных нормальных распределений: Получение потерь на расходимость KL для VAE
источник