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
Vahvistusoppimisen Perusteet

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

Kuinka ne toimivat?

Monte Carlo -menetelmät voivat vaihdella tehtävästä toiseen, mutta kaikille on tyypillistä yhtenäinen kaava:

  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 arvion tuottamiseksi.

Esimerkkejä

Vaikka yllä kuvattu kaava saattaa vaikuttaa monimutkaiselta, seuraavat esimerkit auttavat selventämään sen taustalla olevaa ideaa.

Integraalin laskeminen

Integraalien laskeminen on haastava tehtävä, joka vaatii usein useiden menetelmien soveltamista oikean tuloksen saavuttamiseksi.

Tarkastellaan, kuinka Monte Carlo -menetelmää voidaan käyttää tämän integraalin ratkaisemiseen:

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 käytetään integraalin alla olevaa funktiota;
  4. Yhdistäminen: integraalin arvo määritellään 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 approksimointi

π\pi:n approksimointi on yksi tunnetuimmista Monte Carlo -menetelmän käyttökohteista. Se havainnollistaa, kuinka satunnaisotanta voi ratkaista geometrisen ongelman 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 nyt satunnaisia pisteitä neliön sisältä. Riittävän suurella otoskoolla:

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 seuraavasti:

π4Sisa¨lla¨ olevat pisteetKaikki pisteet\pi \approx 4 \cdot \frac{\text{Sisällä olevat pisteet}}{\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 peliautomaatit

Monikätisten peliautomaattien asetelmassa keskeinen tavoite on arvioida toiminnon arvo 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 Markovin päätösprosesseille

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 siitä, miten ympäristö toimii. Sen sijaan ne muodostavat arviot suoraan vuorovaikutuksen aikana tapahtuvista asioista. 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, mikäli 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

Awesome!

Completion rate improved to 2.7

bookMitä Ovat Monte Carlo -Menetelmät?

Pyyhkäise näyttääksesi valikon

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.

Kuinka ne toimivat?

Monte Carlo -menetelmät voivat vaihdella tehtävästä toiseen, mutta kaikille on tyypillistä yhtenäinen kaava:

  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 arvion tuottamiseksi.

Esimerkkejä

Vaikka yllä kuvattu kaava saattaa vaikuttaa monimutkaiselta, seuraavat esimerkit auttavat selventämään sen taustalla olevaa ideaa.

Integraalin laskeminen

Integraalien laskeminen on haastava tehtävä, joka vaatii usein useiden menetelmien soveltamista oikean tuloksen saavuttamiseksi.

Tarkastellaan, kuinka Monte Carlo -menetelmää voidaan käyttää tämän integraalin ratkaisemiseen:

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 käytetään integraalin alla olevaa funktiota;
  4. Yhdistäminen: integraalin arvo määritellään 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 approksimointi

π\pi:n approksimointi on yksi tunnetuimmista Monte Carlo -menetelmän käyttökohteista. Se havainnollistaa, kuinka satunnaisotanta voi ratkaista geometrisen ongelman 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 nyt satunnaisia pisteitä neliön sisältä. Riittävän suurella otoskoolla:

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 seuraavasti:

π4Sisa¨lla¨ olevat pisteetKaikki pisteet\pi \approx 4 \cdot \frac{\text{Sisällä olevat pisteet}}{\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 peliautomaatit

Monikätisten peliautomaattien asetelmassa keskeinen tavoite on arvioida toiminnon arvo 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 Markovin päätösprosesseille

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 siitä, miten ympäristö toimii. Sen sijaan ne muodostavat arviot suoraan vuorovaikutuksen aikana tapahtuvista asioista. 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, mikäli 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