Je veux estimer la divergence KL entre deux distributions continues f et g. Cependant, je ne peux pas écrire la densité pour f ou g. Je peux échantillonner à la fois f et g via une méthode (par exemple, la chaîne markov monte carlo).
La divergence KL de f à g est définie comme ceci
C'est l'attente de par rapport à f, donc vous pourriez imaginer une estimation de monte carlo
Où i indexe N échantillons tirés de f (c'est-à-dire pour i = 1, ..., N)
Cependant, comme je ne connais pas f () et g (), je ne peux même pas utiliser cette estimation de monte carlo. Quelle est la méthode standard d'estimation du KL dans cette situation?
EDIT: Je ne connais PAS la densité non normalisée pour f () ou g ()
kullback-leibler
frelk
la source
la source
Réponses:
Je suppose que vous pouvez évaluer et jusqu'à une constante de normalisation. Notons et .g f ( x ) = f u ( x ) / c f g ( x ) = g u ( x ) / c gf g f(x)=fu(x)/cf g(x)=gu(x)/cg
Un estimateur cohérent qui peut être utilisé est où est un estimateur d'échantillonnage d'importance pour le rapport . Ici, vous utilisez et comme densités instrumentales pour et respectivement, et pour cibler le rapport de log des densités non normalisées. r = 1 / n
Soit donc , et . Le numérateur de (1) converge vers . Le dénominateur converge vers . Le rapport est cohérent par le théorème de cartographie continue. Le log du rapport est cohérent par cartographie continue à nouveau. { y i } ∼ π g { z i } ∼ π r c f c g{xi}∼πf {yi}∼πg {zi}∼πr cf cg
En ce qui concerne l'autre partie de l'estimateur, par la loi des grands nombres.
Ma motivation est la suivante:
Pour plus d'idées sur la façon de simuler le rapport de probabilité, j'ai trouvé un article qui en contient quelques-uns: https://projecteuclid.org/download/pdf_1/euclid.aos/1031594732
la source
Ici, je suppose que vous pouvez uniquement échantillonner à partir des modèles; une fonction de densité non normalisée n'est pas disponible.
Tu écris ça
où j'ai défini le rapport de probabilités à . Alex Smola écrit, bien que dans un contexte différent, vous pouvez estimer ces ratios "facilement" en formant simplement un classificateur. Supposons que vous avez obtenu un classificateur , qui peut vous indiquer la probabilité qu'une observation ait été générée par . Notez que . Alors:r p(f|x) x f p(g|x)=1−p(f|x)
où la première étape est due à Bayes et la dernière découle de l'hypothèse que .p(g)=p(f)
Obtenir un tel classificateur peut être assez facile pour deux raisons.
Tout d'abord, vous pouvez effectuer des mises à jour stochastiques. Cela signifie que si vous utilisez un optimiseur basé sur un gradient, comme c'est généralement le cas pour la régression logistique ou les réseaux de neurones, vous pouvez simplement tirer des échantillons de chaque et et effectuer une mise à jour.f g
Deuxièmement, comme vous avez des données pratiquement illimitées - vous pouvez simplement échantillonner et à mort - vous n'avez pas à vous soucier du sur-ajustement ou similaire.gf g
la source
Outre la méthode de classification probabiliste mentionnée par @bayerj, vous pouvez également utiliser la borne inférieure de la divergence KL dérivée dans [1-2]:
Pour estimer la divergence KL entre et , nous maximisons la limite inférieure wrt à la fonction .f g T(x)
Références:
[1] Nguyen, X., Wainwright, MJ et Jordan, MI, 2010. Estimation des fonctions de divergence et du rapport de vraisemblance par minimisation convexe du risque. Transactions IEEE sur la théorie de l'information, 56 (11), pp.5847-5861.
[2] Nowozin, S., Cseke, B. et Tomioka, R., 2016. f-gan: formation d'échantillonneurs neuronaux génératifs utilisant la minimisation de la divergence variationnelle. Dans Advances in neural information processing systems (pp. 271-279).
la source