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πσ21),
así que me limito a , que puedo escribir como∫p(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)x2dx−∫p(x)2xμ2dx+∫p(x)μ22dx2σ22
Dejando que denote el operador de expectativa bajo , puedo reescribir esto como⟨⟩p
12log(2πσ22)+⟨x2⟩−2⟨x⟩μ2+μ222σ22.
Sabemos que . Asívar(x)=⟨x2⟩−⟨x⟩2
⟨x2⟩=σ21+μ21
y por lo tanto
12log(2πσ2)+σ21+μ21−2μ1μ2+μ222σ22,
que puedo poner como
12log(2πσ22)+σ21+(μ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)+σ21+(μ1−μ2)22σ22−12(1+log2πσ21)=logσ2σ1+σ21+(μ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+σ21+(μ1−μ2)22σ22−12
Respuestas:
OK, mi mal. El error está en la última ecuación:
Tenga en cuenta lo que falta . La última línea se convierte en cero cuando y .−12 μ1=μ2 σ1=σ2
fuente
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 σ21 q μ2 σ22 q p
(Ahora tenga en cuenta que )(X−μ2)2=(X−μ1+μ1−μ2)2=(X−μ1)2+2(X−μ1)(μ1−μ2)+(μ1−μ2)2
fuente