KL divergencia entre dos gaussianos univariados

79

Necesito determinar la divergencia KL entre dos gaussianos. Estoy comparando mis resultados con estos , pero no puedo reproducir su resultado. Mi resultado es obviamente incorrecto, porque el KL no es 0 para KL (p, p).

Me pregunto dónde estoy cometiendo un error y pregunto si alguien puede detectarlo.

Sea y . Por el PRML de Bishop sé quep(x)=N(μ1,σ1)q(x)=N(μ2,σ2)

KL(p,q)=p(x)logq(x)dx+p(x)logp(x)dx

donde la integración se realiza en toda la línea real, y eso

p(x)logp(x)dx=12(1+log2πσ12),

así que me limito a , que puedo escribir comop(x)logq(x)dx

p(x)log1(2πσ22)(1/2)e(xμ2)22σ22dx,

que se puede separar en

12log(2πσ22)p(x)loge(xμ2)22σ22dx.

Tomando el registro que obtengo

12log(2πσ22)p(x)((xμ2)22σ22)dx,

donde separo las sumas y obtengo de la integral.σ22

12log(2πσ22)+p(x)x2dxp(x)2xμ2dx+p(x)μ22dx2σ22

Dejando que denote el operador de expectativa bajo , puedo reescribir esto comop

12log(2πσ22)+x22xμ2+μ222σ22.

Sabemos que . Asívar(x)=x2x2

x2=σ12+μ12

y por lo tanto

12log(2πσ2)+σ12+μ122μ1μ2+μ222σ22,

que puedo poner como

12log(2πσ22)+σ12+(μ1μ2)22σ22.

Poniendo todo junto, llego a

KL(p,q)=p(x)logq(x)dx+p(x)logp(x)dx=12log(2πσ22)+σ12+(μ1μ2)22σ2212(1+log2πσ12)=logσ2σ1+σ12+(μ1μ2)22σ22.
Lo cual está mal ya que es igual a para dos gaussianos idénticos.1

¿Alguien puede detectar mi error?

Actualizar

Gracias a mpiktas por aclarar las cosas. La respuesta correcta es:

KL(p,q)=logσ2σ1+σ12+(μ1μ2)22σ2212

bayerj
fuente
perdón por publicar la respuesta incorrecta en primer lugar. Acabo de mirar e inmediatamente pensé que la integral es cero. El punto en el que estaba cuadrado se me pasó por alto :)xμ1
mpiktas
¿Qué pasa con el caso de múltiples variantes?
Acabo de ver en un trabajo de investigación que kld debería ser $ KL (p, q) = ½ * ((μ₁-μ₂) ² + σ₁² + σ₂²) * ((1 / σ₁²) + (1 / σ₂²)) - 2
skyde
1
Creo que hay un error tipográfico en su pregunta, ya que no puedo validarlo y también parece que utilizó la versión correcta más adelante en su pregunta: Creo que debería ser (tenga en cuenta el signo menos): Traté de editar su pregunta y me prohibieron hacerlo, así que tal vez hágalo usted mismo.
p(x)logp(x)dx=12(1+log2πσ12)
p(x)logp(x)dx=12(1+log2πσ12)
y-spreen
La respuesta también está en mi artículo de 1996 sobre pérdidas intrínsecas .
Xi'an

Respuestas:

59

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

KL(p,q)=p(x)logq(x)dx+p(x)logp(x)dx=12log(2πσ22)+σ12+(μ1μ2)22σ2212(1+log2πσ12)=logσ2σ1+σ12+(μ1μ2)22σ2212

Tenga en cuenta lo que falta . La última línea se convierte en cero cuando y .12μ1=μ2σ1=σ2

mpiktas
fuente
@mpiktas Me refería realmente a la pregunta: bayerj es un investigador bien publicado y soy un estudiante universitario. Es bueno ver que incluso los tipos inteligentes vuelven a preguntar por Internet a veces :)
N. McA.
3
es p oμ1σ1μ2σ2
Kong
@Kong p es , como se señaló en la pregunta. N(u1,σ1)
zplizzi
31

No eché un vistazo a su cálculo, pero aquí está el mío con muchos detalles. Suponga que es la densidad de una variable aleatoria normal con media y varianza , y que es la densidad de una variable aleatoria normal con media y varianza . La distancia Kullback-Leibler de a es:pμ1σ12qμ2σ22qp

[log(p(x))log(q(x))]p(x)dx

=[12log(2π)log(σ1)12(xμ1σ1)2+12log(2π)+log(σ2)+12(xμ2σ2)2] ×12πσ1exp[12(xμ1σ1)2]dx

={log(σ2σ1)+12[(xμ2σ2)2(xμ1σ1)2]} ×12πσ1exp[12(xμ1σ1)2]dx

=E1{log(σ2σ1)+12[(xμ2σ2)2(xμ1σ1)2]}

=log(σ2σ1)+12σ22E1{(Xμ2)2}12σ12E1{(Xμ1)2}

=log(σ2σ1)+12σ22E1{(Xμ2)2}12

(Ahora tenga en cuenta que )(Xμ2)2=(Xμ1+μ1μ2)2=(Xμ1)2+2(Xμ1)(μ1μ2)+(μ1μ2)2

=log(σ2σ1)+12σ22[E1{(Xμ1)2}+2(μ1μ2)E1{Xμ1}+(μ1μ2)2]12

=log(σ2σ1)+σ12+(μ1μ2)22σ2212

ocram
fuente