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)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πσ12),

quindi mi limito a , che posso scrivere comep(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)x2dxp(x)2xμ2dx+p(x)μ22dx2σ22

Lasciando che denoti l'operatore aspettativa in , posso riscriverlo comep

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

Sappiamo che . cosìvar(x)=x2x2

x2=σ12+μ12

e quindi

12log(2πσ2)+σ12+μ122μ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)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.
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σ2212


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)logp(x)dx=12(1+log2πσ12)
p(x)logp(x)dx=12(1+log2πσ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)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

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σ2212

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.