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 gebruikt wanneer deterministische oplossingen moeilijk of onmogelijk te verkrijgen zijn. Ze vervangen exacte berekeningen door benaderingen die verbeteren naarmate het aantal willekeurige steekproeven toeneemt.
Hoe werken ze?
Monte Carlo-methoden kunnen per taak verschillen, maar ze volgen allemaal een eenduidig 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.
Integralen berekenen
Het berekenen van integralen is een niet-triviale taak die doorgaans het toepassen van verschillende technieken vereist om het juiste resultaat te verkrijgen.
Hier wordt de Monte Carlo-methode toegepast om deze integraal op te lossen:
∫01∫011+(x+y)21dxdy- Invoerdomein: deze dubbele integraal heeft twee variabelen, x∈[0,1] en y∈[0,1];
- Generatie: beide variabelen zijn onafhankelijk van elkaar en uniform verdeeld;
- Evaluatie: voor het verkrijgen van een puntwaarde 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 (eenheid vierkant) en de gemiddelde hoogte is het gemiddelde van de resultaten uit de vorige stap.
12345678910111213141516import 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 eenheidsvierkant met daarin een kwartcirkel:
- Het vierkant beslaat [0,1]×[0,1];
- De kwartcirkel heeft straal 1 en is gecentreerd op de oorsprong.
De oppervlakte van de kwartcirkel is 4πr2 ofwel 4π, en de oppervlakte van het vierkant is 1. Stel nu dat we willekeurige punten binnen het vierkant nemen. Met een voldoende grote steekproefgrootte geldt:
Totaal aantal puntenPunten binnen de kwartcirkel≈4πDus de waarde van π kan worden berekend als
π≈4⋅Totaal aantal puntenPunten binnen1234567891011121314151617181920212223242526272829import 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 bandieten
In de multi-armed bandiet setting is een belangrijk doel het schatten van de actie-waarde voor elke arm — dat wil zeggen, de verwachte beloning van het kiezen van een bepaalde actie. Een veelgebruikte strategie is het schatten van deze waarden door het gemiddelde te nemen van de waargenomen beloningen verkregen door het trekken aan elke arm in de loop van de tijd. Deze techniek is in feite een Monte Carlo-methode.
Monte Carlo-methoden voor MDP's
In tegenstelling tot dynamisch programmeren methoden, die afhankelijk zijn van een volledig en nauwkeurig model van de dynamiek van de omgeving, leren Monte Carlo-methoden uitsluitend van ervaring — dat wil zeggen, van 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 van ruwe ervaring een groot voordeel.
Wanneer directe interactie met de omgeving kostbaar, risicovol of traag is, kunnen Monte Carlo-methoden ook leren van 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!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 2.7
Wat Zijn Monte Carlo-Methoden?
Veeg om het menu te tonen
Monte Carlo (MC)-methoden zijn een klasse van computationele algoritmen die gebruikmaken van willekeurige steekproeven om numerieke resultaten te schatten.
Monte Carlo-methoden worden gebruikt wanneer deterministische oplossingen moeilijk of onmogelijk te verkrijgen zijn. Ze vervangen exacte berekeningen door benaderingen die verbeteren naarmate het aantal willekeurige steekproeven toeneemt.
Hoe werken ze?
Monte Carlo-methoden kunnen per taak verschillen, maar ze volgen allemaal een eenduidig 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.
Integralen berekenen
Het berekenen van integralen is een niet-triviale taak die doorgaans het toepassen van verschillende technieken vereist om het juiste resultaat te verkrijgen.
Hier wordt de Monte Carlo-methode toegepast om deze integraal op te lossen:
∫01∫011+(x+y)21dxdy- Invoerdomein: deze dubbele integraal heeft twee variabelen, x∈[0,1] en y∈[0,1];
- Generatie: beide variabelen zijn onafhankelijk van elkaar en uniform verdeeld;
- Evaluatie: voor het verkrijgen van een puntwaarde 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 (eenheid vierkant) en de gemiddelde hoogte is het gemiddelde van de resultaten uit de vorige stap.
12345678910111213141516import 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 eenheidsvierkant met daarin een kwartcirkel:
- Het vierkant beslaat [0,1]×[0,1];
- De kwartcirkel heeft straal 1 en is gecentreerd op de oorsprong.
De oppervlakte van de kwartcirkel is 4πr2 ofwel 4π, en de oppervlakte van het vierkant is 1. Stel nu dat we willekeurige punten binnen het vierkant nemen. Met een voldoende grote steekproefgrootte geldt:
Totaal aantal puntenPunten binnen de kwartcirkel≈4πDus de waarde van π kan worden berekend als
π≈4⋅Totaal aantal puntenPunten binnen1234567891011121314151617181920212223242526272829import 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 bandieten
In de multi-armed bandiet setting is een belangrijk doel het schatten van de actie-waarde voor elke arm — dat wil zeggen, de verwachte beloning van het kiezen van een bepaalde actie. Een veelgebruikte strategie is het schatten van deze waarden door het gemiddelde te nemen van de waargenomen beloningen verkregen door het trekken aan elke arm in de loop van de tijd. Deze techniek is in feite een Monte Carlo-methode.
Monte Carlo-methoden voor MDP's
In tegenstelling tot dynamisch programmeren methoden, die afhankelijk zijn van een volledig en nauwkeurig model van de dynamiek van de omgeving, leren Monte Carlo-methoden uitsluitend van ervaring — dat wil zeggen, van 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 van ruwe ervaring een groot voordeel.
Wanneer directe interactie met de omgeving kostbaar, risicovol of traag is, kunnen Monte Carlo-methoden ook leren van 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!