Contenido del Curso
Introducción al Aprendizaje por Refuerzo
Introducción al Aprendizaje por Refuerzo
¿Qué Son los Métodos Monte Carlo?
Los métodos de Monte Carlo (MC) son una clase de algoritmos computacionales que se basan en el muestreo aleatorio para estimar resultados numéricos.
Los métodos de Monte Carlo se utilizan cuando las soluciones deterministas son difíciles o imposibles de obtener. Sustituyen los cálculos exactos por aproximaciones que mejoran con el número de muestras aleatorias.
¿Cómo funcionan?
Los métodos de Monte Carlo pueden variar de una tarea a otra, pero todos tienden a seguir un único patrón:
- Definir un dominio de posibles entradas;
- Generar entradas aleatorias a partir de una distribución de probabilidad;
- Evaluar una función sobre estas entradas;
- Agregar los resultados para producir una estimación.
Ejemplos
Aunque el patrón descrito anteriormente puede parecer complejo, estos ejemplos deberían ayudar a aclarar la idea que hay detrás.
Cálculo de Integrales
El cálculo de integrales es una tarea no trivial que generalmente requiere la aplicación de diversas técnicas para obtener el resultado correcto.
Intentemos aplicar el método de Monte Carlo para resolver esta integral:
- Dominio de entrada: esta integral doble tiene dos variables, y ;
- Generación: ambas variables son independientes entre sí y están distribuidas uniformemente;
- Evaluación: para obtener un valor puntual, se puede utilizar la función bajo la integral;
- Agregación: el valor de esta integral puede definirse como el volumen bajo la curva. El volumen puede calcularse como el producto del área de la base y la altura promedio. El área de la base es 1 (cuadrado unitario) y la altura promedio es el promedio de los resultados obtenidos en el paso anterior.
import numpy as np result = 0 # Many samples are required for estimates to be precise for i in range(100000): # Generation of random variables x, y = np.random.uniform(), np.random.uniform() # Computation of point value value = 1 / (1 + (x + y) ** 2) # Mean aggregation result += (value - result) / (i + 1) # Closed-form solution of this integral true_result = 2*np.arctan(2) - np.pi/2 - (1/2)*np.log(5) + np.log(2) print(f"Approximated result: {result}") print(f"True result: {true_result}")
Aproximación de
Aproximar es uno de los usos más emblemáticos del método de Monte Carlo. Ilustra cómo el muestreo aleatorio puede resolver un problema geométrico sin necesidad de cálculo complejo.
Considere un cuadrado unitario con un cuarto de círculo inscrito en él:
- El cuadrado abarca ;
- El cuarto de círculo tiene radio 1 y está centrado en el origen.
El área del cuarto de círculo es o , y el área del cuadrado es 1. Ahora, muestree puntos aleatorios dentro del cuadrado. Con un tamaño de muestra suficientemente grande:
Así, el valor de puede calcularse como
import numpy as np import matplotlib.pyplot as plt # Lists for coordinates inside = [] outside = [] # Many samples are required for estimates to be precise for _ in range(100000): # Generation of random variables x, y = np.random.uniform(), np.random.uniform() # Splitting points inside and outside of the circle if x**2 + y**2 <= 1: inside.append((x, y)) else: outside.append((x, y)) # Plotting points plt.figure(figsize=(6,6)) plt.scatter(*zip(*inside), color="blue", s=1, label="Inside") plt.scatter(*zip(*outside), color="red", s=1, label="Outside") plt.legend() plt.xlabel("x") plt.ylabel("y") plt.show() estimate = 4 * len(inside) / (len(inside) + len(outside)) print(f"Estimated value of pi: {estimate}") print(f"True value of pi: {np.pi}")
Bandidos de Múltiples Brazos
En el contexto de los bandidos de múltiples brazos, un objetivo clave es estimar el valor de acción para cada brazo, es decir, la recompensa esperada al elegir una acción en particular. Una estrategia común consiste en estimar estos valores mediante el promedio de las recompensas observadas obtenidas al tirar de cada brazo a lo largo del tiempo. Esta técnica es, de hecho, un método de Monte Carlo.
Métodos de Monte Carlo para MDPs
A diferencia de los métodos de programación dinámica, que dependen de un modelo completo y preciso de la dinámica del entorno, los métodos Monte Carlo aprenden únicamente de la experiencia — es decir, de secuencias reales o simuladas de estados, acciones y recompensas.
Esto hace que los enfoques Monte Carlo sean especialmente potentes: no requieren ningún conocimiento previo sobre cómo funciona el entorno. En su lugar, extraen estimaciones de valor directamente de lo que ocurre durante la interacción. En muchos escenarios del mundo real, donde modelar el entorno es poco práctico o imposible, esta capacidad de aprender de la experiencia directa es una gran ventaja.
Cuando la interacción directa con el entorno es costosa, arriesgada o lenta, los métodos Monte Carlo también pueden aprender de la experiencia simulada, siempre que exista una simulación confiable. Esto permite la exploración y el aprendizaje en un entorno controlado y repetible — aunque supone tener acceso a un modelo capaz de generar transiciones plausibles.
¡Gracias por tus comentarios!