Oszacuj rozbieżność Kullback Leibler (KL) z Monte Carlo

10

Chcę oszacować rozbieżność KL między dwoma ciągłymi rozkładami f i g. Nie mogę jednak zapisać gęstości dla f lub g. Mogę próbkować zf i g za pomocą jakiejś metody (na przykład markov chain Monte Carlo).

Rozbieżność KL od f do g jest zdefiniowana w następujący sposób

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

To jest oczekiwanie na w odniesieniu do f, abyście mogli sobie wyobrazić jakieś oszacowanie Monte Carlolog(f(x)g(x))

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

Gdzie i indeksuje N próbek pobranych z f (tj. dla i = 1, ..., N)xif()

Ponieważ jednak nie znam f () i g (), nie mogę nawet użyć tego oszacowania Monte Carlo. Jaki jest standardowy sposób oszacowania KL w tej sytuacji?

EDYCJA: NIE znam nietypowej gęstości dla f () lub g ()

frelk
źródło
Czy zastanawiałeś się nad użyciem plików ecdfs?
Toby
to zadziała, ale może być dowolnie wolne przy trudnym wyborze f i g (blisko lub blisko ogona). Jeśli zdecydujesz się zignorować próbki z dala od ogonów, możesz mieć więcej szczęścia z górną granicą roc.
Christian Chapman
Zasadniczo duplikat: stats.stackexchange.com/questions/211175/…
kjetil b halvorsen

Odpowiedzi:

7

Zakładam, że możesz to ocenić f i gaż do stałej normalizującej. Oznaczaćf(x)=fu(x)/cf i g(x)=gu(x)/cg.

Spójnym estymatorem, który można zastosować, jest

DKL^(f||g)=[n1jfu(xj)/πf(xj)]11NiN[log(fu(zi)gu(zi))fu(zi)πr(zi)]log(r^)
gdzie
(1)r^=1/n1/njfu(xj)/πf(xj)jgu(yj)/πg(yj).
jest estymatorem próbkowania o istotnym znaczeniu dla stosunku cf/cg. Tutaj używaszπf i πg jako gęstości instrumentalne dla fu i gu odpowiednio i πr aby celować w stosunek logarytmiczny nietypowych gęstości.

Więc pozwól {xi}πf, {yi}πg, i {zi}πr. Licznik (1) jest zbieżny zcf. Mianownik jest zbieżny zcg. Współczynnik jest spójny z twierdzeniem o ciągłym odwzorowaniu. Rejestr współczynnika jest spójny poprzez ponowne mapowanie ciągłe.

Jeśli chodzi o drugą część estymatora,

1NiN[log(fu(zi)gu(zi))fu(zi)πr(zi)]ascfE[log(fu(zi)gu(zi))]
według prawa wielkich liczb.

Moja motywacja jest następująca:

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].
Więc po prostu rozbijam go na łatwe do ułożenia kawałki.

Aby uzyskać więcej pomysłów na temat symulacji współczynnika wiarygodności, znalazłem artykuł, który ma kilka: https://projecteuclid.org/download/pdf_1/euclid.aos/1031594732

Taylor
źródło
(+1) Warto tutaj zauważyć, że ważność próbkowania może mieć bardzo wysoką wariancję (nawet wariancję nieskończoną), jeśli rozkład docelowy ma grubsze ogony niż rozkład, z którego próbkujesz i / lub liczba wymiarów jest w ogóle duża.
David J. Harris
@ DavidJ.Harris bardzo bardzo prawda
Taylor
6

Tutaj zakładam, że możesz próbkować tylko z modeli; nietypowa funkcja gęstości nie jest dostępna.

Ty to piszesz

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

gdzie zdefiniowałem stosunek prawdopodobieństwa r. Alex Smola pisze, choć w innym kontekście , że można oszacować te współczynniki „łatwo”, po prostu trenując klasyfikatora. Załóżmy, że uzyskałeś klasyfikatorp(f|x), co może powiedzieć prawdopodobieństwo, że obserwacja x został wygenerowany przez f. Zauważ, żep(g|x)=1p(f|x). Następnie:

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),

gdzie pierwszy krok należy do Bayesa, a ostatni wynika z założenia, że p(g)=p(f).

Uzyskanie takiego klasyfikatora może być dość łatwe z dwóch powodów.

Po pierwsze, możesz wykonać aktualizacje stochastyczne. Oznacza to, że jeśli używasz optymalizatora opartego na gradiencie, co jest typowe dla regresji logistycznej lub sieci neuronowych, możesz po prostu pobrać próbki z każdegof i g i dokonaj aktualizacji.

Po drugie, ponieważ masz praktycznie nieograniczoną liczbę danych - możesz po prostu próbkować f i g na śmierć - nie musisz się martwić o nadmierne dopasowanie itp.

bayerj
źródło
0

Oprócz metody klasyfikatora probabilistycznego wspomnianej przez @bayerj, możesz również użyć dolnej granicy dywergencji KL uzyskanej w [1-2]:

KL[fg]supT{Exf[T(x)]Exg[exp(T(x)1)]},
gdzie T:XRjest funkcją arbitralną. W niektórych łagodnych warunkach granica jest ścisła dla:
T(x)=1+ln[f(x)g(x)]

Aby oszacować rozbieżność KL pomiędzy f i g, maksymalizujemy dolną granicę wrt do funkcji T(x).

Bibliografia:

[1] Nguyen, X., Wainwright, MJ i Jordan, MI, 2010. Oszacowanie funkcjonałów dywergencji i współczynnika prawdopodobieństwa poprzez minimalizację ryzyka wypukłości. Transakcje IEEE dotyczące teorii informacji, 56 (11), s. 5847–5861.

[2] Nowozin, S., Cseke, B. and Tomioka, R., 2016. f-gan: Trening generatywnych próbników neuronowych z wykorzystaniem minimalizacji dywergencji wariacyjnej. W postępach w neuronowych systemach przetwarzania informacji (str. 271–279).

Cuong
źródło