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