Necesito determinar la divergencia KL entre dos gaussianos. Estoy comparando mis resultados con estos pero no puedo reproducir su resultado. Mi resultado es obviamente erróneo, porque el KL no es 0 para KL(p, p).
Me pregunto dónde estoy cometiendo un error y pregunto si alguien puede detectarlo.
Dejemos que $p(x) = N(\mu_1, \sigma_1)$ y $q(x) = N(\mu_2, \sigma_2)$ . De Bishop's PRML sé que
$$KL(p, q) = - \int p(x) \log q(x) dx + \int p(x) \log p(x) dx$$
donde la integración se hace sobre toda la línea real, y que
$$\int p(x) \log p(x) dx = -\frac{1}{2} (1 + \log 2 \pi \sigma_1^2),$$
así que me limito a $\int p(x) \log q(x) dx$ que puedo escribir como
$$-\int p(x) \log \frac{1}{(2 \pi \sigma_2^2)^{(1/2)}} e^{-\frac{(x-\mu_2)^2}{2 \sigma_2^2}} dx,$$
que se puede separar en
$$\frac{1}{2} \log (2 \pi \sigma_2^2) - \int p(x) \log e^{-\frac{(x-\mu_2)^2}{2 \sigma_2^2}} dx.$$
Tomando el registro obtengo
$$\frac{1}{2} \log (2 \pi \sigma_2^2) - \int p(x) \bigg(-\frac{(x-\mu_2)^2}{2 \sigma_2^2} \bigg) dx,$$
donde separo las sumas y obtengo $\sigma_2^2$ fuera de la integral.
$$\frac{1}{2} \log (2 \pi \sigma^2_2) + \frac{\int p(x) x^2 dx - \int p(x) 2x\mu_2 dx + \int p(x) \mu_2^2 dx}{2 \sigma_2^2}$$
Dejar $\langle \rangle$ denotan el operador de expectativa bajo $p$ Puedo reescribir esto como
$$\frac{1}{2} \log (2 \pi \sigma_2^2) + \frac{\langle x^2 \rangle - 2 \langle x \rangle \mu_2 + \mu_2^2}{2 \sigma_2^2}.$$
Sabemos que $var(x) = \langle x^2 \rangle - \langle x \rangle ^2$ . Así,
$$\langle x^2 \rangle = \sigma_1^2 + \mu_1^2$$
y por lo tanto
$$\frac{1}{2} \log (2 \pi \sigma^2) + \frac{\sigma_1^2 + \mu_1^2 - 2 \mu_1 \mu_2 + \mu_2^2}{2 \sigma_2^2},$$
que puedo poner como
$$\frac{1}{2} \log (2 \pi \sigma_2^2) + \frac{\sigma_1^2 + (\mu_1 - \mu_2)^2}{2 \sigma_2^2}.$$
Juntando todo, llego a
\begin{align*} KL(p, q) &= - \int p(x) \log q(x) dx + \int p(x) \log p(x) dx\\\\ &= \frac{1}{2} \log (2 \pi \sigma_2^2) + \frac{\sigma_1^2 + (\mu_1 - \mu_2)^2}{2 \sigma_2^2} - \frac{1}{2} (1 + \log 2 \pi \sigma_1^2)\\\\ &= \log \frac{\sigma_2}{\sigma_1} + \frac{\sigma_1^2 + (\mu_1 - \mu_2)^2}{2 \sigma_2^2}. \end{align*} Lo cual es incorrecto ya que es igual a $1$ para dos gaussianos idénticos.
¿Alguien puede detectar mi error?
Actualización
Gracias a mpiktas por aclarar las cosas. La respuesta correcta es:
$KL(p, q) = \log \frac{\sigma_2}{\sigma_1} + \frac{\sigma_1^2 + (\mu_1 - \mu_2)^2}{2 \sigma_2^2} - \frac{1}{2}$
1 votos
Perdón por publicar la respuesta incorrecta en primer lugar. Acabo de mirar $x-\mu_1$ e inmediatamente pensé que la integral es cero. El punto de que era al cuadrado completamente perdido mi mente :)
1 votos
¿qué pasa con el caso de las multivariantes?
0 votos
Acabo de ver en un trabajo de investigación que kld debería ser $KL(p, q) = ½ * ((-)² + ²+²) * ( (1/²) + (1/²) ) - 2
1 votos
Creo que hay una errata en tu pregunta, ya que no puedo validarla y además parece que has utilizado la versión correcta más adelante en tu pregunta: $$\int p(x) \log p(x) dx = \frac{1}{2} (1 + \log 2 \pi \sigma_1^2)$$ Creo que debería ser (nótese el menos): $$\int p(x) \log p(x) dx = -\frac{1}{2} (1 + \log 2 \pi \sigma_1^2)$$ Intenté editar tu pregunta y me banearon por ello, así que tal vez lo hagas tú mismo.
1 votos
La respuesta también está en mi Documento de 1996 sobre las pérdidas intrínsecas .
0 votos
Sólo como referencia, este es un caso especial de es.wikipedia.org/wiki/
0 votos
@Xi'an - Gracias por proporcionar una referencia. Una pregunta rápida de aclaración: ¿Puedes explicar por qué tu ecuación proporciona un valor 2 veces mayor que la respuesta dada por la fórmula aquí? ¿Cuál es la diferencia de interpretación? $$\frac{(\mu_1-\mu_2)^2}{\sigma_2^2}+\frac{\sigma_1^2}{\sigma_2^2}-\log\biggl(\frac{\sigma_1^2}{\sigma_2^2}\biggl)-1$$
0 votos
¿No debería formularse la distribución normal como (1,1^2) y ()=(2,2^2)? Parece que esto causará alguna confusión