Monte Carlo method/cs

=Úvod=

Metoda Monte Carlo je souhrnné označení pro soubor algoritmů využívajících generování pseudonáhodných čísel pro analýzu jevů, na které mají vliv náhodné faktory. Metoda je založena na statistickém přístupu, kde se na základě mnohokrát opakovaných náhodných pokusech získají obecné charakteristiky, pomocí kterých bude možné popsat modelovaný jev. Samotné dílčí pokusy nemají velkou vypovídající hodnotu, avšak mnohonásobné opakování těchto pokusů přináší použitelné výsledky díky platnosti zákona velkých čísel. Metoda Monte Carlo patří mezi stochastické simulační metody, protože opakování celé simulace se stejnými parametry vede k různým výsledkům. Metoda však umožňuje získání alespoň přibližných výsledků v situacích, kdy jsou běžné analytické přístupy příliš složité či nemožné. Při simulaci se metoda Monte Carlo spoléhá na pravděpodobnost, modelování náhodných veličin a statistické odhady jejich charakteristik. Metodu Monte Carlo lze také použít pro simulaci deterministických úloh, které nepracují s náhodnými veličinami. Růst výpočetního výkonu počítačů se výrazným způsobem projevil na nárůstu popularity metody Monte Carlo v posledních letech. Široké uplatnění nachází zejména v matematice, statistice, fyzice, informatice a finančním inženýrství.

=Historie=

Počátky použití typu analýzy, která později dostane název metoda Monte Carlo, lze vysledovat již v 18. století. Za první problém řešený pomocí přístupu Monte Carlo se považuje matematická úloha nazvaná Buffonova jehla. Úlohu v roce 1733 navrhl francouzský přírodovědec a matematik Georges Louis Leclerc de Buffon. Zadaní úlohy zní: „Máme k dispozici jehlu a list papíru, na kterém jsou vyobrazeny rovnoběžné linky. Vzdálenost mezi jednotlivými linkami se rovná délce jehly. Na papír opakovaně házíme jehlu. Jaká je pravděpodobnost, že jehla po dopadu překříží některou z linek?“ Pomocí této úlohy je možné odhadnout hodnotu π. Pro lepší představu si tento experiment předvedeme, místo jehly však budou použita párátka s délkou 6 cm. Vzdálenosti mezi jednotlivými linkami jsou také 6 cm.

Vzorec pro výpočet hodnoty π:

$$\pi = \dfrac{2*n}{k}$$

 n... počet hodů

k... počet překřížení 

Celkem bylo uskutečněno 20 hodů s párátky. Párátka překřížila některou z linek v 11 případech. Všechna překřížení jsou vyznačena na obrázku Obr. 1.

Nyní můžeme dosadit hodnoty z experimentu do vzorce:

$$\pi = \dfrac{2*20}{11} = 3,6364$$

Výsledný odhad hodnoty π činí 3,6364. Odhad je nadhodnocený o přibližně 15,8 %, protože skutečná hodnota π se rovná 3,1416.

Metoda Monte Carlo byla objevena ve 40. letech 20 století v Národní laboratoři Los Alamos v USA. O její vznik a následný rozvoj se zasloužili Stanislaw Ulam a John von Neumann, kteří v té době pracovali na vývoji atomové bomby v rámci projektu Manhattan. Zkoumali chování neutronů při průchodu různými druhy materiálů. Cílem jejich pokusů bylo předpovídání trajektorií neutronů. Společně vytvořili model života neutronů, který byl založen na ruletě. Jednotlivé etapy života neutronů byly reprezentovány různými ruletami. Každá ruleta měla své dílky rozdělena podle pravděpodobnosti, s jakou nastane daný jev. Například bylo zjištěno, že v jednom případě ze sta došlo k pohlcení neutronu atomem vodíku při jejich vzájemné srážce. Každé roztočení kola rulety simulovalo pohyb neutronu. Roztáčení rulety probíhalo do doby, než byl neutron pohlcen nebo dokud se mu nepodařilo projít celou cestu. Tímto způsobem bylo možné zjistit trajektorii pohybu každého neutronu. Metoda poté dostala název Monte Carlo. John von Neumann vytvořil program, který pomáhal s výpočty metody Monte Carlo na počítači ENIAC.

=Popis metody Monte Carlo=

Obecný postup při řešení úloh

 * 1) stanovení cíle
 * 2) příprava dat a výběr nástroje
 * 3) rozbor problému
 * 4) stanovení pravděpodobnostního rozdělení náhodných veličin
 * 5) vytvoření modelu
 * 6) vygenerování mnoha scénářů
 * 7) statistické zpracování výsledků

Nejdříve si stanovíme cíl simulace. Je potřeba si uvědomit, za jakým účelem simulaci provádíme a čeho má být simulací dosaženo. Dále je vhodné mít kvalitní soubor dat, ze kterých se bude při simulaci vycházet. Poté zvolíme vhodný nástroj pro simulaci Monte Carlo, například MS Excel, MATLAB, SAS apod. Následně rozebereme problém a zvolíme klíčové parametry, které budeme používat v simulaci. Určíme náhodné veličiny a stanovíme jejich pravděpodobnostní rozdělení. Při stanovování pravděpodobnostního rozdělení náhodných veličin se vychází z historických dat. Pokud historická data nejsou k dispozici, lze využít znalostí a zkušeností expertů na danou oblast. Poté pomocí matematických vzorců vytvoříme model a vygenerujeme velké množství scénářů. Doporučuje se nejprve vygenerovat menší počet scénářů a ujistit se, že simulace pracuje správně. Scénář vznikne tak, že se vygeneruje náhodná kombinace hodnot vstupních náhodných veličin podle jejich rozdělení pravděpodobností. Každý scénář tak představuje jeden možný vývoj reálné situace. Nakonec statisticky zpracujeme výsledky a vyvodíme z nich závěry.

Časté chyby

 * špatný výběr pravděpodobnostního rozdělení
 * špatně navržený generátor náhodných čísel
 * vyvození závěru z nedostatečného počtu opakování
 * nezahrnutí důležité veličiny do simulace
 * špatný odhad neznámých veličin

Nevhodný výběr pravděpodobnostního rozdělení podstatně zkreslí výsledky a může způsobit, že simulace bude nepoužitelná. Generátory náhodných čísel ve skutečnosti negenerují zcela náhodná čísla, z tohoto důvodu se označují jako generátory pseudonáhodných čísel. Přímým důsledkem potom je, že některé generátory pseudonáhodných čísel generují „náhodnější“ čísla než jiné generátory. Nedostatečné opakování scénářů způsobí velmi nepřesné výsledky, z nichž se nedá vyvodit věrohodný závěr. Opomenutí důležitých veličin či špatný odhad neznámých veličin povede k nereálným výsledkům simulace.

Nevýhody metody Monte Carlo
Kvalita celé simulace Monte Carlo se odvíjí od přesnosti a správnosti dat, ze kterých se při simulaci vychází. Jedná se o metodu založenou na statistických principech, proto všechny získané výsledky mají omezenou přesnost a spolehlivost. Dalším nedostatkem metody Monte Carlo je obtížnost stanovení pravděpodobnostního rozdělení náhodných faktorů spolu s respektováním jejich závislostí.

=Praktická aplikace=

Jako příklad aplikace metody Monte Carlo na konkrétní problém nám opět poslouží úloha Buffonova jehla. Tentokrát ji ale budeme řešit prostřednictvím počítače. Budeme simulovat 20 hodů jehlou, tento scénář poté zopakujeme 1 000 krát a odhadneme přibližnou hodnotu π. Pravděpodobnost, že jehla překříží některou z linek je 63,6619 %, pokud se délka jehly rovná vzdálenosti rovnoběžných linek. Nejdříve převedeme výše provedený reálný experiment s Buffonovou jehlou do prostředí MS Excel, neboť realita a počítačová simulace se v některých ohledech liší. Při řešení úlohy v Excelu je například nutné znát, s jakou pravděpodobností jehla po dopadu na papír překříží některou linku, abychom mohli rozhodnout, zda náhodně vygenerovaná hodnota bude spadat do intervalu „překříží“ nebo „nepřekříží“ (viz obrázek Obr. 2). Pro uskutečnění reálného experimentu jsme však nic podobného nepotřebovali znát. Vytvoření simulace podle kroků z reálného experimentu je sice dostatečně srozumitelné pro pochopení, avšak poněkud těžkopádné, protože nelze změnit počet hodů bez výraznějšího zásahu do kódu. Existuje elegantnější řešení, které využívá pravděpodobnostní rozdělení (viz obrázek Obr. 3). Hod jehlou je příkladem binomického rozdělení, protože výsledkem musí být buď „překříží“ nebo „nepřekříží“, jednotlivé hody jsou na sobě navzájem nezávislé a pravděpodobnost překřížení je v každém hodu stejná. Řešení Buffonovy jehly prostřednictvím metody Monte Carlo ukazuje obrázek Obr. 4. Scénář, ve kterém bylo simulováno 20 hodů jehlou, byl nejdříve zopakován 1 000 krát, a poté 10 000 krát. Vícenásobné opakování přináší přesnější výsledky. Odhad hodnoty π dle samotného 1. scénáře je 3,33, zatímco po tisícinásobném zopakování výsledný odhad činí 3,15 a po 10 000 opakování to je již 3,14.

=Redukce rozptylu= Podrobnější informace o způsobech redukce rozptylu

Redukce rozptylu odhadovaných veličin v simulaci zvyšuje přesnost metody Monte Carlo. Existují dvě hlavní strategie redukce rozptylu: snížení proměnlivosti vstupů nebo upravení výstupů simulace. Mezi nejvíce používané způsoby redukce rozptylu patří antitetické proměnné, metoda řídicích proměnných, metoda momentů, výběr podle důležitosti a stratifikovaný výběr.

=Interpretace výsledků= Podrobnější informace o interpretaci výsledků metody Monte Carlo

Před samotnou interpretací výsledků je vhodné provést validaci a verifikaci modelu. Validací se rozumí kontrola, zda má model smysl a chová se v souladu s realitou. Verifikace je kontrola počítačového kódu modelu, která ověřuje, zda model funguje přesně podle našich představ a provádí veškeré operace požadovaným způsobem. Také se doporučuje provést kontrolu přesnosti odhadů.

=Oblasti použití= Podrobnější informace o oblastech použití metody Monte Carlo

Metoda Monte Carlo nachází široké uplatnění v mnoha oborech lidské činnosti. Nejčastěji bývá využívána v následujících oblastech:

Matematika
Metoda Monte Carlo umožňuje řešit jednoduché i vícerozměrné integrály. Využívá se především pro počítání vícerozměrných integrálů, protože jejich způsob výpočtu pomocí běžných numerických metod je složitější než v případě výpočtu jednoduchých integrálů. Metoda Monte Carlo poskytuje lepší výsledky než jiné postupy. Lze ji také použít pro hledání kořenů rovnic nebo pro Millerův-Rabinův test prvočíselnosti, který dokáže rozhodnout, zda je dané celé číslo prvočíslem. Metoda Monte Carlo se také využívá pro řešení úloh optimalizace z operačního výzkumu.

Statistika
Metoda Monte Carlo je založena na statistických přístupech, proto není překvapivé, že se využívá i ve statistice samotné. Nejčastěji se s ní testují statistické hypotézy. Rostoucí popularitu zaznamenává v Bayesovské statistice, kde se využívá pro simulaci složitých modelů, které není možné zpracovat Bayesovskou analýzou. V Bayesovské statistice se používá Markovova metoda Monte Carlo, která je založena na Markovových řetězcích. Markovovův řetězec je náhodný proces, ve kterém pravděpodobnost přechodu mezi dvěma stavy není závislá na předchozích stavech procesu, řídí se tak pouze současným stavem procesu.

Fyzika
Metoda Monte Carlo využívá ve statistické fyzice, fyzikální chemii, kvantové fyzice, aerodynamice, fyzice částic či při předpovědi počasí. Často se využívá v případech, kdy není možné uskutečnit reálný experiment z důvodu nedostatku financí nebo nebezpečnosti. Statistická fyzika se zabývá zjišťováním vlastností makroskopického systému pomocí simulace chování velkého množství mikročástic, což je ideální pole působnosti pro metodu Monte Carlo, proto se zde také nejvíce využívá. Ve fyzikální chemii se pomocí metody Monte Carlo řeší sestavování rovnice modelovaného plynu.

Finanční inženýrství
Ve finančním inženýrství se metoda Monte Carlo používá pro simulaci různých zdrojů nejistoty, které mají vliv na hodnotu finančního instrumentu, portfolia nebo investice. Metoda nachází využití zejména v korporátních financích při oceňování ziskovosti projektů, v investování při predikování cen finančních instrumentů, měnových kurzů či ekonomických ukazatelů i pro oceňování portfolií a finančních derivátů.

Informatika
V počítačové grafice se metoda Monte Carlo využívá při renderování 3D modelů, kde se pomocí metody Monte Carlo náhodně generují odrazy světla od různých ploch. V roce 2006 byla vynalezena metoda, která se nazývá Monte Carlo vyhledávací strom. Využívá se při rozhodování umělé inteligence ve hrách. Metoda umožňuje umělé inteligenci zvolit nejlepší možný tah v dané situaci.

=Úloha k procvičení=

Obchod zabývající se digitální distribucí počítačových her právě uvádí do prodeje novou RPG hru. Obchod by potřeboval znát, kolik EUR utrží z prodeje této hry každý den. Cena hry se bude pohybovat kolem 40 EUR (+/- 5 EUR z důvodu slevových akcí apod.). Očekává se, že se denně prodá 50 000 (+/- 5 000) kopií hry. Pro zjednodušení předpokládejte normální rozdělení pravděpodobnosti.

Výsledky:

=Zajímavosti=

Metoda Monte Carlo dostala název podle slavných kasin v Monte Carlu, protože princip simulací Monte Carlo zahrnuje prvky nahodilosti a opakování obdobně jako ruleta v kasinu. První AAA počítačovou hrou využívající pokročilou umělou inteligenci, která je založena na Monte Carlo rozhodovacích stromech, se stala strategie Total War: Rome II.

=Odkazy=