Kursinnhold
Introduksjon til Forsterkende Læring
Introduksjon til Forsterkende Læring
Hva er Monte Carlo-metoder?
Monte Carlo (MC)-metoder er en klasse av beregningsalgoritmer som baserer seg på tilfeldig utvalg for å estimere numeriske resultater.
Monte Carlo-metoder brukes når deterministiske løsninger er vanskelige eller umulige å oppnå. De erstatter nøyaktige beregninger med tilnærminger som forbedres med antall tilfeldige utvalg.
Hvordan fungerer de?
Monte Carlo-metoder kan variere fra én oppgave til en annen, men alle følger et felles mønster:
- Definer et domene av mulige inputverdier;
- Generer tilfeldige inputverdier fra en sannsynlighetsfordeling;
- Evaluer en funksjon på disse inputverdiene;
- Aggreger resultatene for å produsere et estimat.
Eksempler
Selv om mønsteret beskrevet ovenfor kan virke komplekst, vil disse eksemplene bidra til å tydeliggjøre ideen bak det.
Integralkomputasjon
Å beregne integraler er en ikke-triviell oppgave som vanligvis krever bruk av flere teknikker for å oppnå korrekt resultat.
La oss forsøke å bruke Monte Carlo-metoden for å løse dette integralet:
- Inndataområde: Dette dobbeltintegralet har to variabler, og ;
- Generering: Begge disse variablene er uavhengige av hverandre og jevnt fordelt;
- Evaluering: For å få en punktverdi kan funksjonen under integralene brukes;
- Aggregasjon: Verdien av dette integralet kan defineres som volumet under kurven. Volumet kan beregnes som produktet av grunnflatearealet og gjennomsnittshøyden. Grunnflatearealet er 1 (enhet kvadrat) og gjennomsnittshøyden er gjennomsnittet av resultatene fra forrige steg.
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}")
Tilnærming av
Å tilnærme er en av de mest ikoniske bruksområdene for Monte Carlo-metoden. Dette illustrerer hvordan tilfeldig utvalg kan løse et geometrisk problem uten avansert kalkulus.
Tenk deg et enhetskvadrat med en kvart sirkel innsirklet i det:
- Kvadratet strekker seg over ;
- Kvartsirkelen har radius 1 og er sentrert i origo.
Arealet til kvartsirkelen er eller , og arealet til kvadratet er 1. Nå kan vi trekke tilfeldige punkter inne i kvadratet. Med et stort nok utvalg:
Dermed kan verdien av beregnes som
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}")
Multi-armed banditter
I multi-armed bandit-problemet er et sentralt mål å estimere aksjonsverdien for hver arm — det vil si den forventede belønningen ved å velge en bestemt handling. En vanlig strategi er å estimere disse verdiene ved å ta gjennomsnittet av de observerte belønningene som oppnås ved å trekke i hver arm over tid. Denne teknikken er faktisk en Monte Carlo-metode.
Monte Carlo-metoder for MDP-er
I motsetning til dynamisk programmering-metoder, som er avhengige av en fullstendig og nøyaktig modell av miljøets dynamikk, lærer Monte Carlo-metoder utelukkende fra erfaring — det vil si fra faktiske eller simulerte sekvenser av tilstander, handlinger og belønninger.
Dette gjør Monte Carlo-tilnærminger spesielt kraftfulle: de krever ingen forhåndskunnskap om hvordan miljøet fungerer. I stedet utleder de verdiberegninger direkte fra det som skjer under interaksjon. I mange virkelige scenarier, der modellering av miljøet er upraktisk eller umulig, er denne evnen til å lære fra rå erfaring en stor fordel.
Når direkte interaksjon med miljøet er kostbart, risikabelt eller tregt, kan Monte Carlo-metoder også lære fra simulert erfaring, forutsatt at det finnes en pålitelig simulering. Dette muliggjør utforskning og læring i et kontrollert, repeterbart miljø — selv om det forutsetter tilgang til en modell som kan generere plausible overganger.
Takk for tilbakemeldingene dine!