91 votos

¿Qué ventajas tiene la métrica de Wasserstein en comparación con la divergencia de Kullback-Leibler?

¿Cuál es la diferencia práctica entre Métrica Wasserstein y Divergencia de Kullback-Leibler ? La métrica de Wasserstein también se conoce como La distancia de la máquina terrestre .

De Wikipedia:

La métrica de Wasserstein (o Vaserstein) es una función de distancia definida entre distribuciones de probabilidad en un espacio métrico M dado.

y

La divergencia de Kullback-Leibler es una medida de cómo una distribución de probabilidad diverge de una segunda distribución de probabilidad esperada.

He visto que KL se utiliza en implementaciones de aprendizaje automático, pero hace poco me encontré con la métrica de Wasserstein. ¿Existe una buena directriz sobre cuándo utilizar una u otra?

(No tengo suficiente reputación para crear una nueva etiqueta con Wasserstein o Earth mover's distance .)

115voto

ndbd Puntos 166

Al considerar las ventajas de la métrica de Wasserstein en comparación con la divergencia KL, la más obvia es que W es una métrica mientras que la divergencia KL no lo es, ya que KL no es simétrica (es decir $D_{KL}(P||Q) \neq D_{KL}(Q||P)$ en general) y no satisface la desigualdad del triángulo (es decir $D_{KL}(R||P) \leq D_{KL}(Q||P) + D_{KL}(R||Q)$ no es válida en general).

En lo que respecta a la diferencia práctica, una de las más importantes es que, a diferencia de KL (y de muchas otras medidas), Wasserstein tiene en cuenta el espacio métrico, y lo que esto significa en términos menos abstractos quizá se explique mejor con un ejemplo (siéntase libre de saltar a la figura, el código sólo para producirlo):

# define samples this way as scipy.stats.wasserstein_distance can't take probability distributions directly
sampP = [1,1,1,1,1,1,2,3,4,5]
sampQ = [1,2,3,4,5,5,5,5,5,5]
# and for scipy.stats.entropy (gives KL divergence here) we want distributions
P = np.unique(sampP, return_counts=True)[1] / len(sampP)
Q = np.unique(sampQ, return_counts=True)[1] / len(sampQ)
# compare to this sample / distribution:
sampQ2 = [1,2,2,2,2,2,2,3,4,5]
Q2 = np.unique(sampQ2, return_counts=True)[1] / len(sampQ2)

fig = plt.figure(figsize=(10,7))
fig.subplots_adjust(wspace=0.5)
plt.subplot(2,2,1)
plt.bar(np.arange(len(P)), P, color='r')
plt.xticks(np.arange(len(P)), np.arange(1,5), fontsize=0)
plt.subplot(2,2,3)
plt.bar(np.arange(len(Q)), Q, color='b')
plt.xticks(np.arange(len(Q)), np.arange(1,5))
plt.title("Wasserstein distance {:.4}\nKL divergence {:.4}".format(
    scipy.stats.wasserstein_distance(sampP, sampQ), scipy.stats.entropy(P, Q)), fontsize=10)
plt.subplot(2,2,2)
plt.bar(np.arange(len(P)), P, color='r')
plt.xticks(np.arange(len(P)), np.arange(1,5), fontsize=0)
plt.subplot(2,2,4)
plt.bar(np.arange(len(Q2)), Q2, color='b')
plt.xticks(np.arange(len(Q2)), np.arange(1,5))
plt.title("Wasserstein distance {:.4}\nKL divergence {:.4}".format(
    scipy.stats.wasserstein_distance(sampP, sampQ2), scipy.stats.entropy(P, Q2)), fontsize=10)
plt.show()

Wasserstein metric and Kullback-Leibler divergences for two different pairs of distributions En este caso, las medidas entre las distribuciones roja y azul son las mismas para la divergencia KL, mientras que la distancia de Wasserstein mide el trabajo necesario para transportar la masa de probabilidad del estado rojo al estado azul utilizando el eje x como "carretera". Esta medida es, obviamente, mayor cuanto más alejada esté la masa de probabilidad (de ahí el nombre de distancia de la tierra). Por lo tanto, el que quiera usar depende de su área de aplicación y de lo que quiera medir. Como nota, en lugar de la divergencia KL también hay otras opciones como la distancia Jensen-Shannon que son métricas adecuadas.

40voto

user150025 Puntos 19

La métrica de Wasserstein aparece con mayor frecuencia en problemas de transporte óptimo en los que el objetivo es trasladar objetos desde una configuración determinada a otra deseada con el mínimo coste o la mínima distancia. El Kullback-Leibler (KL) es una divergencia (no una métrica) y aparece muy a menudo en estadística, aprendizaje automático y teoría de la información.

Además, la métrica de Wasserstein no requiere que ambas medidas estén en el mismo espacio de probabilidad, mientras que la divergencia KL requiere que ambas medidas se definan en el mismo espacio de probabilidad.

Quizá el punto más fácil para ver la diferencia entre la distancia de Wasserstein y la divergencia de KL sea el caso de la gaussiana multivariante, donde ambas tienen soluciones de forma cerrada. Supongamos que estas distribuciones tienen dimensión $k$ significa que $\mu_i$ y las matrices de covarianza $\Sigma_i$ , para $i=1,2$ . Las dos fórmulas son:

$$ W_{2} (\mathcal{N}_0, \mathcal{N}_1)^2 = \| \mu_1 - \mu_2 \|_2^2 + \mathop{\mathrm{tr}} \bigl( \Sigma_1 + \Sigma_2 - 2 \bigl( \Sigma_2^{1/2} \Sigma_1 \Sigma_2^{1/2} \bigr)^{1/2} \bigr) $$ y $$ D_\text{KL} (\mathcal{N}_0, \mathcal{N}_1) = \frac{1}{2}\left( \operatorname{tr} \left(\Sigma_1^{-1}\Sigma_0\right) + (\mu_1 - \mu_0)^\mathsf{T} \Sigma_1^{-1}(\mu_1 - \mu_0) - k + \ln \left(\frac{\det\Sigma_1}{\det\Sigma_0}\right) \right). $$ Para simplificar, consideremos $\Sigma_1=\Sigma_2=wI_k$ y $\mu_1\neq\mu_2$ . Con estas suposiciones simplificadoras el término de traza en Wasserstein es $0$ y el término de la traza en la divergencia KL será 0 cuando se combine con la $-k$ y el coeficiente log-determinante también es $0$ por lo que estas dos cantidades se convierten en: $$ W_{2} (\mathcal{N}_0, \mathcal{N}_1)^2 = \| \mu_1 - \mu_2 \|_2^2 $$ y $$ D_\text{KL} (\mathcal{N}_0, \mathcal{N}_1) = (\mu_1 - \mu_0)^\mathsf{T} \Sigma_1^{-1}(\mu_1 - \mu_0). $$ Obsérvese que la distancia de Wasserstein no cambia si la varianza cambia (digamos que toma $w$ como una gran cantidad en las matrices de covarianza) mientras que la divergencia KL sí. Esto se debe a que la distancia de Wasserstein es una función de distancia en los espacios de soporte conjunto de las dos medidas de probabilidad. En cambio, la divergencia KL es una divergencia y esta divergencia cambia en función del espacio de información (relación señal/ruido) de las distribuciones.

6voto

Nick C Puntos 21

La métrica de Wasserstein es útil en la validación de modelos, ya que sus unidades son las de la propia respuesta. Por ejemplo, si se comparan dos representaciones estocásticas del mismo sistema (por ejemplo, un modelo de orden reducido), $P$ y $Q$ y la respuesta está en unidades de desplazamiento, la métrica Wasserstein también está en unidades de desplazamiento. Si redujera su representación estocástica a una determinista, la FCD de la distribución de cada uno es una función escalonada. La métrica de Wasserstein es la diferencia de los valores.

Esta propiedad me parece una extensión muy natural para hablar de la diferencia absoluta entre dos variables aleatorias

4voto

Netanel Puntos 1

Como extensión de la respuesta de la antigüedad respecto a scipy.stats.wasserstein_distance : Si ya se han dividido los datos en bins con las distancias de los bins dadas, se puede utilizar u_weights y v_weights . Asumiendo que sus datos son equidistantes:

from scipy.stats import wasserstein_distance

wasserstein_distance(sampP, sampQ)
>> 2.0

wasserstein_distance(np.arange(len(P)), np.arange(len(Q)), P, Q))
>> 2.0

Ver scipy.stats._cdf_distance y scipy.stats.wasserstein_distance

Ejemplo adicional:

import numpy as np
from scipy.stats import wasserstein_distance

# example samples (not binned)
X1 = np.array([6, 1, 2, 3, 5, 5, 1])
X2 = np.array([1, 4, 3, 1, 6, 6, 4])

# equal distant binning for both samples
bins = np.arange(1, 8)
X1b, _ = np.histogram(X1, bins)
X2b, _ = np.histogram(X2, bins)

# bin "positions"
pos_X1 = np.arange(len(X1b))
pos_X2 = np.arange(len(X2b))

print(wasserstein_distance(X1, X2))
print(wasserstein_distance(pos_X1, pos_X2, X1b, X2b))

>> 0.5714285714285714
>> 0.5714285714285714

Cuando calculé la distancia de Wasserstein, trabajé con datos ya clasificados (histogramas). Para obtener el mismo resultado utilizando los datos ya binados de scipy.stats.wasserstein_distance tienes que añadir

  • u_weights correspondientes a los recuentos en cada casilla de los datos de la muestra datos de la muestra X1
  • v_weights correspondientes a los recuentos en cada bin de los datos binados de la muestra X2

así como las "posiciones" ( pos_X1 y pos_X2 ) de los contenedores. Describen las distancias entre los recipientes. Como la distancia de Wasserstein o la distancia de la tierra trata de minimizar trabajo que es proporcional a flujo veces distancia La distancia entre los contenedores es muy importante. Por supuesto, este ejemplo (muestra frente a histogramas) sólo da el mismo resultado si se eligen los bins como se ha descrito anteriormente (un bin por cada número entero entre 1 y 6).

2voto

La métrica de Wasserstein tiene un inconveniente principal en relación con la invariabilidad. Por ejemplo, para dominios homogéneos tan simples como el semiplano superior de Poincaré, la métrica de Wasserstein no es invariante con respecto al automorfismo de este espacio. Entonces, sólo es válida la métrica de Fisher de la Geometría de la Información y su extensión por Jean-Louis Koszul y Jean-Marie Souriau

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X