Kurssisisältö
Johdatus Vahvistusoppimiseen
Johdatus Vahvistusoppimiseen
Mitä ovat Monte Carlo -menetelmät?
Monte Carlo (MC) -menetelmät ovat laskennallisten algoritmien luokka, jotka perustuvat satunnaisotantaan numeeristen tulosten arvioimiseksi.
Monte Carlo -menetelmiä käytetään, kun determinististen ratkaisujen löytäminen on vaikeaa tai mahdotonta. Ne korvaavat tarkat laskelmat approksimaatioilla, jotka paranevat satunnaisotosten määrän kasvaessa.
Miten ne toimivat?
Monte Carlo -menetelmät voivat vaihdella tehtävästä toiseen, mutta kaikilla niillä on taipumus noudattaa yhtä kaavaa:
- Määrittele mahdollisten syötteiden joukko;
- Luo satunnaisia syötteitä todennäköisyysjakaumasta;
- Arvioi funktio näillä syötteillä;
- Yhdistä tulokset saadaksesi arvion.
Esimerkkejä
Vaikka yllä kuvattu kaava saattaa kuulostaa monimutkaiselta, seuraavat esimerkit auttavat selventämään sen taustalla olevaa ideaa.
Integraalin laskeminen
Integraalien laskeminen on haastava tehtävä, joka vaatii usein useiden eri menetelmien soveltamista oikean tuloksen saavuttamiseksi.
Kokeillaan soveltaa Monte Carlo -menetelmää tämän integraalin ratkaisemiseksi:
- Syötealue: tämä kaksoisintegraali sisältää kaksi muuttujaa, ja ;
- Generointi: molemmat muuttujat ovat toisistaan riippumattomia ja tasaisesti jakautuneita;
- Arviointi: pistearvon laskemiseen voidaan käyttää integraalin alla olevaa funktiota;
- Yhdistäminen: integraalin arvo voidaan määrittää käyrän alapuolisena tilavuutena. Tilavuus voidaan laskea pohjan pinta-alan ja keskimääräisen korkeuden tulona. Pohjan pinta-ala on 1 (yksikköneliö) ja keskimääräinen korkeus on edellisessä vaiheessa saatujen tulosten keskiarvo.
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}")
:n approksimaatio
:n approksimointi on yksi tunnetuimmista Monte Carlo -menetelmän käyttökohteista. Se havainnollistaa, kuinka satunnaisotannalla voidaan ratkaista geometrinen ongelma ilman monimutkaista laskentaa.
Tarkastellaan yksikköneliötä, jonka sisään on piirretty neljännesympyrä:
- Neliö kattaa alueen ;
- Neljännesympyrän säde on 1 ja se on sijoitettu origoon.
Neljännesympyrän pinta-ala on eli , ja neliön pinta-ala on 1. Otetaan satunnaisia pisteitä neliön sisältä. Kun otoskoko on riittävän suuri:
Täten voidaan laskea kaavalla
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}")
Monikätiset bandiitit
Monikätisen bandiitin asetelmassa keskeinen tavoite on arvioida toimintoarvo jokaiselle vivulle — eli odotettu palkkio tietyn toiminnon valitsemisesta. Yksi yleinen strategia on arvioida näitä arvoja keskittämällä havaittuja palkkioita, jotka on saatu vetämällä kutakin vipua ajan mittaan. Tämä tekniikka on itse asiassa Monte Carlo -menetelmä.
Monte Carlo -menetelmät MDP:ille
Toisin kuin dynaamisen ohjelmoinnin menetelmät, jotka perustuvat ympäristön dynamiikan täydelliseen ja tarkkaan malliin, Monte Carlo -menetelmät oppivat pelkästään kokemuksesta — eli todellisista tai simuloiduista tilojen, toimintojen ja palkkioiden jaksoista.
Tämä tekee Monte Carlo -lähestymistavoista erityisen tehokkaita: ne eivät vaadi ennakkotietoa ympäristön toiminnasta. Sen sijaan ne muodostavat arviot suoraan vuorovaikutuksen perusteella. Monissa todellisissa tilanteissa, joissa ympäristön mallintaminen on epäkäytännöllistä tai mahdotonta, kyky oppia raaka kokemuksesta on merkittävä etu.
Kun suora vuorovaikutus ympäristön kanssa on kallista, riskialtista tai hidasta, Monte Carlo -menetelmät voivat oppia myös simuloidusta kokemuksesta, jos luotettava simulaatio on saatavilla. Tämä mahdollistaa tutkimisen ja oppimisen hallitussa, toistettavassa ympäristössä — vaikka se edellyttääkin mallia, joka pystyy tuottamaan uskottavia siirtymiä.
Kiitos palautteestasi!