Divergenza di KL tra due gaussiani multivariati


46

Ho problemi a derivare la formula della divergenza KL ipotizzando due distribuzioni normali multivariate. Ho fatto il caso univariato abbastanza facilmente. Tuttavia, è passato un po 'di tempo da quando ho preso le statistiche matematiche, quindi ho qualche problema ad estenderlo al caso multivariato. Sono sicuro che mi manca qualcosa di semplice.

Ecco cosa ho ...

Supponiamo che sia e sono i PDF di distribuzioni normali con mezzi e e varianze e , rispettivamente. La distanza di Kullback-Leibler da a è:q μ 1 μ 2 Σ 1 Σ 2 q ppqμ1μ2Σ1Σ2qp

[log(p(x))log(q(x))] p(x) dx , che per due normali multivariate è:

12[log|Σ2||Σ1|d+Tr(Σ21Σ1)+(μ2μ1)TΣ21(μ2μ1)]

Seguendo la stessa logica di questa dimostrazione , arrivo qui prima di rimanere bloccato:

=[d2log|Σ2||Σ1|+12((xμ2)TΣ21(xμ2)(xμ1)TΣ21(xμ1))]×p(x)dx

=E[d2log|Σ2||Σ1|+12((xμ2)TΣ21(xμ2)(xμ1)TΣ21(xμ1))]

Penso di dover implementare il trucco della traccia , ma non sono sicuro di cosa fare dopo. Qualche suggerimento utile per riportarmi sulla strada giusta sarebbe apprezzato!


1
stanford.edu/~jduchi/projects/general_notes.pdf . L'ultima sezione fornisce anche la derivazione.
user3540823

Risposte:


47

A partire da dove hai iniziato con alcune lievi correzioni, possiamo scrivere

KL=[12log|Σ2||Σ1|12(xμ1)TΣ11(xμ1)+12(xμ2)TΣ21(xμ2)]×p(x)dx=12log|Σ2||Σ1|12tr {E[(xμ1)(xμ1)T] Σ11}+12E[(xμ2)TΣ21(xμ2)]=12log|Σ2||Σ1|12tr {Id}+12(μ1μ2)TΣ21(μ1μ2)+12tr{Σ21Σ1}=12[log|Σ2||Σ1|d+tr{Σ21Σ1}+(μ2μ1)TΣ21(μ2μ1)].

Nota che ho usato un paio di proprietà dalla Sezione 8.2 del libro di cucina Matrix .


Vedo che hai eliminato la D che avevo in origine. Non avresti un termine D dopo aver preso il registro del gaussiano nei primi passi?
dmartin,

Considera il fattore di ridimensionamento , della densità normale multivariata. Quando si calcola la differenza del log, il termine scompare. Non c'è un termine per i determinanti - semplicemente, un , che viene preso in considerazione. k = 1 , 2 ( 2 π ) - D / 2 D 1 / 2(2π)d/2|Σk|1/2k=1,2(2π)d/2d1/2
Ramhiser,

Nessun problema. Sono contento di aver potuto aiutare.
Ramhiser,

Ciao, come ti è venuto in mente l'ultimo passaggio? Come hai cambiato il segno di in ? μ 2 - μ 1μ1μ2μ2μ1
acidghost,

1
@acidghost O uno funziona perché possiamo escludere uno negativo da entrambe le parti. Moltiplicando i due negativi si ottiene uno positivo.
Ramhiser,
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.