Devo determinare la divergenza KL tra due gaussiani. Sto confrontando i miei risultati con questi , ma non riesco a riprodurli. Il mio risultato è ovviamente sbagliato, perché KL non è 0 per KL (p, p).
Mi chiedo dove sto facendo un errore e chiedo se qualcuno può individuarlo.
Sia e . Dal Bishop del PRML lo sop(x)=N(μ1,σ1)q(x)=N(μ2,σ2)
KL(p,q)=−∫p(x)logq(x)dx+∫p(x)logp(x)dx
dove l'integrazione è fatta su tutta la linea reale, e quello
∫p(x)logp(x)dx=−12(1+log2πσ21),
quindi mi limito a , che posso scrivere come∫p(x)logq(x)dx
−∫p(x)log1(2πσ22)(1/2)e−(x−μ2)22σ22dx,
che può essere separato in
12log(2πσ22)−∫p(x)loge−(x−μ2)22σ22dx.
Prendendo il registro che ottengo
12log(2πσ22)−∫p(x)(−(x−μ2)22σ22)dx,
dove separo le somme e ottengo dall'integrale.σ22
12log(2πσ22)+∫p(x)x2dx−∫p(x)2xμ2dx+∫p(x)μ22dx2σ22
Lasciando che denoti l'operatore aspettativa in , posso riscriverlo come⟨⟩p
12log(2πσ22)+⟨x2⟩−2⟨x⟩μ2+μ222σ22.
Sappiamo che . cosìvar(x)=⟨x2⟩−⟨x⟩2
⟨x2⟩=σ21+μ21
e quindi
12log(2πσ2)+σ21+μ21−2μ1μ2+μ222σ22,
che posso mettere come
12log(2πσ22)+σ21+(μ1−μ2)22σ22.
Mettendo tutto insieme, ci riesco
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.
che è sbagliato poiché è uguale a per due gaussiani identici.1
Qualcuno può individuare il mio errore?
Aggiornare
Grazie a mpiktas per aver chiarito le cose. La risposta corretta è:
KL(p,q)=logσ2σ1+σ21+(μ1−μ2)22σ22−12