Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Mitä ovat Monte Carlo -menetelmät? | Monte Carlo -Menetelmät
Johdatus Vahvistusoppimiseen
course content

Kurssisisältö

Johdatus Vahvistusoppimiseen

Johdatus Vahvistusoppimiseen

1. RL:n Ydinteoria
2. Moniaseinen Bandiittiongelma
3. Dynaaminen Ohjelmointi
4. Monte Carlo -Menetelmät
5. Aikaisen Eron Oppiminen

book
Mitä ovat Monte Carlo -menetelmät?

Note
Määritelmä

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:

  1. Määrittele mahdollisten syötteiden joukko;
  2. Luo satunnaisia syötteitä todennäköisyysjakaumasta;
  3. Arvioi funktio näillä syötteillä;
  4. 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:

010111+(x+y)2dxdy\int_0^1 \int_0^1 \frac{1}{1 + (x + y)^2} \, dx \, dy
  1. Syötealue: tämä kaksoisintegraali sisältää kaksi muuttujaa, x[0,1]x \in [0, 1] ja y[0,1]y \in [0, 1];
  2. Generointi: molemmat muuttujat ovat toisistaan riippumattomia ja tasaisesti jakautuneita;
  3. Arviointi: pistearvon laskemiseen voidaan käyttää integraalin alla olevaa funktiota;
  4. 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.
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

π\Large\pi:n approksimaatio

π\pi: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 [0,1]×[0,1][0, 1] \times [0, 1];
  • Neljännesympyrän säde on 1 ja se on sijoitettu origoon.

Neljännesympyrän pinta-ala on πr24\displaystyle\frac{\pi r^2}{4} eli π4\displaystyle\frac{\pi}{4}, ja neliön pinta-ala on 1. Otetaan satunnaisia pisteitä neliön sisältä. Kun otoskoko on riittävän suuri:

Pisteita¨ nelja¨nnesympyra¨n sisa¨lla¨Kaikki pisteetπ4\frac{\text{Pisteitä neljännesympyrän sisällä}}{\text{Kaikki pisteet}} \approx \frac\pi4

Täten π\pi voidaan laskea kaavalla

π4Pisteita¨ sisa¨lla¨Kaikki pisteet\pi \approx 4 \cdot \frac{\text{Pisteitä sisällä}}{\text{Kaikki pisteet}}
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

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ä.

question mark

Mikä on Monte Carlo -menetelmien ensisijainen etu verrattuna dynaamisen ohjelmoinnin menetelmiin MDP-ongelmien ratkaisussa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 1

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

course content

Kurssisisältö

Johdatus Vahvistusoppimiseen

Johdatus Vahvistusoppimiseen

1. RL:n Ydinteoria
2. Moniaseinen Bandiittiongelma
3. Dynaaminen Ohjelmointi
4. Monte Carlo -Menetelmät
5. Aikaisen Eron Oppiminen

book
Mitä ovat Monte Carlo -menetelmät?

Note
Määritelmä

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:

  1. Määrittele mahdollisten syötteiden joukko;
  2. Luo satunnaisia syötteitä todennäköisyysjakaumasta;
  3. Arvioi funktio näillä syötteillä;
  4. 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:

010111+(x+y)2dxdy\int_0^1 \int_0^1 \frac{1}{1 + (x + y)^2} \, dx \, dy
  1. Syötealue: tämä kaksoisintegraali sisältää kaksi muuttujaa, x[0,1]x \in [0, 1] ja y[0,1]y \in [0, 1];
  2. Generointi: molemmat muuttujat ovat toisistaan riippumattomia ja tasaisesti jakautuneita;
  3. Arviointi: pistearvon laskemiseen voidaan käyttää integraalin alla olevaa funktiota;
  4. 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.
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

π\Large\pi:n approksimaatio

π\pi: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 [0,1]×[0,1][0, 1] \times [0, 1];
  • Neljännesympyrän säde on 1 ja se on sijoitettu origoon.

Neljännesympyrän pinta-ala on πr24\displaystyle\frac{\pi r^2}{4} eli π4\displaystyle\frac{\pi}{4}, ja neliön pinta-ala on 1. Otetaan satunnaisia pisteitä neliön sisältä. Kun otoskoko on riittävän suuri:

Pisteita¨ nelja¨nnesympyra¨n sisa¨lla¨Kaikki pisteetπ4\frac{\text{Pisteitä neljännesympyrän sisällä}}{\text{Kaikki pisteet}} \approx \frac\pi4

Täten π\pi voidaan laskea kaavalla

π4Pisteita¨ sisa¨lla¨Kaikki pisteet\pi \approx 4 \cdot \frac{\text{Pisteitä sisällä}}{\text{Kaikki pisteet}}
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

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ä.

question mark

Mikä on Monte Carlo -menetelmien ensisijainen etu verrattuna dynaamisen ohjelmoinnin menetelmiin MDP-ongelmien ratkaisussa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 1
some-alt