蒙地卡羅方法(Monte Carlo methods)
/ MON-tee KAR-loh METH-ud /
蒙地卡羅方法,是用擲骰子——也就是隨機取樣——來回答棘手的數學問題,而不是用精確公式去求解它們。這個想法妙在簡單:如果一項計算糾纏得沒法直接做,那就帶著隨機性把它模擬許多遍,再把結果平均起來。它得名於那座著名的賭城,用純粹的重複換取巧思,讓電腦的速度頂替數學家的鉛筆。
經典的玩具版,是靠往一個內切了圓的正方形裡擲飛鏢來估計圓周率。隨機擲上千枚飛鏢;落進圓內的比例,乘以四,就趨近於圓周率。不需要任何幾何公式——只需數數命中。同樣的把戲可以放大到正經問題上:要找出一個複雜過程的平均結果,就生成許多隨機情景再把它們平均;要估計一個機率,就數數那事件在模擬中發生了多少次。
它為何重要:現實中極大一部分的量——一個投資組合的預期虧損、物理中粒子的行為、一個貝氏後驗的平均——都是維度高到無法精確計算的積分或平均,而蒙地卡羅往往是唯一可行的路。它的誠實,體現在一個確切的權衡上:誤差以「樣本數的平方根分之一」的速度縮小,這意味著想把誤差減半,得花上四倍的功夫。它給你的不是一個孤零零的答案,而是一個帶有可量化誤差範圍的估計——而那個範圍只會緩慢地收窄,所以高精度可能著實昂貴。
用飛鏢估計圓周率。在一個1×1的正方形裡畫一個圓,隨機擲飛鏢。擲了1,000枚後,假設有786枚落進圓內;估計圓周率 ≈ 4 × 786/1000 = 3.144。擲上1,000,000枚,通常就會落在3.1416附近——但每要多得一位正確的小數,你大約就得多擲100倍的飛鏢。
用隨機飛鏢估計圓周率:精度只隨樣本數的平方根提升——慢吞吞地。
蒙地卡羅的誤差,只以「樣本量的平方根分之一」的速度下降——這是出了名的慢。把誤差砍半要四倍的樣本,多得一位精確小數則約需百倍。隨機取樣通用又簡便,但高精度可不便宜。