Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende ¿Qué Son los Métodos Monte Carlo? | Métodos de Monte Carlo
Introducción al Aprendizaje por Refuerzo
course content

Contenido del Curso

Introducción al Aprendizaje por Refuerzo

Introducción al Aprendizaje por Refuerzo

1. Teoría Central de RL
2. Problema del Bandido de Varios Brazos
3. Programación Dinámica
4. Métodos de Monte Carlo
5. Aprendizaje por Diferencia Temporal

book
¿Qué Son los Métodos Monte Carlo?

Note
Definición

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:

  1. Definir un dominio de posibles entradas;
  2. Generar entradas aleatorias a partir de una distribución de probabilidad;
  3. Evaluar una función sobre estas entradas;
  4. 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:

010111+(x+y)2dxdy\int_0^1 \int_0^1 \frac{1}{1 + (x + y)^2} \, dx \, dy
  1. Dominio de entrada: esta integral doble tiene dos variables, x[0,1]x \in [0, 1] y y[0,1]y \in [0, 1];
  2. Generación: ambas variables son independientes entre sí y están distribuidas uniformemente;
  3. Evaluación: para obtener un valor puntual, se puede utilizar la función bajo la integral;
  4. 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.
12345678910111213141516
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}")
copy

Aproximación de π\Large\pi

Aproximar π\pi 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 [0,1]×[0,1][0, 1] \times [0, 1];
  • El cuarto de círculo tiene radio 1 y está centrado en el origen.

El área del cuarto de círculo es πr24\displaystyle\frac{\pi r^2}{4} o π4\displaystyle\frac{\pi}{4}, y el área del cuadrado es 1. Ahora, muestree puntos aleatorios dentro del cuadrado. Con un tamaño de muestra suficientemente grande:

Puntos dentro del cuarto de cıˊrculoTotal de puntosπ4\frac{\text{Puntos dentro del cuarto de círculo}}{\text{Total de puntos}} \approx \frac\pi4

Así, el valor de π\pi puede calcularse como

π4Puntos dentroTotal de puntos\pi \approx 4 \cdot \frac{\text{Puntos dentro}}{\text{Total de puntos}}
1234567891011121314151617181920212223242526272829
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}")
copy

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.

question mark

¿Cuál es una ventaja principal de utilizar métodos Monte Carlo sobre los métodos de programación dinámica para resolver MDPs?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 1

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

course content

Contenido del Curso

Introducción al Aprendizaje por Refuerzo

Introducción al Aprendizaje por Refuerzo

1. Teoría Central de RL
2. Problema del Bandido de Varios Brazos
3. Programación Dinámica
4. Métodos de Monte Carlo
5. Aprendizaje por Diferencia Temporal

book
¿Qué Son los Métodos Monte Carlo?

Note
Definición

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:

  1. Definir un dominio de posibles entradas;
  2. Generar entradas aleatorias a partir de una distribución de probabilidad;
  3. Evaluar una función sobre estas entradas;
  4. 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:

010111+(x+y)2dxdy\int_0^1 \int_0^1 \frac{1}{1 + (x + y)^2} \, dx \, dy
  1. Dominio de entrada: esta integral doble tiene dos variables, x[0,1]x \in [0, 1] y y[0,1]y \in [0, 1];
  2. Generación: ambas variables son independientes entre sí y están distribuidas uniformemente;
  3. Evaluación: para obtener un valor puntual, se puede utilizar la función bajo la integral;
  4. 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.
12345678910111213141516
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}")
copy

Aproximación de π\Large\pi

Aproximar π\pi 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 [0,1]×[0,1][0, 1] \times [0, 1];
  • El cuarto de círculo tiene radio 1 y está centrado en el origen.

El área del cuarto de círculo es πr24\displaystyle\frac{\pi r^2}{4} o π4\displaystyle\frac{\pi}{4}, y el área del cuadrado es 1. Ahora, muestree puntos aleatorios dentro del cuadrado. Con un tamaño de muestra suficientemente grande:

Puntos dentro del cuarto de cıˊrculoTotal de puntosπ4\frac{\text{Puntos dentro del cuarto de círculo}}{\text{Total de puntos}} \approx \frac\pi4

Así, el valor de π\pi puede calcularse como

π4Puntos dentroTotal de puntos\pi \approx 4 \cdot \frac{\text{Puntos dentro}}{\text{Total de puntos}}
1234567891011121314151617181920212223242526272829
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}")
copy

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.

question mark

¿Cuál es una ventaja principal de utilizar métodos Monte Carlo sobre los métodos de programación dinámica para resolver MDPs?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 1
some-alt