Perkirakan divergensi Kullback Leibler (KL) dengan monte carlo

10

Saya ingin memperkirakan perbedaan KL antara dua distribusi kontinu f dan g. Namun, saya tidak bisa menuliskan kepadatan untuk f atau g. Saya dapat mengambil sampel dari kedua f dan g melalui beberapa metode (misalnya, rantai markov monte carlo).

Perbedaan KL dari f ke g didefinisikan seperti ini

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

Ini adalah harapan dari berkenaan dengan f sehingga Anda dapat membayangkan beberapa perkiraan monte carlolog(f(x)g(x))

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

Di mana saya mengindeks N sampel yang diambil dari f (yaitu untuk i = 1, ..., N)xif()

Namun, karena saya tidak tahu f () dan g (), saya bahkan tidak bisa menggunakan estimasi monte carlo ini. Apa cara standar memperkirakan KL dalam situasi ini?

Suntingan: Saya TIDAK tahu kepadatan tidak normal untuk f () atau g ()

frelk
sumber
Sudahkah Anda mempertimbangkan untuk menggunakan ecdf?
Toby
ini akan bekerja tetapi bisa lambat untuk pilihan f dan g yang sulit (tutup, atau tutup). Jika Anda memutuskan untuk mengabaikan sampel dari ekor maka Anda mungkin lebih beruntung dengan batas atas roc.
Christian Chapman
Pada dasarnya duplikat: stats.stackexchange.com/questions/211175/...
kjetil b halvorsen

Jawaban:

7

Saya berasumsi Anda dapat mengevaluasi dan hingga konstan normalisasi. Nyatakan dan .g f ( x ) = f u ( x ) / c f g ( x ) = g u ( x ) / c gfgf(x)=fu(x)/cfg(x)=gu(x)/cg

Pengukur yang konsisten yang dapat digunakan adalah mana adalah penaksir pengambilan sampel penting untuk rasio . Di sini Anda menggunakan dan masing-masing sebagai densitas instrumental untuk dan , dan untuk menargetkan rasio log dari kepadatan yang tidak dinormalisasi. 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

Jadi, biarkan , , dan . Pembilang (1) konvergen ke . Penyebut konvergen ke . Rasio ini konsisten dengan teorema pemetaan kontinu. Log rasio konsisten dengan pemetaan berkelanjutan lagi. { y i } π g { z i } π r c f c g{xi}πf{yi}πg{zi}πrcfcg

Mengenai bagian lain dari estimator, berdasarkan hukum angka besar.

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

Motivasi saya adalah sebagai berikut:

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].
Jadi saya memecahnya menjadi potongan-potongan yang bisa ditelusuri.

Untuk ide-ide lebih lanjut tentang cara mensimulasikan rasio likelhood, saya menemukan sebuah makalah yang memiliki beberapa: https://projecteuclid.org/download/pdf_1/euclid.aos/1031594732

Taylor
sumber
(+1) Penting untuk dicatat di sini bahwa sampel penting dapat memiliki varians yang sangat tinggi (bahkan varians tak terbatas) jika distribusi target memiliki ekor yang lebih gemuk daripada distribusi tempat Anda mengambil sampel dan / atau jumlah dimensi sama sekali besar.
David J. Harris
@ DavidJ.Harris sangat sangat benar
Taylor
6

Di sini saya berasumsi bahwa Anda hanya dapat mencicipi dari model; fungsi kepadatan yang tidak normal tidak tersedia.

Anda menulis itu

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

di mana saya telah menetapkan rasio probabilitas menjadi . Alex Smola menulis, meskipun dalam konteks yang berbeda Anda dapat memperkirakan rasio ini "dengan mudah" hanya dengan melatih classifier. Mari kita asumsikan Anda telah memperoleh classifier , yang dapat memberi tahu Anda probabilitas bahwa observasi telah dihasilkan oleh . Perhatikan bahwa . Kemudian: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),

di mana langkah pertama adalah karena Bayes dan yang terakhir mengikuti dari asumsi bahwa .p(g)=p(f)

Mendapatkan penggolong seperti itu bisa sangat mudah karena dua alasan.

Pertama, Anda dapat melakukan pembaruan stokastik. Itu berarti bahwa jika Anda menggunakan pengoptimal berbasis gradien, seperti tipikal untuk regresi logistik atau jaringan saraf, Anda bisa menggambar sampel dari masing-masing dan dan membuat pembaruan.fg

Kedua, karena Anda memiliki data yang hampir tidak terbatas - Anda dapat mengambil sampel dan sampai mati - Anda tidak perlu khawatir tentang overfitting atau sejenisnya.fg

bayerj
sumber
0

Selain metode klasifikasi probabilistik yang disebutkan oleh @bayerj, Anda juga dapat menggunakan batas bawah dari perbedaan KL yang diturunkan dalam [1-2]:

KL[fg]supT{Exf[T(x)]Exg[exp(T(x)1)]},
mana adalah arbitrer fungsi. Dalam beberapa kondisi ringan, batasnya ketat untuk: T:XR
T(x)=1+ln[f(x)g(x)]

Untuk memperkirakan divergensi KL antara dan , kami memaksimalkan wrt batas bawah ke fungsi .fgT(x)

Referensi:

[1] Nguyen, X., Wainwright, MJ dan Jordan, MI, 2010. Memperkirakan fungsi divergensi dan rasio kemungkinan dengan minimalisasi risiko cembung. Transaksi IEEE tentang Teori Informasi, 56 (11), hlm.5847-5861.

[2] Nowozin, S., Cseke, B. dan Tomioka, R., 2016. f-gan: Melatih pengambil sampel saraf generatif menggunakan minimalisasi divergence variasional. Dalam Kemajuan dalam sistem pemrosesan informasi saraf (hal. 271-279).

Cuong
sumber