152 votos

Divergencia KL entre dos gaussianas univariantes

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

108voto

Marc-Andre R. Puntos 789

OK, mi error. El error está en la última ecuación:

\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} - \frac{1}{2} \end{align}

Obsérvese la falta de $-\frac{1}{2}$ . La última línea se convierte en cero cuando $\mu_1=\mu_2$ y $\sigma_1=\sigma_2$ .

1 votos

@mpiktas Me refería a la pregunta realmente - bayerj Es un investigador bien publicado y yo soy un estudiante. Es bueno ver que incluso los chicos inteligentes caen de nuevo a preguntar en el Internet a veces :)

3 votos

Es p $\mu_1 \sigma_1$ o $\mu_2 \sigma_2$

0 votos

@Kong p es $N(u_1, \sigma_1)$ como se indica en la pregunta.

57voto

ocram Puntos 9992

No he echado un vistazo a tu cálculo pero aquí está el mío con muchos detalles. Supongamos que $p$ es la densidad de una variable aleatoria normal con media $\mu_1$ y la varianza $\sigma^2_1$ y que $q$ es la densidad de una variable aleatoria normal con media $\mu_2$ y la varianza $\sigma^2_2$ . La distancia Kullback-Leibler de $q$ a $p$ es:

$\int \left[\log( p(x)) - log( q(x)) \right] p(x) dx$

$=\int \left[ -\frac{1}{2} \log(2\pi) - \log(\sigma_1) - \frac{1}{2} \left(\frac{x-\mu_1}{\sigma_1}\right)^2 + \frac{1}{2}\log(2\pi) + \log(\sigma_2) + \frac{1}{2} \left(\frac{x-\mu_2}{\sigma_2}\right)^2 \right]$ $\times \frac{1}{\sqrt{2\pi}\sigma_1} \exp\left[-\frac{1}{2}\left(\frac{x-\mu_1}{\sigma_1}\right)^2\right] dx$

$=\int \left\{\log\left(\frac{\sigma_2}{\sigma_1}\right) + \frac{1}{2} \left[ \left(\frac{x-\mu_2}{\sigma_2}\right)^2 - \left(\frac{x-\mu_1}{\sigma_1}\right)^2 \right] \right\}$ $\times \frac{1}{\sqrt{2\pi}\sigma_1} \exp\left[-\frac{1}{2}\left(\frac{x-\mu_1}{\sigma_1}\right)^2\right] dx$

$=E_{1} \left\{\log\left(\frac{\sigma_2}{\sigma_1}\right) + \frac{1}{2} \left[ \left(\frac{x-\mu_2}{\sigma_2}\right)^2 - \left(\frac{x-\mu_1}{\sigma_1}\right)^2 \right]\right\}$

$=\log\left(\frac{\sigma_2}{\sigma_1}\right) + \frac{1}{2\sigma_2^2} E_1 \left\{(X-\mu_2)^2\right\} - \frac{1}{2\sigma_1^2} E_1 \left\{(X-\mu_1)^2\right\}$

$=\log\left(\frac{\sigma_2}{\sigma_1}\right) + \frac{1}{2\sigma_2^2} E_1 \left\{(X-\mu_2)^2\right\} - \frac{1}{2}$

(Ahora bien, tenga en cuenta que $(X - \mu_2)^2 = (X-\mu_1+\mu_1-\mu_2)^2 = (X-\mu_1)^2 + 2(X-\mu_1)(\mu_1-\mu_2) + (\mu_1-\mu_2)^2$ )

$=\log\left(\frac{\sigma_2}{\sigma_1}\right) + \frac{1}{2\sigma_2^2} \left[E_1\left\{(X-\mu_1)^2\right\} + 2(\mu_1-\mu_2)E_1\left\{X-\mu_1\right\} + (\mu_1-\mu_2)^2\right] - \frac{1}{2}$

$=\log\left(\frac{\sigma_2}{\sigma_1}\right) + \frac{\sigma_1^2 + (\mu_1-\mu_2)^2}{2\sigma_2^2} - \frac{1}{2}$

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X