Stimare la divergenza di Kullback Leibler (KL) con monte carlo


10

Voglio stimare la divergenza di KL tra due distribuzioni continue f e g. Tuttavia, non riesco a scrivere la densità per f o g. Posso campionare sia da f che da un metodo (ad esempio, markov chain monte carlo).

La divergenza KL da f a g è definita in questo modo

DKL(f||g)=f(x)log(f(x)g(x))dx

Questa è l'aspettativa di rispetto a f in modo da poter immaginare una stima di Monte Carlolog(f(x)g(x))

1NiNlog(f(xi)g(xi))

Dove i indicizza N campioni che sono disegnati da f (cioè per i = 1, ..., N)xif()

Tuttavia, poiché non conosco f () e g (), non posso nemmeno usare questa stima di Monte Carlo. Qual è il modo standard di stimare il KL in questa situazione?

EDIT: NON conosco la densità non normalizzata per f () o g ()


Hai considerato di utilizzare gli ecdfs?
Toby,

questo funzionerà, ma può essere arbitrariamente lento per la scelta difficile di f (g o code chiuse). Se decidi di ignorare i campioni lontano dalle code, potresti avere più fortuna con il limite superiore del roc.
Christian Chapman,

Risposte:


7

Presumo è possibile valutare e fino ad una costante di normalizzazione. Indica e .fgf(x)=fu(x)/cfg(x)=gu(x)/cg

Uno stimatore coerente che può essere utilizzato è dove è uno stimatore di campionamento di importanza per il rapporto . Qui usi e come densità strumentali rispettivamente per e e per indirizzare il rapporto di registro delle densità non normalizzate.

DKL^(f||g)=[n1jfu(xj)/πf(xj)]11NiN[log(fu(zi)gu(zi))fu(zi)πr(zi)]log(r^)
(1)r^=1/n1/njfu(xj)/πf(xj)jgu(yj)/πg(yj).
cf/cgπfπgfuguπr

Quindi lascia che , e . Il numeratore di (1) converge in . Il denominatore converge in . Il rapporto è coerente con il teorema della mappatura continua. Il registro del rapporto è di nuovo coerente con la mappatura continua.{xi}πf{yi}πg{zi}πrcfcg

Per quanto riguarda l'altra parte dello stimatore, dalla legge dei grandi numeri.

1NiN[log(fu(zi)gu(zi))fu(zi)πr(zi)]ascfE[log(fu(zi)gu(zi))]

La mia motivazione è la seguente:

DKL(f||g)=f(x)log(f(x)g(x))dx=f(x){log[fu(x)gu(x)]+log[cgcf]}dx=Ef[logfu(x)gu(x)]+log[cgcf]=cf1Eπr[logfu(x)gu(x)fu(x)πr(x)]+log[cgcf].
Quindi ho appena suddiviso in pezzi trattabili.

Per ulteriori idee su come simulare il rapporto di verosimiglianza, ho trovato un documento che ha alcuni: https://projecteuclid.org/download/pdf_1/euclid.aos/1031594732


(+1) Vale la pena notare qui che il campionamento di importanza può avere una varianza estremamente elevata (anche la varianza infinita) se la distribuzione target ha code più grosse rispetto alla distribuzione da cui stai campionando e / o il numero di dimensioni è del tutto elevato.
David J. Harris,

@ DavidJ.Harris molto, vero
Taylor,

6

Qui presumo che sia possibile campionare solo dai modelli; una funzione di densità non normalizzata non è disponibile.

Lo scrivi

DKL(f||g)=f(x)log(f(x)g(x)=:r)dx,

dove ho definito il rapporto delle probabilità di essere . Scrive Alex Smola, anche se in un contesto diverso, è possibile stimare questi rapporti "facilmente" semplicemente allenando un classificatore. Supponiamo di aver ottenuto un classificatore , che può dirti la probabilità che un'osservazione sia stata generata da . Nota che . Poi:rp(f|x)xfp(g|x)=1p(f|x)

r=p(x|f)p(x|g)=p(f|x)p(x)p(g)p(g|x)p(x)p(f)=p(f|x)p(g|x),

dove il primo passo è dovuto a Bayes e l'ultimo segue dal presupposto che .p(g)=p(f)

Ottenere un tale classificatore può essere abbastanza facile per due motivi.

Innanzitutto, puoi eseguire aggiornamenti stocastici. Ciò significa che se si utilizza un ottimizzatore basato su gradiente, come è tipico per la regressione logistica o reti neurali, è possibile solo disegnare un campioni di ogni e ed effettuare un aggiornamento.fg

In secondo luogo, come lei ha praticamente illimitata di dati si può solo campione e a morte-non dovete preoccuparvi di overfitting o simili.fg


0

Oltre al metodo classificatore probabilistico menzionato da @bayerj, puoi anche usare il limite inferiore della divergenza KL derivata in [1-2]:

KL[fg]supT{Exf[T(x)]Exg[exp(T(x)1)]},
dove è arbitrario funzione. In alcune condizioni lievi, il limite è stretto per: T:XR
T(x)=1+ln[f(x)g(x)]

Per stimare la divergenza KL tra e , massimizziamo il limite inferiore rispetto alla funzione .fgT(x)

Riferimenti:

[1] Nguyen, X., Wainwright, MJ e Jordan, MI, 2010. Stima dei funzionali di divergenza e del rapporto di verosimiglianza mediante minimizzazione del rischio convesso. Transazioni IEEE sulla teoria dell'informazione, 56 (11), pagg. 5847-5861.

[2] Nowozin, S., Cseke, B. e Tomioka, R., 2016. f-gan: addestrare campionatori neurali generativi usando la minimizzazione della divergenza variazionale. In Progressi nei sistemi di elaborazione delle informazioni neurali (pagg. 271-279).

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.