Metody Monte Carlo potrafią pokonać przekleństwo wymiaru, mają jednak również swoje wady. Najważniejsze z nich to:
(i) niepewność wyniku (który ma charakter probablistyczny),
(ii) stosunkowo wolna zbieżność (praktycznie ),
(iii) konieczność stosowania (niekiedy skomplikowanych) generatorów liczb losowych.
Można powiedzieć, że skoro używamy z powodzeniem generatorów
liczb pseudo-losowych, to implementacje Monte Carlo są w istocie
deterministyczne. Dlatego, wybierając punkty deterministycznie, ale
tak, aby w jakiś sposób ,,udawały” i ,,uśredniały” wybór losowy,
powinniśmy dostać metodę deterministyczną o zbieżności co
najmniej . A przy okazji usunęlibyśmy dwie
z wymienionych wad Monte Carlo.
Takie intuicyjne myślenie wydaje się nie mieć racjonalnych
podstaw, bo przecież metody deterministyczne podlegają
przekleństwu wymiaru. Pamiętajmy jednak, że twierdzenie 13.4
o przekleństwie zachodzi w klasie funkcji
różniczkowalnych
razy po każdej zmiennej. Zwróciliśmy
na to uwagę już na początku rozdziału 14. Dlatego zasadne
jest poszukiwanie pozytywnych rozwiązań dla funkcji o innej
regularności.
Quasi-Monte Carlo jest deterministycznym odpowiednikiem klasycznej metody Monte Carlo dla aproksymacji całek na kostkach,
![]() |
Metoda quasi-Monte Carlo polega na przybliżeniu
średnią arytmetyczną,
![]() |
gdzie są pewnymi
szczególnymi punktami w
wybranymi
w sposób deterministyczny.
Przez długi czas od swojego powstania uważano, że metody quasi-Monte Carlo są efektywne jedynie dla całek o niskich wymiarach. Dopiero pod koniec lat 90-tych ubiegłego wieku zauważono, że dają istotnie lepsze wyniki niż Monte Carlo w obliczaniu wartości niektórych instrumentów finansowych. Obecnie quasi-Monte Carlo jest powszchnie uznaną i bardzo popularną metodą, której znaczenie trudno przecenić mimo, że dotychczas nie udało się znaleźć pełnego teoretycznego wytłumaczenia jej efektywności.
Rozważania na temat quasi-Monte Carlo zaczniemy od zdefiniowania pojęcia dyskrepancji, które odgrywa fundamentalną rolę w analizie efektywności tych metod.
Dla niech
![]() |
oznacza wymiarowy prostokąt w
, ,,zakotwiczony” w zerze.
Zakładamy przy tym, że
.
Dyskrepancją (z gwiazdką) danego zbioru punktów
,
, nazywamy wielkość
![]() |
gdzie
![]() |
a oznacza liczbę elementów zbioru
.
Ponieważ jest
-wymiarową objętością
prostokąta
, dyskrepancja pokazuje jak
dobrze danych
punktów aproksymuje objętości tych
prostokątów.
Równoważnie, oznaczając przez
funkcję charakterystyczną prostokąta
mamy
![]() |
Stąd dyskrepancję można również interpretować jako maksymalny błąd aproksymacji funkcji charakterystycznych prostokątów przez odpowiedni algorytm quasi-Monte Carlo.
Pojęcie dyskrepancji zilustrujemy najpierw na przykładzie
jednowymiarowym . Nietrudno pokazać, że dla dowolnych
![]() |
(15.1) |
Rzeczywiście, jako funkcja
ma
na każdym z przedziałów
,
,
,
pochodną równą
, oraz przyjmuje zero dla
.
Zatem, jeśli dyskrepancja byłaby mniejsza od
to mielibyśmy
![]() |
a stąd
![]() |
Otrzymujemy sprzeczność, bo dla
![]() |
Z dowodu wynika, że równość w (15.1) zachodzi jedynie dla równomiernego rozmieszczenia punktów,
![]() |
W tym przypadku algorytm redukuje się do zasady
punktu środkowego.
Z punktu widzenia praktycznych obliczeń dobrze byłoby mieć ciąg nieskończony
![]() |
i konstruować kolejne aproksymacje używając początkowych
wyrazów tego ciągu. Ciekawe, że wtedy zbieżność
nie może być zachowana. Dokładniej, można pokazać
istnienie
takiego, że dla każdego ciągu nierówność
![]() |
zachodzi dla nieskończenie wielu .
Analiza dyskrepancji w wymiarach just dużo bardziej
skomplikowana. Na razie ograniczymy się do zauważenia, że
siatka równomierna jest fatalnym wyborem. Dokładniej, niech
![]() |
będzie równomiernym rozkładem punktów w
.
Rozpatrzenie prostokąta
![]() |
wystarcza, aby się przekonać, że wtedy dyskrepancja wynosi
co najmniej .
Jeśli jest funkcją różniczkowalną to
dla każdego
mamy
![]() |
(15.2) |
Wzór ten uogólnimy na przypadek funkcji wielu zmiennych w następujący sposób.
Najpierw wprowadzimy kilka niezbędnych oznaczeń.
Dla podzbioru indeksów ,
![]() |
niech , gdzie
jest liczbą
elementów w
. Niech dalej
będzie
wektorem powstałym z wektora
poprzez usunięcie współrzędnych
z
,
a
wektorem, którego
-ta
współrzędna wynosi
dla
oraz wynosi
dla
. Na przykład, jeśli
i
to dla
mamy
i
.
W końcu, niech
![]() |
będzie skrótowym zapisem odpowiedniej pochodnej
mieszanej funkcji .
Jeśli funkcja ma ciągłe pochodne
cząstkowe mieszane
dla wszystkich
to
![]() |
(15.3) |
().
Dowód przeprowadzimy przez indukcję względem . Dla
równość (15.3) jest równoważna
(15.2).
Niech więc
. Stosując założenie indukcyjne do
z ustaloną ostatnią współrzędną
mamy
![]() |
gdzie sumowanie jest po wszystkich
.
Stosując dalej wzór (15.2) ze względu na
odpowiednio do
i
dostajemy
![]() |
![]() |
![]() |
||
![]() |
||||
![]() |
Teraz wystarczy porównać otrzymaną formułę do prawej strony
(15.3). Drugi składnik odpowiada , trzeci
składnik podzbiorom
do których nie należy
,
a czwarty podzbiorom
takim, że
i
.
Zauważmy, że rozwijając i
zgodnie
ze wzorem (15.3) mamy
![]() |
![]() |
Ponieważ wartość funkcji charakterystycznej odcinka
w punkcie
jest równa wartości funkcji
charakterystycznej odcinka
w punkcie
to
![]() |
![]() |
Stąd otrzymujemy następującą formułę Zaremby na błąd quasi-Monte Carlo:
![]() |
(15.4) |
Oznaczmy przez klasę funkcji
,
których pochodne mieszane
istnieją i są ciągłe
dla wszystkich
.
Wahaniem (w sensie Hardy-Krause) funkcji
nazywamy wielkość
![]() |
Zauważmy, że dla ,
![]() |
jest wahaniem funkcji w klasycznym sensie. Następujące bardzo ważne oszacowanie błędu metody quasi-Monte Carlo nosi nazwę nierówności Koksmy-Hlawki.
Jeśli to błąd metody quasi-Monte Carlo
![]() |
dla aproksymacji całki
szacuje się przez
![]() |
W nierówności Koksmy-Hlawki czynnik błędu zależny
jedynie od funkcji jest oddzielony od czynnika błędu
zależnego od wyboru
punktów. O ile nie mamy wpływu na wahanie funkcji, możemy
starać się wybrać punkty
tak, aby zminimalizować
ich dyskrepancję. Zasadnicze pytanie brzmi: jak mała może być
dyskrepacja? W szczególności, czy można wybrać nieskończony
ciąg punktów tak, że oparte na nim algorytmy quasi-Monte Carlo
pokonują przekleństwo wymiaru w klasie
?
Na miejscu jest teraz uwaga, że dzięki obecności pochodnych
mieszanych rozumowanie analogiczne do tego z dowodu
twierdzenia 13.4 prowadzi w klasie funkcji
z
jedynie do oszacowania
z dołu błędu przez
(a nie
).
Okazuje się, że pełne odpowiedzi na zadane pytania
nie są znane. Najlepsze ciągi nieskończone
spełniają nierówność
![]() |
gdzie nie zależy od
.
Wydaje się więc, że w klasie
metody quasi-Monte Carlo dają istotnie lepsze wyniki od
Monte Carlo, bo błąd nie tylko jest deterministyczny, ale
też dla
zbiega do zera dużo szybciej,
tzn. błąd jest rzędu
dla dowolnego
w przypadku quasi-Monte Carlo, oraz
w przypadku Monte Carlo. Nie do końca jest to prawdą.
Zauważmy bowiem, że w praktycznych obliczeniach wnioski
asymptotyczne nie mają zastosowania, gdy wymiar
jest
bardzo duży. Wtedy czynnik
może mieć istotne znaczenie
i wręcz sprawiać, że nierówność Koksmy-Hlawki staje się
bezużyteczna. Dodatkowo, dobre oszacowanie
jest wyjątkowe
trudne.
A jednak metody quasi-Monte Carlo są z powodzeniem stosowane
w praktyce obliczeniowej nawet dla dużych wymiarów .
Istnieje wiele hipotez tworzonych w celu wyjaśnienia tego
pozornego paradoksu. Jedna z najbardziej popularnych i już
dość dobrze uzasadnionych teoretycznie mówi, że w praktyce
mamy co prawda do czynienia z funkcjami bardzo wielu zmiennych,
ale istotnych jest jedynie kilka zmiennych albo grupy kilku
zmiennych. Matematycznie oznacza to, że w odpowiadających
tym założeniom przestrzeniach zachodzą dużo mocniejsze
odpowiedniki nierówności Koksmy-Hlawki.
Ciąg nieskończony
nazywamy ciągem o niskiej dyskrepancji jeśli istnieje
taka, że dla wszystkich
![]() |
Istnieje bardzo dużo efektywnych konstrukcji ciągów punktów o niskiej dyskrepancji. Teraz poznamy jedynie kilka najbardziej popularnych z nich.
Niech będzie ustaloną liczbą naturalną. Wtedy
dowolną liczbę naturalną
można jednoznacznie przedstawić
w postaci
![]() |
gdzie i tylko dla skończonej liczby
indeksów
mamy
. Mówiąc inaczej,
są
kolejnymi cyframi rozwinięcia liczby
w bazie
.
Wykorzystując powyższe rozwinięcie funkcję radykalnej
odwrotności
definujemy jako
![]() |
Na przykład, dla bazy mamy
,
czyli
.
Kolejne wartości radykalnej odwrotności,
![]() |
tworzą jednowymiarowy ciąg Van der Corputa.
Dla kolejne punkty ciągu wynoszą więc
![]() |
Ciąg Van der Corputa jest ciągiem o niskiej dyskrepancji dla dowolnie
dobranej bazy , tzn. dyskrepancja
początkowych wyrazów szacuje
się z góry przez
. Zauważmy jednak, że dla
,
, dostajemy równomierne rozmieszczenie punktów, tzn. tworzą
one zbiór
, którego dyskrepancja wynosi
. Stąd, pożądane są raczej mniejsze bazy
; im
większe
tym rzadziej ze względu na
osiągana jest dyskrepancja
proporcjonalna do
.
Jednowymiarowy ciąg Van der Corputa jest podstawą konstrukcji wielu
ciągów w wyższych wymiarach . Jedna z nich prowadzi do ciągu
Haltona
, którego
-ty punkt wynosi
![]() |
Liczby są tu danymi bazami. Od razu zauważamy, że
wybór
nie jest dobry, bo prowadzi do siatki równomiernej
w
, zob. rozdział 15.2. Jeśli jednak
są
liczbami pierwszymi to
jest już ciągiem o niskiej
dyskrepancji.
Minusem konstrukcji Haltona jest to, że dla dużych wymiarów bazy
też są duże co, jak wcześniej zauważyliśmy, nie jest korzystne.
Problemu tego unika bardziej skomplikowana konstrukcja Sobol'a,
gdzie na każdej zmiennej pracujemy z tą samą bazą
.
Ideę konstrukcji ciągu Sobol'a przedstawimy najpierw
zakładając
. Niech
![]() |
będzie wektorem kolejnych bitów w rozwinięciu dwójkowym liczby ,
![]() |
Wtedy
![]() |
gdzie
![]() |
a jest specjalnie dobraną macierzą o elementach
i
, zwaną
macierzą generującą. (Zauważmy, że jeśli
jest identycznością
to otrzymany ciąg jest ciągiem Van der Corputa.)
Oznaczając możemy równoważnie zapisać
![]() |
gdzie jest operacją XOR, czyli dodawaniem bitów modulo
,
![]() |
Dla , kolejne współrzędne punktu
wyliczane
są według powyższej recepty, ale używając różnych macierzy
generujących
. I właśnie problem wyboru macierzy generujących tak,
aby otrzymać ciąg o niskiej dyskrepancji jest istotą konstrukcji Sobol'a.
Dodajmy, że jest to problem wysoce nietrywialny.
Dla definiujemy
-prostokąt w
jako
![]() |
gdzie ,
,
. Na przykład, jeśli
i
to przedziały
i
są
-prostokątami, ale nie jest nim
.
Zauważmy, że objętość
-prostokąta wynosi
.
Niech i
. Siecią
w bazie
nazywamy
zbiór
punktów w
o własności, że w każdym
-prostokącie o objętości
znajduje się dokładnie
punktów tego zbioru.
Mówiąc inaczej, sieć dokładnie pokazuje objętości
-prostokątów poprzez iloraz
liczby punktów, które
należą do prostokąta do liczby wszystkich punktów.
Ciąg nieskończony w
nazywamy
ciągiem
w bazie
jeśli dla wszystkich
i
segment
![]() |
jest siecią w bazie
.
Następujące twierdzenie jest podstawą wielu konstrukcji ciągów o niskiej dyskrepancji.
Każdy ciąg w bazie
jest ciągiem o niskiej dyskrepancji.
Pokazanie konkretnych konstrukcji ciągów wykracza poza ramy
tego wykładu. Powiemy tylko, że szczególne wybory macierzy generujących
w konstrukcji Sobol'a prowadzą do ciągów
. Inne konstrukcje
należą do Faure'a, Niederreitera, Tezuki i in.
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.