E[F] · nieobciążonyVar[F] · źródło szumuZBIEŻNOŚĆ · 1/√NEXT OF · Dodatek B
Dodatek V / Fundamenty Monte Carlo
Estymatory i metoda odwrotnej CDF
Dodatek B pokazał, jak próbkować „lepiej” niż jednorodnie. Ten dodatek robi krok wcześniej: co to znaczy, że estymator jest poprawny, i jak w ogóle wylosować próbkę z zadanego, niejednorodnego rozkładu — nie tylko wiedzieć, że warto.
TL;DR
Estymator to liczba policzona z losowych próbek, której wartość oczekiwana równa się prawdziwej wartości całki — pojedynczy wynik może się mylić, średnia z wielu nie.
Wariancja estymatora — nie sama losowość — jest źródłem szumu; błąd Monte Carlo spada jak 1/√N, niezależnie od wymiaru całki.
Metoda odwrotnej CDF: żeby wylosować próbkę z rozkładu p(x), odwróć jego skumulowaną gęstość (CDF) i podstaw jednorodną liczbę losową.
Pass: Estymator
Co znaczy „poprawny” estymator
Chcesz policzyć całkę I = ∫ₐᵇ f(x) dx, ale nie umiesz jej rozwiązać analitycznie (dokładnie sytuacja z Rozdziału 15). Estymator Monte Carlo losuje X jednorodnie z [a,b] i liczy F = (b−a)·f(X). To jest losowa liczba — różna przy każdym losowaniu — ale jej wartość oczekiwana jest dokładnie równa I:
E[F] = E[(b−a)·f(X)] = (b−a) · ∫ₐᵇ f(x) · (1/(b−a)) dx = ∫ₐᵇ f(x) dx = I1/(b−a) to gęstość jednorodnego rozkładu na [a,b]; stąd czynniki się kasują i zostaje dokładnie szukana całka
Zbieżność w praktyce — I = ∫₀¹ x² dx = 1/3
N=10 próbek: estymata = 0,1967 (błąd 0,137)
N=100: estymata = 0,3814 (błąd 0,048)
N=1 000: estymata = 0,3160 (błąd 0,017)
N=10 000: estymata = 0,3293 (błąd 0,004)
N=100 000: estymata = 0,3345 (błąd 0,001)
Każde ×10 próbek zmniejsza błąd o czynnik ≈√10 ≈ 3,16 — to jest właśnie tempo 1/√N.
Estimator.scatter5 runs at N=20 vs true value
Żadna pojedyncza estymata nie trafia w 1/3 idealnie — ale rozrzucają się wokół niej, nie w jedną stronę.
Pass: Odwrotna CDF
Jak wylosować próbkę z konkretnego rozkładu
Generator liczb pseudolosowych (część planowanego dodatku o PRNG) daje ξ jednorodne na [0,1). Chcesz jednak X rozłożone według konkretnej gęstości p(x) — np. cosinusowo dla diffuse w Rozdziale 15. Metoda odwrotnej CDF: policz skumulowaną gęstość P(x) = ∫p(t)dt, odwróć ją, podstaw ξ:
P(x) = ∫₋∞ˣ p(t) dt (CDF) X = P⁻¹(ξ)jeśli ξ jest jednorodne na [0,1), to X ma dokładnie rozkład p(x) — bez żadnego przybliżenia
Wynik: X = 0,6 jest próbką z rozkładu p(x)=2x, wylosowaną z jednorodnego ξ=0,36.
Sprawdzenie zbieżności: 200 000 próbek wylosowanych tą metodą dało średnią 0,6671 — teoretyczna wartość oczekiwana dla p(x)=2x to E[X]=∫x·2x dx=2/3≈0,6667. Zgodność do trzeciego miejsca.
Inversion.methodPDF → CDF → sample
Wejdź z ξ na osi Y, przejdź do krzywej CDF, zejdź na osi X — to jest cała metoda.
Z praktyki
Formuła cosθ = √ξ, φ = 2πξ₂, którą widziałeś (albo zobaczysz) jako „cosine-weighted hemisphere sampling” w kodzie każdego path tracera, powstaje dokładnie tą metodą — tylko odwracana jest CDF gęstości p(θ,φ) ∝ cosθ na hemisferze, z uwzględnieniem jakobianu współrzędnych sferycznych. Ten jakobian, i jak go liczyć dla różnych zamian zmiennych, to temat kolejnego dodatku.
Słowniczek
Estymator
Losowa wielkość, której wartość oczekiwana równa się szukanej całce.
Nieobciążoność
Własność E[F]=I — estymator nie systematycznie zawyża/zaniża.
Wariancja
Rozrzut wartości estymatora między próbkami; źródło widocznego szumu.
CDF (skumulowana gęstość)
P(x) = ∫p(t)dt — całka gęstości od −∞ do x.
Metoda odwrotnej CDF
X = P⁻¹(ξ) — sposób losowania próbek z zadanego rozkładu.
Co dalej
Kolejny dodatek pokazuje, co się dzieje z gęstością prawdopodobieństwa, gdy przechodzisz między różnymi przestrzeniami — powierzchnia światła kontra kąt bryłowy widziany z punktu trafienia. To brakujący element w próbkowaniu świateł z Rozdziałów 6, 15 i 16.