Divergenza di KL tra due gaussiani univariati


79

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)log⁡q(x)dx+∫p(x)log⁡p(x)dx

dove l'integrazione è fatta su tutta la linea reale, e quello

∫p(x)log⁡p(x)dx=−12(1+log⁡2πσ12),

quindi mi limito a , che posso scrivere come∫p(x)log⁡q(x)dx

−∫p(x)log⁡1(2πσ22)(1/2)e−(x−μ2)22σ22dx,

che può essere separato in

12log⁡(2πσ22)−∫p(x)log⁡e−(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⟩=σ12+μ12

e quindi

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

che posso mettere come

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

Mettendo tutto insieme, ci riesco

KL(p,q)=−∫p(x)log⁡q(x)dx+∫p(x)log⁡p(x)dx=12log⁡(2πσ22)+σ12+(μ1−μ2)22σ22−12(1+log⁡2πσ12)=log⁡σ2σ1+σ12+(μ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+σ12+(μ1−μ2)22σ22−12


scusate per aver pubblicato la risposta errata in primo luogo. Ho appena guardato e ho immediatamente pensato che l'integrale fosse zero. Il punto che era al quadrato mi mancava completamente la mente :)x−μ1
— mpiktas,

che dire del caso multi-variabile?

Ho appena visto in un documento di ricerca che kld dovrebbe essere $ KL (p, q) = ½ * ((μ₁-μ₂) ² + σ₁² + σ₂²) * ((1 / σ₁²) + (1 / σ₂²)) - 2
— skyde

1
Penso che ci sia un refuso nella tua domanda, dal momento che non posso convalidarlo e sembra anche che tu abbia usato la versione corretta più avanti nella tua domanda: Penso che dovrebbe essere (nota il meno): Ho provato a modificare la tua domanda e mi hanno vietato, quindi magari fallo da solo.
∫p(x)log⁡p(x)dx=12(1+log⁡2πσ12)
∫p(x)log⁡p(x)dx=−12(1+log⁡2πσ12)
— y-spreen

La risposta è anche nel mio articolo del 1996 sulle perdite intrinseche .
— Xi'an,

Risposte:


59

OK, mio ​​male. L'errore è nell'ultima equazione:

KL(p,q)=−∫p(x)log⁡q(x)dx+∫p(x)log⁡p(x)dx=12log⁡(2πσ22)+σ12+(μ1−μ2)22σ22−12(1+log⁡2πσ12)=log⁡σ2σ1+σ12+(μ1−μ2)22σ22−12

Nota i mancanti . L'ultima riga diventa zero quando e .−12μ1=μ2σ1=σ2


@mpiktas Intendevo davvero la domanda: bayerj è un ricercatore ben pubblicato e sono un laureando. Bello vedere che anche i ragazzi intelligenti tornano a chiedere su Internet a volte :)
— N. McA.

3
è p oμ1σ1μ2σ2
— Kong

@Kong p è , come indicato nella domanda. N(u1,σ1)
— zplizzi,

31

Non ho dato un'occhiata al tuo calcolo, ma ecco il mio con molti dettagli. Supponiamo che sia la densità di una normale variabile casuale con media e varianza e che sia la densità di una normale variabile casuale con media e varianza . La distanza di Kullback-Leibler da a è: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

(Ora nota che )(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σ22−12

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.