Cuando un conjunto de ecuaciones no puede resolverse analíticamente, entonces podemos usar un algoritmo de descenso de gradiente. Pero parece que también existe el método de simulación de Monte Carlo que puede usarse para resolver problemas que no tienen soluciones analíticas.
¿Cómo saber cuándo usar el descenso de gradiente y cuándo usar Monte Carlo? ¿O simplemente estoy confundiendo el término 'simulación' con 'optimización'?
¡Muchas gracias!
fuente
Ambas son enormes familias de algoritmos, por lo que es difícil darle una respuesta precisa, pero ...
El ascenso (o descenso) de gradiente es útil cuando desea encontrar un máximo (o mínimo). Por ejemplo, puede encontrar el modo de una distribución de probabilidad, o una combinación de parámetros que minimizan alguna función de pérdida. El "camino" que se necesita para encontrar estos extremos puede informarle un poco sobre la forma general de la función, pero no está destinada a hacerlo; de hecho, cuanto mejor funcione, menos sabrá sobre todo menos los extremos.
Los métodos de Monte Carlo llevan el nombre del casino de Monte Carlo porque, como el casino, dependen de la aleatorización. Se puede usar de muchas maneras diferentes, pero la mayoría de estas se enfocan en distribuciones aproximadas. Los algoritmos de Markov Chain Monte Carlo, por ejemplo, encuentran formas de muestrear eficientemente de distribuciones de probabilidad complicadas. Otras simulaciones de Monte Carlo podrían generar distribuciones sobre posibles resultados.
fuente
Como explicaron otros, el descenso / ascenso de gradiente realiza la optimización, es decir, encuentra el máximo o mínimo de una función. Monte Carlo es un método de simulación estocástica, es decir, aproxima una función de distribución acumulativa mediante muestreo aleatorio repetido. Esto también se llama "integración de Monte Carlo" porque el cdf de una distribución continua es en realidad una integral.
Lo que es común entre el descenso del gradiente y Monte Carlo es que ambos son particularmente útiles en problemas donde no existe una solución de forma cerrada. Puede usar la diferenciación simple para encontrar el punto máximo o mínimo de cualquier función convexa siempre que sea factible una solución analítica. Cuando tal solución no existe, debe usar un método iterativo como el descenso de gradiente. Es lo mismo para la simulación de Monte Carlo; Básicamente, puede utilizar la integración simple para calcular cualquier cdf analíticamente, pero no hay garantía de que siempre sea posible una solución de forma tan cerrada. El problema vuelve a resolverse con la simulación de Monte Carlo.
¿Se puede usar la pendiente de gradiente para la simulación y Monte Carlo para la optimización? La respuesta simple es no. Monte Carlo necesita un elemento estocástico (una distribución) para tomar muestras y el descenso por gradiente no tiene medios para manejar los problemas de información estocástica. Sin embargo, puede combinar la simulación con la optimización para producir algoritmos de optimización estocásticos más potentes que puedan resolver problemas muy complejos que el simple descenso de gradiente no puede resolver. Un ejemplo de esto sería el recocido simulado Monte Carlo.
fuente
Esta respuesta es parcialmente incorrecta. De hecho, puede combinar los métodos de Monte Carlo con el descenso de gradiente. Puede usar los métodos de Monte Carlo para estimar el gradiente de una función de pérdida, que luego se usa en el descenso de gradiente para actualizar los parámetros. Un método popular de Monte Carlo para estimar el gradiente es el estimador de gradiente de puntaje , que puede usarse, por ejemplo, en el aprendizaje de refuerzo. Ver Estimación de gradiente de Monte Carlo en Machine Learning (2019) por Shakir Mohamed et al. para más información.
fuente