Calcular la divergencia Kullback-Leibler en la práctica?

15

Estoy usando KL divergencia como una medida de disimilitud entre 2 y .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))

Si , podemos calcular fácilmente que 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

Pero si y cómo calcular elQ ( X i ) = 0 P ( X i ) l n ( Q ( X i ) )

P(Xi)0
Q(Xi)=0
P(Xi)ln(Q(Xi))
smwikipedia
fuente
Para ahorrar tiempo a los demás mirando lo que querías decir, ¡puedes cambiar a con el token "\ ne"P(Xi)!=0P(Xi)0
Además, ¿quiere decir que para todos los ? En este caso, la divergencia KL no está definida, ya que no es una función de probabilidad (esas deben sumar 1 sobre el soporte). Q(Xi)=0XiQ
@Matthew Gracias, corregido. Seguí mi hábito de codificación accidentalmente.
smwikipedia
@Matthew para algunos X i , no todos. Estoy considerando una solución alternativa para basar P y Q en el mismo conjunto de resultados y agregar un pequeño pseudo conteo , digamos 0.001, para los resultados que no se muestran. Puede evitar las probabilidades de valor cero. Pero no estoy seguro de si hay algún efecto secundario. Q(Xi)=0XiPQ
smwikipedia

Respuestas:

15

No puedes y no lo haces. Imagina que tienes una variable aleatoria de distribución de probabilidad P. Pero tu amigo Bob cree que el resultado proviene de la distribución de probabilidad P. Ha construido una codificación óptima, que minimiza el número de bits esperados que necesitará para decirte Salir. Pero, dado que construyó la codificación desde P y no desde Q, sus códigos serán más largos de lo necesario. La divergencia KL mide cuánto tiempo más durarán los códigos.

Ahora digamos que tiene una moneda y quiere decirte la secuencia de resultados que obtiene. Debido a que la cabeza y la cola son igualmente probables, les da ambos códigos de 1 bit. 0 para la cabeza, 1 para la cola. Si consigue cola cola cabeza cola, puede enviar 1 1 0 1. Ahora, si su moneda cae en el borde, ¡no puede decírtelo! Ningún código que te envíe funcionaría. En este punto, la divergencia KL se rompe.

Dado que la divergencia KL se rompe, tendrá que usar otra medida u otras distribuciones de probabilidad. Lo que debes hacer realmente depende de lo que quieras. ¿Por qué estás comparando distribuciones de probabilidad? ¿De dónde provienen sus distribuciones de probabilidad? ¿Se calculan a partir de los datos?

Usted dice que sus distribuciones de probabilidad provienen de documentos de lenguaje natural de alguna manera, y desea comparar pares de categorías.

Primero, recomendaría una medida de relación simétrica. Para esta aplicación, parece que A es tan similar a B como B es similar a A.

¿Has probado la medida de similitud de coseno? Es bastante común en PNL.

Si desea seguir con KL, una cosa que podría hacer es estimar una función de probabilidad de ambos documentos y luego ver cuántos bits adicionales necesitaría en promedio para cada documento. Es decir (P || (P + Q) / 2 + Q || (P + Q) / 2) / 2

usuario1417648
fuente
Gran explicación pero un poco confusa: la forma en que describe el primer párrafo, ¿no es eso KL (Q || P)?
Jurgen
8

En la práctica, me he encontrado con este problema también. En este caso, descubrí que sustituir el valor de 0 por un número muy pequeño puede causar problemas. Dependiendo del valor que utilice, introducirá un "sesgo" en el valor KL. Si está utilizando el valor KL para la prueba de hipótesis o algún otro uso que implique un umbral, entonces este pequeño valor puede sesgar sus resultados. He descubierto que la forma más efectiva de lidiar con esto es considerar solo calcular el KL sobre un espacio de hipótesis consistente X_i donde AMBOS P y Q no son cero. Esencialmente, esto limita el dominio del KL a un dominio donde ambos están definidos y lo mantiene alejado de problemas cuando usa el KL para realizar pruebas de hipótesis.

concipiotech
fuente
Gracias. Es una sugerencia interesante. Básicamente, también está tratando de basar P y Q en el mismo conjunto de resultados. Probaré eso.
smwikipedia
Si calculo KL sobre el subconjunto de datos donde P y Q no son cero, ¿necesito volver a normalizar P y Q sobre ese subconjunto? ¿O simplemente usa el valor de probabilidad original? Creo que debería. De lo contrario, P y Q todavía no están en la misma base.
smwikipedia
Solo intenté con tu sugerencia. P distribuye más de 10K resultados y Q distribuye más de 10K resultados también. Pero P y Q solo tienen resultados de 3K en común. Si solo uso los resultados 3K comunes para estimar la diferencia entre P y Q, no creo que sea razonable. Porque estamos ignorando muchas cosas. Y por cierto, el resultado con este enfoque es bastante diferente de lo que obtengo al agregar un pequeño número (o pseudo conteo).
smwikipedia
Agregue algo de contexto, estoy trabajando en un experimento de PNL. Tengo varias categorías de documentos y quiero decir qué tan cerca están relacionados cada par de categorías entre sí.
smwikipedia
5

Qi=0iQiQiQP . Si la aproximación predice probabilidad 0 para un evento que tiene una probabilidad positiva en la realidad, experimentará una sorpresa infinita un porcentaje del tiempo y, por lo tanto, una sorpresa infinita en promedio.

La solución es no permitir nunca 0 o 1 probabilidades en distribuciones estimadas. Esto generalmente se logra mediante alguna forma de suavizado como el suavizado de Good-Turing, el suavizado de Dirichlet o el suavizado de Laplace.

Daniel Mahler
fuente