KL Pérdida con una unidad Gaussiana

10

He estado implementando un VAE y he notado dos implementaciones diferentes en línea de la divergencia KL gaussiana univariada simplificada. La divergencia original según aquí es Si suponemos que nuestro anterior es una unidad gaussiana, es decir,μ2=0yσ2=1, esto se simplifica a KLloss=-log(σ1)+σ 2 1 +μ 2 1

KLloss=log(σ2σ1)+σ12+(μ1μ2)22σ2212
μ2=0σ2=1 KLloss=-1
KLloss=log(σ1)+σ12+μ12212
Y aquí es donde descansa mi confusión. Aunque he encontrado algunos repositorios oscuros de github con la implementación anterior, lo que más comúnmente encuentro usado es:
KLloss=12(2log(σ1)σ12μ12+1)

Por ejemplo, en eltutorialoficial deautoencoder Keras. Mi pregunta es entonces, ¿qué me estoy perdiendo entre estos dos? La principal diferencia es dejar caer el factor de 2 en el término logarítmico y no cuadrar la varianza. Analíticamente he usado este último con éxito, por lo que vale. ¡Gracias de antemano por cualquier ayuda!

=12(log(σ1)σ1μ12+1)
groovyDragon
fuente

Respuestas:

7

σ1σ12log(σ1)σ12log(σ1)σ12

Ambas formulaciones son equivalentes y el objetivo no cambia.

F. Evlangeli
fuente
μσσμσ