Rachunek prawdopodobieństwa i statystyka
Estymacja Monte Carlo
Dorota Celińska-Kopczyńska
Uniwersytet Warszawski
Zajęcia 5 18 grudnia 2020
Idea zajęć – co i po co będziemy robić?
I Monte Carlo jest metodą stosowaną do matematycznego modelowania zjawisk zbyt złożonych, żeby można było wyznaczyć ich wyniki analitycznie
I Poprzez wielokrotne losowania i uśrednianie ich wyników otrzymujemy przybliżenie wielkości interesującego nas zjawiska I Metoda sprawdza się w zastosowaniach praktycznych:
potrzebujemy szybko otrzymać oszacowanie potrzebnej wartości
I Podczas zajęć zapoznamy się z metodami (i usprawnieniami) całkowania metodą Monte Carlo
Problem 4a – sztandarowy przykład
W zadaniu chcemy wyznaczyć pole koła jednostkowego.
Wykorzystamy symulację Monte Carlo. Z kwadratu [-1,1] x [-1,1]
wylosujemy N punktów (o współrzędnych x ,y ). Dla każdego punktu będziemy sprawdzać, czy należy on do koła jednostkowego (porównując z nierównością koła). Oznaczmy przez X liczbę wylosowanych punktów, które należały do koła jednostkowego.
Oszacowaniem pola koła jest X /A, gdzie A to pole kwadratu, z którego losowaliśmy (w tym przypadku wynosi 4).
Problem 4a – reformulacja
I Zadanie może być niektórym znane jako “wyznacz wartość liczby pi”.
I Wystarczy zwrócić wartość AX /N.
Problem 4a – plusy i minusy
I Zadanie wydaje się sztuczne – mamy znacznie lepsze metody wyznaczania wielkości liczby pi!
I Tak samo znamy wzór na pole koła – nie musimy korzystać z przybliżenia!
I Zadanie obrazuje jednak wszystkie kroki symulacji Monte Carlo:
1. przeformułowanie problemu do schematu powtarzalnego eksperymentu
2. losowanie wartości
3. uśrednianie otrzymanych wyników
4. powiązanie uśrednionych otrzymanych wyników z pierwotnym problemem
I Dzieki znanemu rozwiązaniu łatwo można pokazać działanie metody (wiadomo, czego oczekiwać) i znaleźć problemy/błędy.
Problem 4a – co może pójść nie tak?
I Monte Carlo trzeba zaprojektować mądrze. Nie zawsze łatwo jest to “mądrze” znaleźć
I Poniżej uzyskane rozkłady uzyskanych wyników w zależności od wielkości kwadratu, z którego losowaliśmy (bok długości 2,5,20,100 odpowiednio)
Problem 4b – całkowanie w dwóch wymiarach (*)
Proszę zaprojektować symulację Monte Carlo, która pozwoli obliczyć wartość całki na przedziale [-1,1] dla zadanej krzywej.
Przykładowo:
f (x ) =p1 − x2 .
Problem 4b – intuicyjna propozycja
I Pierwsza, szybka propozycja to “skorzystajmy z tego samego schematu, co do liczenia pi” – losujemy punkt i sprawdzamy, czy znalazł się poniżej krzywej, stosunek liczby takich punktów do pola prostokąta, z którego losowaliśmy da nam szukaną wartość
I Propozycja ma jednak podobną wadę jak poprzednio: w zależności od postaci funkcji lub wielkości prostokąta, z którego losujemy możemy wiele razy losować “bezużyteczne” punkty.
I Uzyskany wynik będzie mieć wysoką wariancję (lub w ogóle nie da się go uzyskać)
Problem 4b – usprawnienie
I Losujmy tylko wartość pierwszej współrzędnej, f (x ) obliczymy ze wzoru
I Zsumujmy uzyskane wartości f (x ) i podzielmy przez N (liczbę losowań) – uśrednijmy
I Ograniczyliśmy losowania do obszaru, który jest dla nas ciekawy. Wynik ma dzięki temu niższą wariancję
Problem 4b – porównanie
I Intuicyjna propozycja: E [(x , y ) ∈ K ] = E [Y ¬ f (X )]
I Usprawnienie: E [PNi =1f (xi)/N]
I Proszę porównać usprawnienie z metodą prostokątów/trapezów
Problem 4b – uogólnienie
I Czy to Monte Carlo jest nam potrzebne?
I Dla przypadku dwóch wymiarów możemy zastosować metodę prostokątów/trapezów – potrzebujemy k figur do wyliczenia pola
I Dla przypadku trzech wymiarów możemy zastosować metodę prostopadłościanów – potrzebujemy k2 brył do wyliczenia objętości...
I Dla przypadku d wymiarów?
Problem 4b – uogólnienie
I Całki możemy chcieć liczyć dla funkcji wielu zmiennych I Stosując uogólnienia metody trapezów/prostokątów, jeśli
przyjmiemy, że k to liczba “obiektów”, których chcemy użyć, nasza metoda będzie wymagała ich kd −1. Złożoność O(kd).
I Założmy, że komputer może wykonać 109 operacji na sekundę. Dla przypadku 100 zmiennych przy zaledwie 2 obiektach, metoda wymaga 2100 operacji – bilion lat I Usprawnione Monte Carlo N razy losuje d − 1 wartości
(ostatnia jest wyliczana ze wzoru). Złożoność O(Nd ).
Problem 4c
Mając daną formułę DNF φ, zlicz liczbę wartościowań, które spełniają tę formułę. Wykorzystaj symulację Monte Carlo
Problem 4c – DNF?
I Disjunctive Normal Form – rodzaj formuły logicznej I xi – zmienne. Mogą przyjmować wartości prawda (1) albo
fałsz (0). Zmienna lub jej negacja to literał I Literały łączymy w klauzule. W DNF klauzule są
koniunkcjami literałów
I DNF to alternatywa takich klauzul. Jest spełniona, jeśli wartością wyrażenia jest prawda. Wystarczy jedna klauzula prawdziwa, żeby DNF było spełnione.
I Podobne formuły logiczne są wykorzystywane w Teorii Złożoności. Dobra wiadomość: ten slajd zawiera wszystko z TZ, co jest potrzebne do wykonania zadania.
Problem 4c – (mały) przykład (*)
φ = (x1∧ x2) ∨ (x2∧ ¬x3)
Problem 4c – (mały) przykład
φ = (x1∧ x2) ∨ (x2∧ ¬x3)
I Zmienne: x1, x2, x3. Literały: x1, x2, ¬x3.
I Rozpatrujemy 8 przypadków (każda ze zmiennych może być ustawiona na 2 sposoby). DNF spełniają (wynikiem jest prawda) 3 przypadki
I W ogólnym przypadku do rozpatrzenia 2M przypadków (M – liczba zmiennych)
Problem 4c – metoda intuicyjna
I Powtarzaj N (duże) razy:
I Wylosuj wartości (0/1) zmiennych x1, xM.
I Sprawdzaj, czy dla wylosowanych wartości którakolwiek z klauzul jest spełniona (w pesymistycznym wariancie sprawdzimy wszystkie).
I Jeśli spełniona, zwiększ L (liczbę spełnionych wyrażeń) I Oszacowanie szukanej wartości to L2NM
Problem 4c – co może pójść nie tak?
I Co się dzieje, gdy np. 64 zmienne, 100 klauzul, w każdej klauzuli po 30 zmiennych?
I Nawet stosując bardzo duże N, możemy nie trafiać w ustawienia xi, które spełniają DNF
I Zła wiadomość: w faktycznych zastosowaniach rozpatruje się DNF z milionami klauzul. Nie uciekniemy od problemu.
I Wniosek? Trzeba zastosować sztuczkę jak w 4b – ograniczyć się do “interesujących” nas przypadków
Problem 4d – zadanie zaliczeniowe do 21.01.2021 23:59
Usprawnij problem zliczania wartościowań spełniających dane DNF, tworząc symulację Monte Carlo ograniczoną do
“przydatnych” wartościowań.
Problem 4d – jak rozwiązać
I Wykorzystajmy obserwację, że wystarczy nam jedna klauzula spełniona, żeby DNF było spełnione
I Ustawmy wartości literałów dla pojedynczej klauzuli, tak, żeby wiedzieć, że jest spełniona. Pozostałe (nie biorące udziału w klauzuli) zmienne losujemy dowolnie N razy – i tak już wiemy, że DNF jest spełnione. Zapiszmy liczbę uzyskanych wartościowań I Powtórzmy dla pozostałych klauzul. Haczyk: część “dobrych”
ustawień spełnia też wcześniejsze – dodajemy tylko te, które do tej pory nie mogły się pojawić.
I Ostatecznie otrzymamy przybliżoną liczbę wartościowań spełniających DNF
Problem 4d – (mały) przykład
φ = (x1∧ x2) ∨ (x2∧ ¬x3)
1. Ustawmy wartości spełniające pierwszą klauzulę: x1: 1, x2: 1.
2. Wylosujmy wartości dla x3 – nie bierze udziału w pierwszej klauzuli.
Mamy x3: 0 i x3: 1. Dostajemy dwa wartościowania: (1,1,0), (1,1,1).
3. Przechodzimy do drugiej klauzuli. Ustawmy wartości, które ją spełniają:
x2: 1, x3: 0.
4. Wylosujmy wartości dla x1 – nie bierze udziału w drugiej klauzuli. Mamy x1: 1 (spełnia 1!) i x1: 0 (nowe!). Dostaliśmy jedno nowe wartościowanie:
(0,1,0).
5. Druga klauzula była ostatnią. Zwracamy liczbę wartościowań: 3.