一、簡介
蒙特卡羅(Monte Carlo),也可翻譯為蒙特卡洛,只是不同的音譯選詞,比較常用的是蒙特卡羅。是摩洛哥的一片城區,以擁有豪華賭場聞名,蒙特卡羅方法是基於機率的。基本思想:如果你想預測一件事情的結果,你只要把隨機生成的各種輸入值,把這件事模擬很多遍,根據模擬出的結果就可以看到事情的結果大致是什麼情況。蒙特卡羅演算法是基於蒙特卡羅方法的演算法。
二、應用
1. 計算π
在白紙中間畫一個正方形,在正方形裡畫一個內切的圓。假設正方形的邊長為a,正方形面積S正=a2,圓的半徑為a/2,圓的面積S圓=π(a/2)2。則S圓/S正=π/4,即圓的面積是正方形面積的π/4倍,接下來我們透過數值模擬來計算這兩個面積。
你找些小顆粒,比如小米或者花粉之類的,隨機灑落在白紙上。白紙上有了足夠多的顆粒之後,你數一數落在正方形裡的小顆粒有多少個——這個數字代表正方形的面積;再數一數落在圓形裡的小顆粒有多少個——這個數字代表圓的面積。那麼這代表小顆粒數量的兩個數字之比,就應該約等於圓形和正方形的面積之比即π/4。你只需要數一數就可以計算出π大約等於幾。透過大量均勻灑落小顆粒可以讓π值更精確,顯然這個方法不夠精確——但是這個方法卻很有用。很多時候我們根本無法對方程精確求解,那麼蒙特卡羅方法就是你的朋友。
2. 原子彈的研製
在第二次世界大戰中,美國原子彈的研製就第一次用到了蒙特卡羅方法。原子彈的爆炸依賴於裂變時產生的鏈式反應反應。在鏈式反應中,核物質中游離的中子會撞擊鈾原子,釋放大量的能量,同時釋放出來三個新的中子。這些中子如果又能撞擊其它鈾原子,鏈式反應就會發生。這樣原子彈就能爆炸了。但釋放出來的中子是不是能撞擊到其它鈾原子,是一個不確定的過程。這些中子運動的方向,攜帶的能量是隨機的。如果整個核物質的質量太小,很有可能中子被釋放出來之後,直接離開了核物質,沒撞擊到任何鈾原子,那鏈式反應就不會發生,原子彈就爆炸不了了。在核物理中有一個概念,叫“臨界質量”,是讓鏈式反應能夠發生的最小質量。而這個臨界質量,就是對各個中子運動中的隨機變數進行取樣,透過蒙特卡羅模擬演算法計算得到。
三、注意事項
1. 蒙特卡羅方法是對問題的估算,而不是精確計算。
2. 蒙特卡羅方法的成功,非常依賴於引數和模型的正確。
比如我是北京國安的狂熱球迷,認為國安打哪隻球隊的勝率都是90%。結果其他球隊這一年都引入了特厲害的外援,實力大增。不對這些資訊進行考慮,修正國安90%的勝率,那隨機模擬的結果就是不可信的。模擬次數再多,也沒用。
最近大火的AI如Chat-GPT有資料顯示使用了蒙特卡羅方法。GPT-3的引數有1750億個,根據OpenAI的CEO山姆·阿爾特曼(Sam Altman)說GPT-4的引數並不比GPT-3多很多,但大家猜測,GPT-5的引數將會是GPT-3的100倍。
3. 蒙特卡羅方法會減小我們發現問題本質的機會。
我們知道GPT很厲害,可是不知道GPT為什麼厲害。
四、啟示
蒙特卡羅方法在哲學上是一種隨機試驗,在物理學上是透過人為製造的隨機性——噪聲來探索系統的多個可能性,在數學上,它還有一個驚喜:能減少計算量!也許是因為有了噪聲自動代表了多種可能性,有了噪聲,你不用太高的解析度和預測精度就能達到很不錯的計算結果。