En la mayoría de las tareas de aprendizaje automático en las que puede formular alguna probabilidad que debería maximizarse, en realidad optimizaríamos la probabilidad de lugar de la probabilidad de algunos parámetros . Por ejemplo, en el entrenamiento de máxima verosimilitud, generalmente es el log-verosimilitud. Al hacer esto con algún método de gradiente, esto implica un factor:log p θ
Ver aquí o aquí para algunos ejemplos.
Por supuesto, la optimización es equivalente, pero el gradiente será diferente, por lo que cualquier método basado en gradiente se comportará de manera diferente (especialmente los métodos de gradiente estocástico). ¿Hay alguna justificación de que el gradiente funcione mejor que el gradiente ?p
Respuestas:
Los métodos de gradiente generalmente funcionan mejor optimizando que porque el gradiente de generalmente está más bien escalado . Es decir, tiene un tamaño que refleja de manera consistente y útil la geometría de la función objetivo, lo que hace que sea más fácil seleccionar un tamaño de paso apropiado y llegar al óptimo en menos pasos.p ( x ) log p ( x )logp(x) p(x) logp(x)
Para ver lo que quiero decir, comparar el proceso de optimización de gradiente para y . En cualquier punto , el gradiente de esSi multiplicamos eso por , obtenemos el tamaño de paso exacto necesario para llegar al óptimo global en el origen, sin importar quép(x)=exp(−x2) f(x)=logp(x)=−x2 x f(x)
En contraste, el gradiente de tiene propiedades globales muy pobres para la optimización. TenemosEsto multiplica el gradiente perfectamente agradable y de buen comportamiento con un factor que decae (más rápido que) exponencialmente a medida que aumenta. En , ya tenemos , por lo que un paso a lo largo del vector de gradiente es aproximadamente veces demasiado pequeño. Para obtener un tamaño de paso razonable hacia el óptimo, tendríamos que escalar el gradiente por el recíproco de eso, una enorme constantep(x)
En general, no hay garantía de que tenga propiedades de escala de gradiente tan buenas como este ejemplo de juguete, especialmente cuando tenemos más de una variable. Sin embargo, para casi cualquier problema no trivial, va a ser mucho mejor que . Esto se debe a que la probabilidad es un gran producto con un montón de términos, y el registro convierte ese producto en una suma, como se señala en varias otras respuestas. Siempre que los términos en la probabilidad se comporten bien desde el punto de vista de la optimización, su registro generalmente se comporta bien y la suma de las funciones se comporta bien. Por buen comportamiento me refiero alogp(x) logp(x) p(x) f′′(x) no cambia demasiado o demasiado rápido, lo que lleva a una función casi cuadrática que es fácil de optimizar mediante métodos de gradiente. La suma de una derivada es la derivada de la suma, sin importar el orden de la derivada, lo que ayuda a garantizar que ese gran montón de términos de suma tenga una segunda derivada muy razonable.
fuente
Underflow
La computadora usa una representación de fracciones de coma flotante de dígitos limitados, multiplicando tantas probabilidades se garantiza que será muy muy cercana a cero.
Con , no tenemos este problema.log
fuente
El logaritmo de la probabilidad de múltiples probabilidades conjuntas se simplifica a la suma de los logaritmos de las probabilidades individuales (y la regla de la suma es más fácil que la regla del producto para la diferenciación)
El logaritmo de un miembro de la familia de distribuciones de probabilidad exponencial (que incluye la normal ubicua) es polinomial en los parámetros (es decir, la probabilidad máxima se reduce a mínimos cuadrados para las distribuciones normales)
La última forma es más estable numéricamente y simbólicamente más fácil de diferenciar que la primera.
Por último, pero no menos importante, el logaritmo es una transformación monotónica que preserva las ubicaciones de los extremos (en particular, los parámetros estimados en máxima probabilidad son idénticos para la formulación original y la transformación transformada logarítmica)
fuente
Es mucho más fácil tomar una derivada de la suma de logaritmos que tomar una derivada del producto, que contiene, por ejemplo, 100 multiplicadores.
fuente
Como regla general, el problema de optimización más básico y fácil es optimizar una función cuadrática. Puede encontrar fácilmente el óptimo de dicha función sin importar dónde comience. La forma en que esto se manifieste depende del método específico, pero cuanto más se acerque su función a una cuadrática, mejor.
Como lo señaló TemplateRex, en una amplia variedad de problemas, las probabilidades que intervienen en el cálculo de la función de probabilidad provienen de la distribución normal, o son aproximadas por ella. Entonces, si trabajas en el registro, obtienes una buena función cuadrática. Mientras que si trabajas en las probabilidades, tienes una función que
¿Qué función preferirías optimizar, esto o esto ?
(Esto fue realmente fácil; en aplicaciones prácticas, su búsqueda puede comenzar tan lejos de lo óptimo que los valores y gradientes de la función, incluso si pudiera calcularlos numéricamente, serán indistinguibles de 0 e inútiles para la optimización algoritmo. Pero transformarse en una función cuadrática lo convierte en pan comido).
Tenga en cuenta que esto es completamente coherente con los problemas de estabilidad numérica ya mencionados. La razón por la que se requiere la escala de registro para trabajar con esta función es exactamente la misma razón por la que la probabilidad de registro se comporta mucho mejor (para la optimización y otros fines) que la original.
También podría abordar esto de otra manera. Incluso si no hubiera ninguna ventaja para el registro (que existe), de todos modos usaremos la escala de registro para derivaciones y cálculos, entonces, ¿qué razón hay para aplicar la transformación exp solo para calcular el gradiente? También podríamos ser consistentes con el registro.
fuente
Al usar aumentamos el rango dinámico del algoritmo de optimización. La en las aplicaciones suele ser un producto de funciones. Por ejemplo, en la estimación de máxima verosimilitud, es el producto de la forma , donde Es la función de densidad, que puede ser mayor o menor que 1, por cierto.lnp p L(x|θ)=Πni=1f(xi|θ) f(.)
Así que, cuando es muy grande, es decir, muestra grande, su función de verosimilitud es por lo general muy lejos de 1: o está muy pequeño o muy grande, porque es una función de potencia .n L(.) L∼f(.)n
Al tomar un registro, simplemente mejoramos el rango dinámico de cualquier algoritmo de optimización, permitiéndole trabajar con valores extremadamente grandes o pequeños de la misma manera.
fuente
Algunas buenas respuestas ya se han dado. Pero recientemente encontré uno nuevo:
A menudo, se le da un gran conjunto de datos de entrenamiento , y define algún modelo probabilístico , y desea maximizar la probabilidad de . Se supone que son independientes, es decir, tiene Ahora, a menudo haces algún tipo de entrenamiento estocástico (mini-lote) basado en gradiente, es decir, en cada paso, para tu pérdida , optimizas para , es decir,X p(x|θ) x∈X p(X|θ)=∏x∈Xp(x|θ). L L(X′|θ) X′⊂X θ′:=θ−∂∑x∈X′L(x|θ)∂θ.
Ahora, estos pasos estocásticos se acumulan aditivamente. Por eso, desea la propiedad que en general
Este es el caso de
L(X|θ)=∑x∈XL(x|θ). L(x|θ)=−logp(x|θ).
fuente