Schätzen Sie die Divergenz von Kullback Leibler (KL) mit Monte Carlo


9

Ich möchte die KL-Divergenz zwischen zwei kontinuierlichen Verteilungen f und g abschätzen. Ich kann jedoch weder für f noch für g die Dichte aufschreiben. Ich kann sowohl von f als auch von g über eine Methode (zum Beispiel Markov Chain Monte Carlo) probieren.

Die KL-Divergenz von f nach g ist wie folgt definiert

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

Dies ist die Erwartung von in Bezug auf f, sodass Sie sich eine Monte-Carlo-Schätzung vorstellen könnenlog(f(x)g(x))

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

Wobei i N Stichproben indiziert, die aus f gezogen werden (dh für i = 1, ..., N)xif()

Da ich jedoch f () und g () nicht kenne, kann ich diese Monte-Carlo-Schätzung nicht einmal verwenden. Was ist die Standardmethode zur Schätzung des KL in dieser Situation?

EDIT: Ich kenne die nicht normalisierte Dichte weder für f () noch für g ()


Haben Sie überlegt, die ecdfs zu verwenden?
Toby

Dies wird funktionieren, kann jedoch für die schwierige Wahl von f und g (nahe oder nahe Schwänze) beliebig langsam sein. Wenn Sie sich entscheiden, Proben außerhalb des Schwanzes zu ignorieren, haben Sie möglicherweise mehr Glück mit der Obergrenze des Roc.
Enthdegree

Antworten:


6

Hier gehe ich davon aus, dass Sie nur von den Modellen probieren können; Eine nicht normalisierte Dichtefunktion ist nicht verfügbar.

Du schreibst das

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

wo ich das Verhältnis der Wahrscheinlichkeiten zu . Alex Smola schreibt, obwohl in einem anderen Kontext, dass Sie diese Verhältnisse "leicht" schätzen können, indem Sie nur einen Klassifikator trainieren. Nehmen wir an, Sie haben einen Klassifikator , der Ihnen die Wahrscheinlichkeit angibt, dass eine Beobachtung durch erzeugt wurde . Man beachte, dass . Dann:p ( f | x ) x f p ( g | x ) = 1 - p ( f | x )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),

wobei der erste Schritt auf Bayes zurückzuführen ist und der letzte aus der Annahme folgt, dass .p(g)=p(f)

Das Erhalten eines solchen Klassifikators kann aus zwei Gründen recht einfach sein.

Zunächst können Sie stochastische Updates durchführen. Das heißt, wenn Sie einen gradientenbasierten Optimierer verwenden, wie er für logistische Regression oder neuronale Netze typisch ist, können Sie einfach aus jedem und eine Stichprobe ziehen und eine Aktualisierung vornehmen.gfg

Zweitens, da Sie praktisch unbegrenzte Daten haben - Sie können und einfach zu Tode abtasten -, müssen Sie sich keine Gedanken über Überanpassung oder ähnliches machen.gfg


6

Ich gehe davon aus, dass Sie und bis zu einer Normalisierungskonstante auswerten können . Bezeichne und .g f ( x ) = f u ( x ) / c f g ( x ) = g u ( x ) / c gfgf(x)=fu(x)/cfg(x)=gu(x)/cg

Ein konsistenter Schätzer, der verwendet werden kann, ist wobei ist ein Schätzer für die für das Verhältnis . Hier können Sie verwenden und als Instrumentaldichten für und sind und die Log - Verhältnis von nicht normalisierten Dichten Ziel. R = 1 / n

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

Lassen Sie also , und . Der Zähler von (1) konvergiert gegen . Der Nenner konvergiert gegen . Das Verhältnis ist durch den Satz der kontinuierlichen Abbildung konsistent. Das Protokoll des Verhältnisses wird durch erneutes kontinuierliches Mapping konsistent. { y i } π g { z i } π r c f c g{xi}πf{yi}πg{zi}πrcfcg

In Bezug auf den anderen Teil des Schätzers ist nach dem Gesetz der großen Zahlen.

1N.ichN.[Log(fu(zich)Gu(zich))fu(zich)πr(zich)]]wiecfE.[Log(fu(zich)Gu(zich))]]

Meine Motivation ist folgende:

D.K.L.(f||G)=- -f(x)Log(f(x)G(x))dx=- -f(x){Log[fu(x)Gu(x)]]+Log[cGcf]]}}dx=E.f[Logfu(x)Gu(x)]]+Log[cGcf]]=cf- -1E.πr[Logfu(x)Gu(x)fu(x)πr(x)]]+Log[cGcf]].
Also zerlege ich es einfach in handhabbare Teile.

Für weitere Ideen zur Simulation des Wahrscheinlichkeitsverhältnisses habe ich ein Papier gefunden, das einige enthält: https://projecteuclid.org/download/pdf_1/euclid.aos/1031594732


(+1) Hier ist anzumerken, dass die Wichtigkeitsabtastung eine extrem hohe Varianz (sogar eine unendliche Varianz) aufweisen kann, wenn die Zielverteilung dickere Schwänze aufweist als die Verteilung, aus der Sie die Abtastung vornehmen, und / oder die Anzahl der Dimensionen überhaupt groß ist.
David J. Harris

@ DavidJ.Harris sehr sehr wahr
Taylor

0

Neben der von @bayerj erwähnten probabilistischen Klassifikatormethode können Sie auch die in [1-2] abgeleitete Untergrenze der KL-Divergenz verwenden:

K.L.[fG]]supT.{E.xf[T.(x)]]- -E.xG[exp(T.(x)- -1)]]}},
wobei beliebig ist Funktion. Unter einigen milden Bedingungen ist die Grenze eng für: T.::X.R.
T.(x)=1+ln[f(x)G(x)]]

Um die KL-Divergenz zwischen und abzuschätzen , maximieren wir die Untergrenze für die Funktion .fGT.(x)

Verweise:

[1] Nguyen, X., Wainwright, MJ und Jordan, MI, 2010. Schätzung der Divergenzfunktionen und des Wahrscheinlichkeitsverhältnisses durch konvexe Risikominimierung. IEEE Transactions on Information Theory, 56 (11), S. 5847-5861.

[2] Nowozin, S., Cseke, B. und Tomioka, R., 2016. f-gan: Training generativer neuronaler Probenehmer unter Verwendung der Minimierung der Variationsdivergenz. Fortschritte in neuronalen Informationsverarbeitungssystemen (S. 271-279).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.