Uygulamada Kullback-Leibler Diverjansını hesaplayın.


15

KL Divergence'ı 2 ve arasındaki farklılığın bir ölçüsü olarak kullanıyorum .P Qp.m.f. PQ

=-P(Xi)ln(Q(Xi))+P(Xi)ln(P(Xi))

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

Eğer sonra kolayca hesaplayabilir 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

Ancak ve ise nasıl hesaplanırQ ( X i ) = 0 P ( X i ) l n ( Q ( X i ) )

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

Eğer değiştirmek isteyebilirsiniz ne anlama geldiğini bakarken başka herkese zaman kazandırmak için Üzere "\ ne" belirteç ileP ( X i ) 0P(Xi)!=0P(Xi)0

Ayrıca, tüm için mı demek ? Bu durumda KL sapması tanımlanmamıştır, çünkü bir olasılık fonksiyonu değildir (bunlar destek üzerinde 1'e eşit olmalıdır). X i QQ(Xi)=0XiQ

@Matthew Teşekkürler, düzeltildi. Kodlama alışkanlığımı yanlışlıkla takip ettim.
smwikipedia

@Matthew Bazı için , hepsi değil. Ben taban için bir çözüm düşünüyorum ve üzerinde aynı sette sonuçlarının ve küçük eklemek sözde sayımı değil-show-up sonuçlar için 0,001, derler. Sıfır değerli olasılıklardan kaçınabilir. Ancak herhangi bir yan etkisi olup olmadığından emin değilim. X i P QQ(Xi)=0XiPQ
smwikipedia

Yanıtlar:


15

Yapamazsın ve yapamazsın. Olasılık dağılımının rastgele bir değişkenine sahip olduğunuzu düşünün. Ama arkadaşınız Bob, sonucun P olasılık olasılığından geldiğini düşünüyor. sonuç. Ancak, kodlamayı Q'dan değil P'den oluşturduğundan, kodları gerekenden daha uzun olacaktır. KL-divergence kodların ne kadar uzun olacağını ölçer.

Şimdi bir madalyonun olduğunu ve elde ettiği sonuçların sırasını söylemek istediğini varsayalım. Baş ve kuyruk eşit derecede büyük olduğundan, onlara her iki 1 bitlik kodu verir. Kafa için 0, kuyruk için 1. Kuyruk kuyruğu baş kuyruğu alırsa, 1 1 0 1 gönderebilir. Şimdi, madeni parası kenara düşerse size söyleyemez! Size gönderdiği hiçbir kod işe yaramaz. Bu noktada KL ayrışması bozulur.

KL-ıraksama çöktüğünden, başka bir ölçü veya başka olasılık dağılımları kullanmanız gerekecektir. Yapmanız gereken gerçekten ne istediğinize bağlıdır. Neden olasılık dağılımlarını karşılaştırıyorsunuz? Olasılık dağılımlarınız nereden geliyor, verilerden mi tahmin ediliyor?

Olasılık dağılımlarınızın bir şekilde doğal dil belgelerinden geldiğini ve kategori çiftlerini karşılaştırmak istediğinizi söylüyorsunuz.

İlk olarak, simetrik bir ilişki ölçüsü öneririm. Bu uygulama için A'nın B'ye benzer olması, B'nin A'ya benzer olması gibi görünür.

Kosinüs benzerlik ölçüsünü denediniz mi? NLP'de oldukça yaygındır.

KL'ye bağlı kalmak istiyorsanız, yapabileceğiniz bir şey, her iki belgeden de bir olasılık işlevi tahmin etmek ve ardından her iki belge için ortalama kaç bit daha ihtiyacınız olduğunu görmek. Yani (P || (P + Q) / 2 + Q || (P + Q) / 2) / 2


Harika bir açıklama ama biraz kafa karıştırıcı: ilk paragrafı tanımlama şekliniz KL değil mi (Q || P)?
Jurgen

8

Uygulamada, ben de bu konuya girdim. Bu durumda, çok küçük bir sayı için 0 değerini değiştirmenin sorunlara neden olabileceğini buldum. Kullandığınız değere bağlı olarak KL değerinde bir "sapma" ortaya koyacaksınız. KL değerini hipotez testi veya bir eşik içeren başka bir kullanım için kullanıyorsanız, bu küçük değer sonuçlarınızı saptırabilir. Bununla başa çıkmanın en etkili yolunun KL'yi sadece İKİ P ve Q'nun sıfır olmadığı tutarlı bir hipotez alanı X_i üzerinde hesaplamayı düşünmektir. Temel olarak, KL'nin etki alanını her ikisinin de tanımlandığı bir etki alanı ile sınırlar ve hipotez testleri yapmak için KL'yi kullanırken sizi sıkıntıdan uzak tutar.


Teşekkürler. Bu ilginç bir öneri. Temel olarak, P ve Q'yu aynı sonuçlara dayandırmaya çalışıyor. Onu deneyeceğim.
smwikipedia

KL'yi P ve Q'nun sıfır olmadığı veri altkümesi üzerinden hesaplarsam, P ve Q'yu bu altkümeye göre yeniden normalleştirmem gerekir mi? Veya sadece orijinal olasılık değerini mi kullanıyorsunuz? Sanırım yapmalıyım. Aksi takdirde, P ve Q hala aynı tabanda değildir.
smwikipedia

Sadece öneriyi denedim. P, 10K'nın üzerinde sonuçları ve Q da 10K'nın üzerinde sonuçları dağıtır. Ancak P ve Q'nun ortak 3K sonuçları vardır. P ve Q arasındaki farkı tahmin etmek için sadece ortak 3K sonuçlarını kullanırsam, bunun makul olduğunu düşünmüyorum. Çünkü birçok şeyi görmezden geliyoruz. Ve btw, bu yaklaşımla sonuç, küçük bir sayı (veya sözde sayım) ekleyerek elde ettiğimden oldukça farklı.
smwikipedia

Bir bağlam ekleyin, ben bir NLP deneyi üzerinde çalışıyorum. Birkaç belge kategorim var ve her bir kategori çiftinin birbiriyle ne kadar ilişkili olduğunu anlatmak istiyorum.
smwikipedia

5

Herhangi bir için olan olasılık dağılımına sahip olmak , gerçekleşemeyeceğinden emin olduğunuz gelir. Dolayısıyla, eğer bir gözlemlenirse, Shannon bilgisinin temsil ettiği sonsuz sürpriz / bilgiyi temsil eder. KL ayrımı, dağılım dağıtım için bir tahmin olarak kullanılması durumunda gözlem başına ilave sürpriz miktarını (yani, kaybedilen bilgi) temsil eder . Yaklaşıklık, gerçekte pozitif bir olasılığı olan bir olayın 0 olasılığını öngörüyorsa, zamanın belirli bir yüzdesine sonsuz sürpriz ve dolayısıyla ortalama olarak sonsuz sürpriz yaşayacaksınız.i Q i Q i Q PQi=0iQiQiQP

Çözüm, tahmini dağılımlarda asla 0 veya 1 olasılığa izin vermemektir. Bu genellikle Good-Turing yumuşatma, Dirichlet yumuşatma veya Laplace yumuşatma gibi bir yumuşatma biçimiyle elde edilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.