68 votos

Por qué consideramos la probabilidad logarítmica en lugar de la probabilidad en la distribución gaussiana

Estoy leyendo Distribución Gaussiana de un libro de aprendizaje automático. Afirma que -

Determinaremos los valores de los parámetros desconocidos $\mu$ a $\sigma^2$ en la gaussiana maximizando la función de verosimilitud. En la práctica, es más conveniente maximizar el logaritmo de la función de verosimilitud probabilidad. Dado que el logaritmo es una función monotónicamente creciente de su argumento, la maximización del logaritmo de una función es equivalente a la maximización de la propia función. Tomar el logaritmo no sólo simplifica el análisis matemático posterior, sino que también ayuda numéricamente porque el producto de un gran número de pequeñas probabilidades puede desbordar fácilmente la precisión numérica del del ordenador, lo que se resuelve calculando en su lugar la suma de las probabilidades logarítmicas. de las probabilidades.

¿alguien puede darme alguna intuición al respecto con algún ejemplo? Donde la probabilidad logarítmica es más conveniente que la probabilidad. Por favor, denme un ejemplo práctico.

Gracias de antemano.

75voto

user141344 Puntos 61
  1. Es extremadamente útil, por ejemplo, cuando se desea calcular el probabilidad conjunta para un conjunto de puntos independientes e idénticamente distribuidos. Suponiendo que usted tiene sus puntos: $$X=\{x_1,x_2,\ldots,x_N\} $$ La probabilidad total es el producto de la probabilidad de cada punto, es decir $$p(X\mid\Theta)=\prod_{i=1}^Np(x_i\mid\Theta) $$ donde $\Theta$ son los parámetros del modelo: vector de medias $\mu$ y la matriz de covarianza $\Sigma$ . Si utilizas la log-verosimilitud acabarás con sum en lugar de producto: $$\ln p(X\mid\Theta)=\sum_{i=1}^N\ln p(x_i\mid\Theta) $$

  2. También en el caso de Gaussian, permite evitar el cálculo de la exponencial:

    $$p(x\mid\Theta) = \dfrac{1}{(\sqrt{2\pi})^d\sqrt{\det\Sigma}}e^{-\frac{1}{2}(x-\mu)^T \Sigma^{-1}(x-\mu)}$$ Que se convierte en:

    $$\ln p(x\mid\Theta) = -\frac{d}{2}\ln(2\pi)-\frac{1}{2}\ln(\det \Sigma)-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)$$

  3. Como mencionaste $\ln x$ es una función monotónicamente creciente, por lo que las log-verosimilitudes tienen las mismas relaciones de orden que las probabilidades:

    $$p(x\mid\Theta_1)>p(x\mid\Theta_2) \Leftrightarrow \ln p(x\mid\Theta_1)>\ln p(x\mid\Theta_2)$$

  4. Desde el punto de vista de la complejidad computacional, se puede imaginar que primero de todo la suma es menos costosa que la multiplicación (aunque hoy en día son casi iguales). Pero lo que es aún más importante, las probabilidades se harían muy pequeñas y se precisión de coma flotante muy rápidamente, produciendo un desbordamiento. un desbordamiento por defecto. Por eso es mucho más conveniente utilizar el logaritmo de la probabilidad. Simplemente intente calcular la probabilidad a mano, utilizando una calculadora de bolsillo - casi imposible.

    Además, en el marco de clasificación puede simplificar aún más los cálculos. Las relaciones de orden seguirán siendo válidas si se suprime la división por $2$ y el $d\ln(2\pi)$ término. Puede hacerlo porque son independientes de la clase. Además, como se puede observar si varianza de ambas clases es la misma ( $\Sigma_1=\Sigma_2 $ ), entonces también puede eliminar el $\ln(\det \Sigma) $ plazo.

13voto

SoftwareGeek Puntos 2899

En primer lugar, como ya se ha dicho, el logaritmo es monotónicamente creciente, por lo que maximizar la verosimilitud es equivalente a maximizar el logaritmo de la verosimilitud. Además, se puede hacer uso de $\ln(ab) = \ln(a) + \ln(b)$ . Muchas ecuaciones se simplifican significativamente porque se obtienen sumas donde antes se tenían productos y ahora se pueden maximizar simplemente tomando derivadas y poniendo igual a $0$ .

5voto

Quizá un ejemplo práctico para los informáticos: Como mencionó @jojek

$$p(X|\Theta) = \prod_{i=1}^N p(x_i|\Theta)$$

y

$$\ln p(X| \Theta) = \sum_{i=1}^N \ln p(x_i| \Theta)$$

Así que si ejecutas un pequeño script en python podrás verlo directamente:

>>> import numpy as np

# Create some small probability values.
>>> r = np.random.random_sample((100,)) * 0.000001

# Take the log of each (I ignore the logarithms basis, because it does not matter here).
>>> l = [np.log(x) for x in r]
# Compute product of probability values.
>>> np.product(r)
0.0

# Compute sum of log of probability values.
>>> np.sum(l)
-1472.245511811776

Aquí puedes ver que es más práctico trabajar con logaritmos. Especialmente en el aprendizaje automático, donde se computa con muchos números muy pequeños (por ejemplo, comprobar los pesos de una red neuronal), esto puede conducir a resultados mucho mejores.

1voto

Al_Pastor Puntos 8

Muy bien, hablemos primero de lo que es la probabilidad. La verosimilitud es la probabilidad de ver ciertos datos cuando el modelo es fijo (fijo significa que es para un modelo particular o el modelo que tenemos ahora mismo después de entrenarlo para un número particular de épocas). Consideremos el modelo desde una perspectiva generativa. Para cualquier modelo aleatorio, representa/resume alguna distribución de datos con su parámetro. Ahora usted puede pensar en el modelo como cualquier modelo sofisticado de aprendizaje automático como la red neuronal con millones de parámetros, o incluso un modelo muy simple con 2 parámetros (media y desviación estándar) que es en su caso. Todo lo que hace es resumir algunos puntos de muestra y de esta manera, nuestro objetivo es obtener una aproximación de la población (lo más cerca posible) de donde se recogen las propias muestras.

Ahora piensa que estás entrenando tu modelo (en este caso una Distribución Gaussiana) para representar un conjunto particular de datos, de tal manera que no necesitas recordar todos los miles de puntos de datos, pero puedes capturar su comportamiento con estos dos parámetros (media y desviación estándar) de tu modelo. Ahora, ¿cuál debería ser nuestro objetivo? Afinar el parámetro de tal manera que represente nuestros puntos de muestra actuales, ¿verdad? En otras palabras, queremos afinarlo de tal manera que, este modelo/distribución se acerque lo más posible a la distribución desconocida de la cual esos puntos son incluso muestreados. En otras palabras, si tomamos muestras de nuestro modelo gaussiano, debería ser muy probable encontrar puntos que estén muy cerca del punto en el que este modelo está entrenado. Pero la cuestión es cómo medir que su modelo es capaz de producir puntos similares a sus datos de entrenamiento. Aquí es donde entra en juego la MLE (Estimación de Máxima Verosimilitud).

Ahora bien, es muy lógico que no nos interese que el modelo aprenda un único punto, sino que queremos que aprenda un conjunto de puntos (conjunto de datos de entrenamiento). Por lo tanto, tenemos que medir la distribución de probabilidad conjunta de todo el conjunto de datos (condición sobre el modelo , o podemos decir con respecto al modelo ). Pero ahora piense, hay infinitas posibilidades de valores, para un punto individual la probabilidad es muy baja (considerada como 0 en casos continuos). Aparte de esto, la probabilidad siempre se encuentra entre [0, 1]. Por lo tanto, para cada uno de los puntos, la probabilidad no es superior a 1. Por lo tanto, si se multiplican todos juntos para encontrar la probabilidad conjunta (con respecto al modelo), entonces básicamente se están multiplicando demasiados números que no son más que 1. Lo que conducirá a un desbordamiento matemático en nuestras máquinas de computación. Nótese que, no es una limitación de las matemáticas, sino que es la limitación del dispositivo donde lo calcularemos. Nuestros dispositivos informáticos trabajan con una precisión de coma flotante limitada. Por lo tanto, es muy probable que al multiplicar un número tan pequeño el resultado sea 0. Esto no es lo que queremos, ¿verdad? Esto no es lo que queremos, ¿verdad? Además, multiplicar es una operación pesada. Así que, como remedio, tomamos el logaritmo de la probabilidad e intentamos maximizarlo, de forma que nuestro modelo sea cada vez más capaz de imitar los datos de entrenamiento.

Como el logaritmo es una función monotónicamente creciente (es decir, si aumenta el valor, el logaritmo de ese valor también aumentará). Por lo tanto, como sólo necesitamos comparar para encontrar la mejor probabilidad, no nos importa cuál es su valor real, lo único que nos importa es si el logaritmo de la probabilidad es creciente o no. Matemáticamente, lo siguiente es a menudo inviable de realizar computacionalmente: $$p(X\mid\Theta)=\prod_{i=1}^Np(x_i\mid\Theta)$$ Así que hacemos lo siguiente: $$\ln p(X\mid\Theta)=\sum_{i=1}^N\ln p(x_i\mid\Theta)$$

¿Qué es? No es más que tu modelo (sus parámetros: media y desviación típica).

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