Hitung Perbedaan Kullback-Leibler dalam praktik?

15

Saya menggunakan KL Divergence sebagai ukuran ketidaksamaan antara 2 p.m.f. P dan Q .

DKL(P||Q)=i=1Nln(PiQi)Pi
=P(Xi)ln(Q(Xi))+P(Xi)ln(P(Xi))

Jika maka kita dapat dengan mudah menghitung bahwa P ( X i ) l n ( Q ( X i ) ) = 0 P ( X i ) l n ( P ( X i ) ) = 0

P(Xi)=0
P(Xi)ln(Q(Xi))=0
P(Xi)ln(P(Xi))=0

Tetapi jika dan Q ( X i ) = 0 cara menghitung P ( X i ) l n ( Q ( X i ) )

P(Xi)0
Q(Xi)=0
P(Xi)ln(Q(Xi))
smwikipedia
sumber
P(Xi)!=0P(Xi)0
Q(Xi)=0XiQ
@ Matius Terima kasih, diperbaiki. Saya mengikuti kebiasaan pengkodean saya secara tidak sengaja.
smwikipedia
Q(Xi)=0XiPQ

Jawaban:

15

Anda tidak bisa dan tidak. Bayangkan Anda memiliki variabel acak dari distribusi probabilitas Q. Tetapi teman Anda Bob berpikir bahwa hasilnya berasal dari distribusi probabilitas P. Dia telah membangun pengkodean yang optimal, yang meminimalkan jumlah bit yang diharapkan yang perlu dia gunakan untuk memberi tahu Anda hasil. Tetapi, karena ia membangun encoding dari P dan bukan dari Q, kode-kodenya akan lebih lama dari yang diperlukan. KL-divergence mengukur berapa lama kodenya.

Sekarang katakanlah dia punya koin dan dia ingin memberi tahu Anda urutan hasil yang didapatnya. Karena kepala dan ekor sama-sama berkemungkinan besar ia memberikan keduanya kode 1-bit. 0 untuk kepala, 1 untuk ekor. Jika dia mendapatkan ekor ekor, dia dapat mengirim 1 1 0 1. Sekarang, jika koinnya mendarat di tepi dia tidak mungkin memberi tahu Anda! Tidak ada kode yang ia kirimkan kepada Anda yang akan berfungsi. Pada titik ini KL-divergensi terpecah.

Karena KL-divergence rusak, Anda harus menggunakan ukuran lain atau distribusi probabilitas lainnya. Apa yang harus Anda lakukan sangat tergantung pada apa yang Anda inginkan. Mengapa Anda membandingkan distribusi probabilitas? Dari mana distribusi probabilitas Anda berasal, apakah mereka diperkirakan dari data?

Anda mengatakan distribusi probabilitas Anda berasal dari dokumen bahasa alami, dan Anda ingin membandingkan pasangan kategori.

Pertama, saya akan merekomendasikan ukuran keterkaitan simetris. Untuk aplikasi ini kedengarannya seperti A sama dengan B seperti B mirip dengan A.

Sudahkah Anda mencoba ukuran kesamaan cosinus? Ini cukup umum di NLP.

Jika Anda ingin tetap menggunakan KL, satu hal yang bisa Anda lakukan adalah memperkirakan fungsi probabilitas dari kedua dokumen dan kemudian melihat berapa banyak bit tambahan yang Anda perlukan rata-rata untuk kedua dokumen. Yaitu (P || (P + Q) / 2 + Q || (P + Q) / 2) / 2

pengguna1417648
sumber
Penjelasan yang bagus tapi sedikit membingungkan: cara Anda menggambarkan paragraf pertama, bukankah itu KL (Q || P)?
Jurgen
8

Dalam praktiknya, saya juga mengalami masalah ini. Dalam hal ini, saya telah menemukan bahwa mengganti nilai 0 untuk beberapa angka yang sangat kecil dapat menyebabkan masalah. Bergantung pada nilai yang Anda gunakan, Anda akan memperkenalkan "bias" pada nilai KL. Jika Anda menggunakan nilai KL untuk pengujian hipotesis atau beberapa penggunaan lain yang melibatkan ambang, maka nilai kecil ini dapat membiaskan hasil Anda. Saya telah menemukan bahwa cara paling efektif untuk menangani ini adalah dengan hanya mempertimbangkan menghitung KL pada ruang hipotesis yang konsisten X_i di mana KEDUA P dan Q tidak nol. Pada dasarnya, ini membatasi domain KL ke domain di mana keduanya didefinisikan dan membuat Anda keluar dari masalah saat menggunakan KL untuk melakukan tes hipotesis.

concipiotech
sumber
Terima kasih. Itu saran yang menarik. Pada dasarnya, ini juga mencoba mendasarkan P dan Q pada set hasil yang sama. Saya akan mencobanya.
smwikipedia
Jika saya menghitung KL atas subset data di mana P dan Q bukan nol, apakah saya perlu menormalkan kembali P dan Q atas subset itu? Atau cukup gunakan nilai probabilitas asli? Saya pikir saya harus. Kalau tidak, P dan Q masih tidak di pangkalan yang sama.
smwikipedia
Saya baru saja mencoba dengan saran Anda. P mendistribusikan lebih dari 10K hasil, dan Q juga mendistribusikan lebih dari 10K hasil. Tetapi P dan Q hanya memiliki 3K hasil yang sama. Jika saya hanya menggunakan hasil 3K umum untuk memperkirakan perbedaan antara P dan Q, saya tidak berpikir itu masuk akal. Karena kita mengabaikan banyak hal. Dan btw, hasil dengan pendekatan ini sangat berbeda dari yang saya dapatkan dengan menambahkan sejumlah kecil (atau jumlah semu).
smwikipedia
Tambahkan beberapa konteks, saya sedang mengerjakan percobaan NLP. Saya memiliki beberapa kategori dokumen dan saya ingin memberi tahu seberapa dekat setiap pasangan kategori saling terkait.
smwikipedia
5

Memiliki distribusi probabilitas dimana Qsaya=0 untuk apa saja saya berarti Anda yakin akan hal itu Qsayatidak bisa terjadi. Karena itu jika aQsayaJika pernah terobsesi, hal itu akan merepresentasikan kejutan / informasi yang tidak terbatas, yang diwakili oleh informasi Shannon. Perbedaan KL mewakili jumlah kejutan tambahan (mis. Informasi hilang) per pengamatan jika distribusiQ digunakan sebagai perkiraan untuk distribusi P. Jika perkiraan tersebut memprediksikan 0 probabilitas untuk suatu peristiwa yang memiliki probabilitas postive dalam kenyataan, maka Anda akan mengalami kejutan tak terbatas beberapa persen dari waktu dan dengan demikian kejutan tak terbatas rata-rata.

Solusinya adalah jangan pernah membiarkan 0 atau 1 probabilitas dalam distribusi yang diperkirakan. Ini biasanya dicapai dengan beberapa bentuk smoothing seperti Good-Turing smoothing, Dirichlet smoothing atau Laplace smoothing.

Daniel Mahler
sumber