Cursusinhoud
Introductie tot Reinforcement Learning
Introductie tot Reinforcement Learning
Wat Zijn Monte Carlo-Methoden?
Monte Carlo (MC)-methoden zijn een klasse van computationele algoritmen die gebruikmaken van willekeurige steekproeven om numerieke resultaten te schatten.
Monte Carlo-methoden worden toegepast wanneer deterministische oplossingen moeilijk of onmogelijk te verkrijgen zijn. Ze vervangen exacte berekeningen door benaderingen die verbeteren naarmate het aantal willekeurige steekproeven toeneemt.
Werking
Monte Carlo-methoden kunnen verschillen per taak, maar ze volgen allemaal een vast patroon:
- Definieer een domein van mogelijke invoerwaarden;
- Genereer willekeurige invoerwaarden uit een kansverdeling;
- Evalueer een functie op deze invoerwaarden;
- Aggregatie van de resultaten om een schatting te produceren.
Voorbeelden
Hoewel het hierboven beschreven patroon complex kan lijken, zullen deze voorbeelden het onderliggende idee verduidelijken.
Integratieberekening
Het berekenen van integralen is een niet-triviale taak die doorgaans het toepassen van verschillende technieken vereist om het juiste resultaat te verkrijgen.
Laten we proberen de Monte Carlo-methode toe te passen om deze integraal op te lossen:
- Invoerdomein: deze dubbele integraal heeft twee variabelen, en ;
- Generatie: beide variabelen zijn onafhankelijk van elkaar en uniform verdeeld;
- Evaluatie: om een puntwaarde te verkrijgen, kan de functie onder het integraalteken worden gebruikt;
- Aggregatie: de waarde van deze integraal kan worden gedefinieerd als het volume onder de kromme. Het volume kan worden berekend als het product van het grondvlak en de gemiddelde hoogte. Het grondvlak is 1 (eenheidvierkant) en de gemiddelde hoogte is het gemiddelde van de resultaten uit de vorige stap.
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}")
Benadering van
Het benaderen van is een van de meest iconische toepassingen van de Monte Carlo-methode. Dit illustreert hoe willekeurige steekproeven een meetkundig probleem kunnen oplossen zonder complexe calculus.
Beschouw een eenheidscarré met daarin een kwartcirkel:
- Het vierkant beslaat ;
- De kwartcirkel heeft straal 1 en is gecentreerd in de oorsprong.
De oppervlakte van de kwartcirkel is ofwel , en de oppervlakte van het vierkant is 1. Stel nu dat we willekeurige punten binnen het vierkant nemen. Met een voldoende grote steekproefgrootte geldt:
Dus de waarde van kan worden berekend als
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 Bandits
In de multi-armed bandit-context is een belangrijk doel het schatten van de actie-waarde voor elke arm — dat wil zeggen, de verwachte beloning bij het kiezen van een bepaalde actie. Een veelgebruikte strategie is het schatten van deze waarden door het gemiddelde te nemen van de waargenomen beloningen die in de loop van de tijd zijn verkregen door aan elke arm te trekken. Deze techniek is in feite een Monte Carlo-methode.
Monte Carlo-methoden voor MDP's
In tegenstelling tot dynamische programmeermethoden, die afhankelijk zijn van een volledig en nauwkeurig model van de dynamiek van de omgeving, leren Monte Carlo-methoden uitsluitend uit ervaring — dat wil zeggen, uit daadwerkelijke of gesimuleerde reeksen van toestanden, acties en beloningen.
Dit maakt Monte Carlo-benaderingen bijzonder krachtig: ze vereisen geen enkele voorkennis over hoe de omgeving werkt. In plaats daarvan halen ze waarde-inschattingen direct uit wat er gebeurt tijdens de interactie. In veel praktijksituaties, waarin het modelleren van de omgeving onpraktisch of onmogelijk is, is dit vermogen om te leren uit ruwe ervaring een groot voordeel.
Wanneer directe interactie met de omgeving kostbaar, riskant of traag is, kunnen Monte Carlo-methoden ook leren uit gesimuleerde ervaring, mits er een betrouwbare simulatie beschikbaar is. Dit maakt verkenning en leren mogelijk in een gecontroleerde, herhaalbare omgeving — hoewel dit wel veronderstelt dat er toegang is tot een model dat geloofwaardige overgangen kan genereren.
Bedankt voor je feedback!