Intuizione sulla divergenza di Kullback-Leibler (KL)


48

Ho imparato l'intuizione alla base della divergenza di KL in quanto una funzione di distribuzione del modello differisce dalla distribuzione teorica / reale dei dati. La fonte sto leggendo continua a dire che la comprensione intuitiva della 'distanza' tra queste due distribuzioni è utile, ma non dovrebbe essere preso alla lettera, perché per due distribuzioni e , il KL divergenza non è simmetrica in e .PQPQ

Non sono sicuro di come comprendere l'ultima affermazione, o è qui che l'intuizione della "distanza" si interrompe?

Gradirei un esempio semplice, ma perspicace.


3
Penso che devi fare un passo indietro e capire che in genere hai un'asimmetria nelle statistiche tra la distribuzione della popolazione reale e il campione (o vero e modello) ecc., E questo è ciò che KL Divergence riflette ... Nella teoria della probabilità generale non c'è questa distinzione in genere e una metrica simmetrica hanno più senso
seanv507,

1
Quale "fonte" stavi leggendo?
nbro,

Risposte:


34

Una distanza (metrica) deve essere simmetrica, ovvero . Ma, per definizione, non lo è.DD(P,Q)=D(Q,P)KL

Esempio: , , .Ω={A,B}P(A)=0.2,P(B)=0.8Q(A)=Q(B)=0.5

Abbiamo:

KL(P,Q)=P(A)logP(A)Q(A)+P(B)logP(B)Q(B)0.19

e

KL(Q,P)=Q(A)logQ(A)P(A)+Q(B)logQ(B)P(B)0.22

quindi e quindi non è una distanza (metrica).K LKL(P,Q)KL(Q,P)KL


51

Aggiungendo alle altre risposte eccellenti, una risposta con un altro punto di vista che forse può aggiungere un po 'più di intuizione, che è stato chiesto.

La divergenza di Kullback-Leibler è Se sono presenti due ipotesi riguardo che la distribuzione sta generando i dati , e , quindi è il rapporto di verosimiglianza per testare contro . Vediamo che la divergenza di Kullback-Leibler sopra è quindi il valore atteso del rapporto di lucidità sotto l'ipotesi alternativa. Quindi, è una misura della difficoltà di questo problema di prova, quando è l'ipotesi nulla. Quindi l'asimmetriaX P Q p ( x )

KL(P||Q)=p(x)logp(x)q(x)dx
XPQp(x)q(x)H0:QH1:PKL(P||Q)QKL(P||Q)KL(Q||P) riflette semplicemente l'asimmetria tra ipotesi nulla e alternativa.

Vediamo questo in un esempio particolare. Sia la distribuzione e la distribuzione normale standard (nell'esempio numerico sotto ). L'integrale che definisce la divergenza sembra complicato, quindi usiamo semplicemente l'integrazione numerica in R:PtνQν=1

> lLR_1  <-  function(x) {dt(x, 1, log=TRUE)-dnorm(x, log=TRUE)}  
> integrate(function(x) dt(x, 1)*lLR_1(x), lower=-Inf, upper=Inf)
Error in integrate(function(x) dt(x, 1) * lLR_1(x), lower = -Inf, upper = Inf) : 
  the integral is probably divergent

> lLR_2  <-  function(x) {-dt(x, 1, log=TRUE)+dnorm(x, log=TRUE)}  
> integrate(function(x) dnorm(x)*lLR_2(x), lower=-Inf, upper=Inf)
0.2592445 with absolute error < 1e-07

Nel primo caso l'integrale sembra divergere numericamente, indicando che la divergenza è molto grande o infinita, nel secondo caso è piccola, riassumendo: Il primo caso è verificato mediante integrazione simbolica analitica nella risposta di @ Xi'an qui: qual è il valore massimo della divergenza di Kullback-Leibler (KL) .

KL(P||Q)KL(Q||P)0.26

Cosa ci dice questo, in termini pratici? Se il modello null è una distribuzione normale standard ma i dati sono generati da una distribuzione , allora è abbastanza facile rifiutare il null! I dati di una distribuzione non sembrano normali dati distribuiti. Nell'altro caso, i ruoli vengono cambiati. Il valore nullo è ma i dati sono normali. Ma i normali dati distribuiti potrebbero apparire come dati , quindi questo problema è molto più difficile! Qui abbiamo la dimensione del campione e tutti i dati che potrebbero provenire da una distribuzione normale potrebbero anche provenire da un ! Cambiando i ruoli, no, la differenza deriva principalmente dai ruoli degli outlier.t1t1t1t1n=1t1

Sotto la distribuzione alternativa c'è una probabilità piuttosto grande di ottenere un campione che ha una probabilità molto piccola sotto il modello null (normale), dando una grande divergenza. Ma quando la distribuzione alternativa è normale, praticamente tutti i dati che possiamo ottenere avranno una probabilità moderata (in realtà, densità ...) sotto il modello null , quindi la divergenza è piccola.t1t1

Questo è legato alla mia risposta qui: perché dovremmo usare t errori invece di normali errori?


22

Innanzitutto, la violazione della condizione di simmetria è il problema più piccolo con la divergenza di Kullback-Leibler. viola anche la disuguaglianza del triangolo. Puoi semplicemente introdurre la versione simmetrica come , ma non è ancora metrica, perché sia che viola la disuguaglianza del triangolo. Per dimostrare che basta prendere tre monete distorte A, B e C che producono molte meno teste delle code, ad esempio monete con probabilità delle teste di: A = 0,1, B = 0,2 e C = 0,3. In entrambi i casi, la normale divergenza di KL D o la sua versione simmetrica SKL, controlla che non corrispondano alla disuguaglianza del triangolo fullfil D(P||Q)

SKL(P,Q)=D(P||Q)+D(Q||P)
D(P||Q)SKL(P,Q)S K L ( A , B ) + S K L ( B , C ) S K L ( A , C ) D ( P | | Q ) = i p i
D(A||B)+D(B||C)D(A||C)
SKL(A,B)+SKL(B,C)SKL(A,C)
Usa semplicemente queste formule:
D(P||Q)=ipilog(piqi)
SKL(P,Q)=i(piqi)log(piqi)

D(A||B)=0.1log(0.10.2)+0.9log(0.90.8)0.0159
D(B||C)0.0112
D(A||C)0.0505
0.0159+0.01120.0505
SKL(A,B)0.0352
SKL(B,C)0.0234
SKL(A,C)0.1173
0.0352+0.02340.1173

Ho introdotto questo esempio di proposito. Immaginiamo che stai lanciando alcune monete, ad esempio 100 volte. Fintanto che queste monete sono imparziali, dovresti semplicemente codificare i risultati del lancio con una sequenza di 0-1 bit, (1 testa, 0 coda). In una tale situazione in cui la probabilità di testa è uguale alla probabilità di coda e uguale a 0,5, questa è una codifica abbastanza efficace. Ora, abbiamo alcune monete distorte, quindi preferiamo codificare i risultati più probabili con un codice più breve, ad esempio unire gruppi di teste e code e rappresentare sequenze di teste k con codice più lungo rispetto alla sequenza di code K (sono più probabili). E qui si verifica la divergenza Kullback-Leibler . Se P rappresenta la vera distribuzione dei risultati e Q è solo un'approssimazione di P, alloraD(P||Q)D(P||Q) indica la penalità da pagare quando si codificano i risultati che provengono effettivamente da P distrib con codifica destinata a Q (penalità nel senso dei bit extra che è necessario utilizzare).

Se hai semplicemente bisogno della metrica, usa la distanza Bhattacharyya (ovviamente la versione modificata )1[xp(x)q(x)]


7
Se uno si preoccupa di avere effettivamente una metrica con una connessione più stretta alla divergenza di KL, potrebbe considerare la radice quadrata della divergenza di Jensen-Shannon al posto di Bhattacharyya.
cardinale

5

Sono tentato qui di dare una risposta puramente intuitiva alla tua domanda. Riformulando ciò che dici, la divergenza di KL è un modo per misurare la distanza tra due distribuzioni mentre calcoleresti la distanza tra due insiemi di dati in uno spazio di Hilbert, ma bisogna fare attenzione.

Perché? La divergenza KL non è una distanza che puoi usare di solito, come ad esempio la norma . In effetti, è positivo e uguale a zero se e solo se le due distribuzioni sono uguali (come negli assiomi per definire una distanza). Ma come detto, non è simmetrico. Ci sono modi per aggirare questo, ma ha senso che non sia simmetrico.L2

In effetti, la divergenza KL definisce la distanza tra una distribuzione del modello (che in realtà conosci) e una teorica tale che ha senso gestire diversamente (la distanza "teorica" ​​di a assumendo il modello ) e (la distanza "empirica" ​​di a assumendo i dati ) poiché significano misure abbastanza diverse.QPKL(P,Q)PQPKL(Q,P)PQQ


5

Il libro di testo Elements of Information Theory ci dà un esempio:

Ad esempio, se conoscessimo la vera distribuzione p della variabile casuale, potremmo costruire un codice con una lunghezza di descrizione media H (p). Se invece utilizzassimo il codice per una distribuzione q, avremmo bisogno di bit H (p) + D (p || q) sulla media per descrivere la variabile casuale.

Per parafrasare la frase precedente, possiamo dire che se cambiamo la distribuzione delle informazioni (da q a p) abbiamo bisogno in media di D (p || q) bit extra per codificare la nuova distribuzione.

Un'illustrazione

Permettetemi di illustrarlo usando una sua applicazione nell'elaborazione del linguaggio naturale.

Si consideri che un folto gruppo di persone, etichetta B, sono mediatori e ciascuno di essi viene assegnato un compito di scegliere un nome da turkey, animaled booke lo trasmette alla C. C'è un nome tipo A che possono inviare ciascuno di loro una e-mail per dare loro alcuni suggerimenti. Se nessuno nel gruppo ha ricevuto l'e-mail, può alzare le sopracciglia e esitare un po 'considerando ciò di cui C ha bisogno. E la probabilità che ciascuna opzione venga scelta è 1/3. Distribuzione uniformemente Toally (in caso contrario, potrebbe essere correlata alle proprie preferenze e ignoriamo semplicemente tali casi).

Ma se viene dato un verbo, come baste, 3/4 di loro possono scegliere turkeye 3/16 scegliere animale 1/16 scegliere book. Quindi quante informazioni in bit ciascuno dei mediatori ha ottenuto in media una volta che conoscono il verbo? È:

D(p(nouns|baste)||p(nouns))=x{turkey,animal,book}p(x|baste)log2p(x|baste)p(x)=34log23413+316log231613+116log211613=0.5709  bits

E se il verbo dato fosse read? Possiamo immaginare che tutti sceglierebbero booksenza esitazione, quindi il guadagno medio di informazioni per ciascun mediatore dal verbo readè:

D(p(nouns|read)||p(nouns))=x{book}p(x|read)log2p(x|read)p(x)=1log2113=1.5849  bits
Possiamo vedere che il verbo readpuò fornire ai mediatori maggiori informazioni. Ed è ciò che l'entropia relativa può misurare.

Continuiamo la nostra storia. Se C sospetta che il nome possa essere sbagliato perché A gli ha detto che avrebbe potuto fare un errore inviando il verbo sbagliato ai mediatori. Quindi quante informazioni in bit possono dare una brutta notizia a C?

1) se il verbo dato da A era baste:

D(p(nouns)||p(nouns|baste))=x{turkey,animal,book}p(x)log2p(x)p(x|baste)=13log21334+13log213316+13log213116=0.69172  bits

2) ma se il verbo fosse read?

D(p(nouns)||p(nouns|baste))=x{book,,}p(x)log2p(x)p(x|baste)=13log2131+13log2130+13log2130=  bits

Dal momento che C non sa mai cosa sarebbero gli altri due nomi e qualsiasi parola nel vocabolario sarebbe possibile.

Possiamo vedere che la divergenza di KL è asimmetrica.

Spero di avere ragione e, in caso contrario, commentare e aiutarmi a correggermi. Grazie in anticipo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.