Poprzedni wykład zakończyliśmy pesymistycznym twierdzeniem 13.4, że nie istnieją efektywne metody numerycznego całkowania funkcji wielu zmiennych, ponieważ ma miejsce zjawisko przekleństwa wymiaru. Zwróćmy jednak uwagę na to, że fakt istnienia przekleństwa wymiaru stwierdziliśmy przy założeniach, że:
(i) model obliczeniowy jest deterministyczny,
(ii) funkcje podcałkowe są -krotnie różniczkowalne po każdej zmiennej.
Można mieć nadzieję, że przekleństwo wymiaru zniknie, albo zostanie złagodzone, gdy przynajmniej jedno z tych założeń nie będzie spełnione.
Ten wykład poświęcimy (klasycznej) metodzie Monte Carlo numerycznego całkowania, która jest przykładem metody niedeterministycznej, tzn. takiej, która oblicza wynik wykorzystując zjawiska losowe. Chociaż może to brzmieć dziwnie, to właśnie niedeterministyczne zachowanie metody pozwala pokonać przekleństwo wymiaru.
Opisana dalej klasyczna metoda Monte Carlo związana jest ściśle ze Stanisławem Ulamem, uczniem Stefana Banacha i reprezentantem Lwowskiej Szkoły Matematycznej. Ulam zastosował metodę Monte Carlo do obliczania skomplikowanych całek w ramach ,,Manhattan Project” w Los Alamos (USA), w czasie II Wojny światowej.
Tak jak w poprzednim rozdziale chcemy obliczyć całkę
Zakładamy przy tym, że jest funkcją, której kwadrat jest całkowalny,
Klasyczna metoda Monte Carlo polega na przybliżeniu średnią arytmetyczną wartości funkcji w losowo wybranych punktach, tzn.
gdzie są punktami wylosowanymi niezależnie od siebie, każdy zgodnie z rozkładem jednostajnym na .
Konsekwencją zastosowania losowości jest to, że przy różnych realizacjach metody otrzymujemy różne wyniki, w zależności od wyboru punktów . Wynik jest więc zmienną losową, której wartość oczekiwana wynosi
Ponieważ różnica jest też zmienną losową, za błąd metody Monte Carlo dla danej funkcji przyjmiemy odchylenie standardowe,
Dla danej funkcji błąd metody Monte Carlo wynosi
gdzie
jest wariancją funkcji .
Zanim przystąpimy do dowodu zauważmy, że jest dobrze zdefiniowaną wielkością, bowiem nierówność
jest szczególnym przypadkiem znanej nierówności Schwarza dla całek.
Oznaczmy, dla uproszczenia, zmienną losową . Wtedy
(14.1) |
Ponadto
gdzie skorzystaliśmy z niezależności zmiennych losowych i dla . Stąd i z (14.1) dostajemy
co kończy dowód.
∎Zauważmy, że w dowodzie pokazaliśmy przy okazji nierówność Schwarza posługując się narzędziami rachunku prawdopodobieństwa.
Twierdzenie (14.1) mówi, że błąd metody Monte Carlo jest proporcjonalny do przy bardzo słabych wstępnych założeniach na funkcję (jedynie całkowalność kwadratu funkcji). Jest to istotna poprawa w porównaniu do błędu dla metod deterministycznych. W szczególności ważne jest, że wykładnik przy jest niezależny od wymiaru , a konsekwencją tego pokonanie przekleństwa wymiaru.
Dziwnym może wydawać się, że przekleństwo wymiaru można zlikwidować używając metod niedeterministycznych (losowych). Jednak niczego nie ma za darmo. Należy pamiętać, że jest to możliwe za cenę niepewności wyniku. O ile bowiem metoda deterministyczna produkuje zawsze ten sam wynik, metoda niedeterministyczna (taka jak Monte Carlo) produkuje różne wyniki zależnie od konkretnych realizacji zmiennych losowych. Dlatego, mimo iż błąd oczekiwany jest proporcjonalny do to nie mamy całkowitej pewności, że przy konkretnej realizacji otrzymany wynik jest tego samego rzędu. Z tego punktu widzenia warto przytoczyć następującą równość, która wynika z centralnego twierdzenia granicznego; mianowicie, dla dowolnych mamy
gdzie Prob oznacza prawdopodobieństwo względem rozkładu jednostajnego na .
Deterministyczne metody interpolacyjne z poprzedniego rozdziału można stosować jedynie do całkowania na -wymiarowych prostokątach. Metoda Monte Carlo ma oprócz wymienionych również i tą zaletę, że łatwo ją uogólnić na przypadek całkowania z wagą. Dla przybliżenia wartości
możemy bowiem zastosować wzór
przy czym są tym razem punktami wybranymi losowo i niezależnie od siebie, zgodnie z rozkładem na o gęstości .
Adaptując odpowiednio dowód twierdzenia 14.1 otrzymujemy następujące wyrażenie na błąd uogólnionej metody Monte Carlo.
Niech . Wtedy
gdzie
Zauważyliśmy, że zaletą metody Monte Carlo jest nie tylko jej prostota, ale również to, że błąd średni wynosi . Naturalnym jest teraz pytanie, czy błędu tego nie można poprawić. Temu celowi służą metody redukcji wariancji, które polegają w ogólności na redukcji czynnika . Spośród wielu technik redukcji wariancji skupimy uwagę na dwóch: losowaniu warstwowemu oraz funkcjach kontrolnych. Dla uproszczenia będziemy zakładać, że całkujemy z wagą jednostkową na kostce
Podzielmy obszar całkowania na rozłącznych podzbiorów tak, że
i zastosujmy Monte Carlo do całkowania po każdym , tzn. całkę przybliżymy wielkością
gdzie jest metodą Monte Carlo zastosowaną do całki
oraz .
Oznaczmy przez objętość -wymiarową podzbioru . Ponieważ zmienne losowe są parami niezależne dla , na podstawie twierdzenia 14.2 mamy
Przyjmijmy teraz, że
przy czym dla uproszczenia (ale bez utraty ogólności) zakładamy, że wielkości te są całkowite. Wtedy otrzymujemy
(14.2) |
Błąd tak zdefiniowanej metody nie jest większy od błędu klasycznej metody z Twierdzenia 14.1.
Dla dowolnej funkcji takiej, że mamy
przy czym równość zachodzi tylko wtedy gdy iloraz jest stały, niezależnie od .
Rzeczywiście, oznaczając
oraz wykorzystując nierówność Schwarza dla ciągów mamy
przy czym równość zachodzi tylko wtedy gdy wektory i są liniowo zależne, co jest równoważne warunkowi w treści twierdzenia.
Prawdziwość tezy pokazuje teraz porównanie wzorów na błędy obu metod.
∎Widzimy, że stosując losowanie warstwowe z ustalonym podziałem na podzbiory możemy co prawda zmiejszyć błąd, ale szybkość zbieżności pozostaje ta sama. A czy można poprawić zbieżność stosując różne podziały dla różnych wartości ? Okazuje się, że tak, o ile założymy pewną regularność funkcji .
Aby to uzyskać, najpierw przekształcimy wzór (14.2) na błąd metody do postaci
(14.3) |
gdzie
Załóżmy teraz, że spełnia warunek Lipschitza ze stałą ,
Wtedy istnieją takie, że , a stąd i z lipschitzowskości mamy, że dla dowolnego
gdzie
jest średnicą zbioru w normie max. W konsekwencji, ze wzoru (14.3) dostajemy następujące oszacowanie błędu:
Ustalmy teraz równomierny podział kostki na podkostek , każda o krawędzi długości (zakładamy, bez zmniejszenia ogólności, że jest całkowita) tak, że nasza metoda aproksymuje całkę na używając tylko jednej wartości. Wtedy oraz
Ostatecznie, otrzymany w ten sposób wariant losowania warstwowego jest zbieżny z wykładnikiem większym niż . Oczywiście, może to mieć praktyczne znaczenie jedynie dla małych wymiarów , bowiem dla dużych wykładnik jest właściwie równy .
Podobny efekt zwiększenia szybkości zbieżności można uzyskać stosując klasyczną Monte Carlo bezpośrednio do funkcji , gdzie jest pewną specjalnie dobraną funkcją, zwaną funkcją kontrolną.
Rzeczywiście, przedstawmy w postaci . Wtedy
co sugeruje zastosowanie następującej metody:
Pozostaje kwestia doboru funkcji tak, aby istotnie zmniejszyć wariancję . Weźmy najpierw funkcję schodkową postaci
gdzie
jest funkcją charakterystyczną zbioru , a dla dowolnych . Oczywiście, najlepiej byłoby wziąć tak, aby , ale jest to niemożliwe, bo nie znamy całek . (Znajomość tych całek nie była konieczna w przypadku losowania warstwowego!) Wtedy dostajemy ten sam efekt jak dla , tzn. dla lipschitzowskiej
(14.4) |
i dla odpowiadającej równomiernemu podziałowi na podkostek otrzymujemy błąd proporcjonalny do .
W ogólności, funkcję należy w praktyce wybierać tak, aby dobrze aproksymowała funkcję . Oczywiście, wybór ten musi bazować na informacji jaką posiadamy o .
Na przykład, dla funkcji -gładkich, tzn. dla można w ten sposób dostać jeszcze lepszy wykładnik. Rzeczywiście, niech będzie kawałkami wielomianem stopnia najwyżej po każdej zmiennej interpolującym , dla równomiernego podziału kostki jednostkowej na podkostek. Z rozdziału 13 wiemy, że wtedy dla funkcji błąd interpolacji jest postaci (zob. twierdzenie 13.2)
W konsekwencji, dla tak skonstruowanej metody dostajemy następujący błąd oczekiwany.
Dla mamy
Dodajmy, że jest w istocie metodą mieszaną, gdyż używa wartości funkcji obliczanych w punktach wybranych deterministycznie oraz w punktach wybranych losowo.
Zbieżności nie da się już poprawić w klasie . Dokładniej, można pokazać następujące twierdzenie, które jest odpowiednikiem twierdzenia 13.4 dla algorytmów niedeterministycznych.
Istnieje o następującej własności: dla dowolnej (deterministycznej lub niedeterministycznej) aproksymacji całki wykorzystującej wartości funkcji istnieje dla której , a błąd oczekiwany aproksymacji całki wynosi co najmniej .
Dotychczas milcząco przyjmowaliśmy, że umiemy generować ciągi
niezależnych liczb losowych zgodnie z danym rozkładem prawdopodobieństwa. Nie jest to jednak zadanie trywialne. W praktyce obliczeniowej liczby losowe uzyskujemy przez zastosowanie specjalnych programów. Ponieważ komputer jest urządzeniem deterministycznym, tak uzyskane ciągi nie są idealnie losowe już choćby dlatego, że są okresowe. Fakt ten wpływa na pogorszenie jakości wyniku i w szczególności powoduje, że ich użycie pozwala uzyskać jedynie kilka liczb znaczących, przy czym im większy wymiar zadania tym gorsza graniczna dokładność. Z tych względów mówimy raczej o generatorach liczb pseudo-losowych.
Generowanie liczb pseudolosowych jest bardzo obszernym tematem, my tylko zwrócimy uwagę na podstawowe metody.
Liniowe generatory kongruencyjne służą generowaniu ciągów losowych o rozkładzie jednostajnym na odcinku i zdefiniowane są w następujący prosty sposób. Startujemy z i kolejno obliczamy dla
Jakość takiego generatora zależy istotnie o wyboru liczb całkowitych , i . W szczgólności pożądane jest, aby generator miał maksymalny okres . Jeśli to warunkami dostatecznymi na to są:
(a) i są względnie pierwsze,
(b) jeśli dzieli to dzieli ,
(c) jeśli dzieli to dzieli .
Dostęp do dobrego generatora liczb losowych o rozkładnie jednostajnym jest ważny również z tego względu, że jest on zwykle podstawą dla konstrukcji generatorów ciągów o bardziej skomplikowanych rozkładach prawdopodobieństwa.
Jeśli znana jest dystrybuanta żądanego rozkładu, czyli funkcja
oraz łatwo obliczyć jej odwrotność zdefiniowaną jako
to potrzebne ciągi losowe mogą być wygenerowane według wzoru
Rzeczywiście, mamy
Na przykład, jeśli to można zastosować wzór .
Niestety, dla wielu rozkładów dystrybuanta nie może być dokładnie obliczona. Wtedy jakość metody zależy od jakości zastosowanej numerycznej aproksymacji funkcji .
Inna uniwersalna metoda generowania liczb losowych o dowolnym rozkładzie na , zwana akceptuj albo odrzuć, polega na wykorzystaniu istniejącego ,,dobrego” generatora liczb innego rozkładu na . Dokładniej, załóżmy, że dysponujemy generatorem liczb losowych zgodnie z rozkładem o gęstości , a interesują nas liczby pochodzące z rozkładu o gęstości . Załóżmy ponadto, że
dla pewnej stałej . Wtedy możemy użyć następującego algorytmu:
. | repeat | |
. | . | generuj zgodnie z ; |
. | . | generuj |
. | until ; | |
. | return | |
Aby pokazać poprawność takiego generatora zauważmy, że
Ponieważ dla prawdopodobieństwo, że wynosi to
i w konsekwencji dostajemy
Normalny rozkład gaussowski na o funkcji gęstości
jest najczęściej stosowanym rozkładem niejednostajnym. Dla rozkładu gaussowskiego bardzo efektywne okazują się algorytmy bazujące na odwracaniu dystrybuanty. Używają one dość skomplikowanych aproksymacji funkcji .
Prostszą i najbardziej popularną jest metoda Box-Muller. Generuje ona od razu dwie niezależne liczby i (albo, równoważnie, punkt zgodnie z rozkładem normalnym w ), na podstawie dwóch liczb losowych o rozkładzie jednostajnym.
Przedstawmy we współrzędnych biegunowych,
gdzie i . Metoda polega na wygenerowaniu zmiennych i , a następnie zastosowaniu powyższego wzoru. Generowanie jest proste, bo ma rozkład jednostajny. Policzmy dystrybuantę rokładu zmiennej . Mamy
Stąd, stosując metodę odwracania dystrybuanty mamy , . Rachunki te prowadzą do następującego generatora.
. | generuj ; |
. | ; ; |
. | ; ; |
. | return |
Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.
strona główna | webmaster | o portalu | pomoc
© Wydział Matematyki, Informatyki i Mechaniki UW, 2009-2010. Niniejsze materiały są udostępnione bezpłatnie na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 3.0 Polska.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego.
Projekt współfinansowany przez Ministerstwo Nauki i Szkolnictwa Wyższego i przez Uniwersytet Warszawski.