蒙特卡洛方法到底有什麼用?

2021-01-07 數模樂園

蒙特卡洛方法到底有什麼用?

蒙特卡洛方法(Monte Carlo method,也有翻譯成「蒙特卡羅方法」)是以概率和統計的理論、方法為基礎的一種數值計算方法,將所求解的問題同一定的概率模型相聯繫,用計算機實現統計模擬或抽樣,以獲得問題的近似解,故又稱隨機抽樣法或統計試驗法。上述就是蒙特卡洛方法的基本概念,比較抽象,下面結合實際工作中的理解,談一談對蒙特卡洛方法的一些認識。

(1)首先,蒙特卡洛不是個人名,而是個地名,說明該方法與概率有著密切的關聯。

蒙特卡洛方法的提出者是大名鼎鼎的數學家馮·諾伊曼,搞計算機的不可能不知道他(計算機之父),馮·諾伊曼在20世紀40年代中期用馳名世界的賭城—摩納哥的蒙特卡洛來命名這種方法。(大家也別把蒙特卡洛當一個城市,估計和北京的一條街差不了多少,因為摩納哥(不是非洲的摩洛哥)本身就是個袖珍國家,比我國澳門都小的多)。說明該方法與賭博中的隨機性、概率性有著天然而密切的聯繫。幾乎涉及到複雜的、與概率相關的數值計算的領域都有可能會用到。比如計算物理、經濟金融、統計學、機器學習等。

(2)蒙特卡洛沒有什麼高深的理論,它只是一種方法或者說策略。

蒙特卡洛方法並沒有什麼高深的理論支撐,如果一定要說有理論也就只有概率論或統計學中的大數定律了。蒙特卡洛的基本原理簡單描述是先大量模擬,然後計算一個事件發生的次數,再通過這個發生次數除以總模擬次數,得到想要的結果。比如投3個骰子,計算3個骰子同時是6的概率,可以模擬投N次(隨機樣本數),統計同時是6出現的次數C,然後C除以N即是計算結果。

(3)蒙特卡洛方法可以應用在很多場合,但求的是近似解,在模擬樣本數越大的情況下,越接近與真實值,但樣本數增加會帶來計算量的大幅上升。

蒙特卡洛方法不僅僅是算概率哦,再看一個稍複雜點的實例:求函數y=x2在[0,2]區間的積分,即求如下圖所示的紅色區域的面積。當然直接用數學中的定積分公式算更簡單精確,這裡主要是舉例說明下蒙特卡洛方法的使用過程。

繪圖代碼如下:

2.計算落在紅色區域的比重:

但對於涉及不可解析函數或概率分布的模擬及計算,蒙特卡洛方法是個有效的方法。

我們都玩過套圈圈的遊戲,想過為什麼你總是套不上嗎?用蒙特卡洛方法來算一算。

1.設物品中心點坐標為(0,0),物品半徑為5cm。

2.設投圈半徑8cm,投圈中心點圍繞物品中心點呈二維正態分布,均值μ=0cm,標準差σ=20cm,模擬1000次投圈過程。

上圖中紅圈為物品,散點圖為模擬1000次投圈過程中,投圈中心點的位置散布。

3.計算1000次投圈過程中,投圈套住物品的佔比情況。

輸出結果:0.014,即投1000次,有14次能夠套住物品,就是個小概率事件,知道你為什麼套不住了吧。

(5)蒙特卡洛方法本身不是優化方法,與遺傳算法、粒子群等優化算法有著本質的區別。

蒙特卡洛方法與遺傳算法、粒子群算法等智能優化算法有相似之處,比如都屬於隨機近似方法,都不能保證得到最優解等,但它們也有著本質的差別。一是層次不一樣,蒙特卡洛只能稱之為方法,遺傳算法等則屬於仿生智能算法,比蒙特卡洛方法要複雜。二是應用領域不同,蒙特卡洛是一種模擬統計方法,如果問題可以描述成某種統計量的形式,那麼就可以用蒙特卡洛方法來解決;遺傳算法等則適用於大規模的組合優化問題(選址問題、排班問題、管理調度、路線優化)等,以及複雜函數求最值、參數優化等。

相關焦點

  • 蒙特卡洛方法-最簡單的代碼
    那麼蒙特卡洛的理論就是PBS或者PBR光照模型中那些公式的理論基礎。那麼蒙特卡洛方法到底講述了一個什麼問題呢?我們下面用程式設計師能理解的方式來闡述一遍。如果同學們對蒙特卡洛方法有所困惑,我們的提示是,你去學習一下光線追蹤的算法,對光線追蹤的過程有一個了解和認知之後,你就知道蒙特卡洛方法解決了什麼問題了。
  • 詳解蒙特卡洛方法
    1.目錄2.引言3.蒙特卡洛動作值4.蒙特卡洛控制5.用 Python 實現的在策略模型
  • 強化學習——蒙特卡洛方法
    學習目標理解什麼是first-visit和every-visit;理解什麼是on-policy和off-policy;理解蒙特卡洛方法的Prediction和Control問題;Prediction和Control其實這兩個名詞在總結動態規劃方法的文章中也提到過了,但是沒有細說,這裡再簡單的說明一下。
  • Python X 蒙特卡洛方法
    蒙特卡洛方法是一種在統計學十分常用的一種隨機模擬方法, 簡單來說即使用隨機數來解決統計計算問題.
  • 蒙特卡洛模擬方法
    思來想去寫了這個公眾號,作為第一篇自我感覺有價值的文章,我會一點一滴的去寫。但是由於老師的課題需要發表論文,所以本文不會給出具體關於課題的任何代碼。但是會用python去構思基本的東西出來。我希望此文可以記錄思想,整理筆記、知識,並將其中承載的價值傳播給他人。
  • 蒙特卡洛方法-通過Solid Angle計算球的體積
    辣麼,我們回顧一下前一段時間俺們這些純爺們都幹了什麼、我相信能堅持看到這裡的都不是什么正人君子,因為正常人都已經默默的Alt+F4,GG之後回去用UE4或者U3D去了。我們有r、f、e、pdf、cpdf。我們粗暴簡單的看一下他們的出場順序,r是輸入、pdf是你隨便選出來的,cpdf可以根據pdf推導出來,f是cpdf的反函數,e是把r扔進f函數裡得到的一個數值。
  • 一文了解AlphaGo中蒙特卡洛方法的由來與發展
    在二十世紀初期,英國統計學學校沉浸在大量的簡單蒙特卡洛工作,大多數的工作看起來更像是角色的說教,很少用於研究或發現,只有在一些罕見的場合強調的是獨創的發現而不是令人欣慰的驗證。1908年學生(W.S.Gosset)用抽樣實驗幫助他完成了相關係數的分布規律的研究,同年,學生也使用抽樣的方法來支持在他經由搖搖欲墜的、不太完整的理論分析推導出來的所謂丁分布。
  • 蒙特卡洛(Monte Carlo, MC)那麼厲害?究竟是啥?
    目前主要用途有三大類:算法優化、高維積分、概率分布抽樣。今天,我們僅就第三方面的用途,以簡單的例子深入淺出地進行介紹。  解決問題  不知道各位的童年有沒吃過出奇蛋?沒吃過也沒關係,今天,我們來吃一次。 出奇蛋是一種朱古力糖,外觀一樣,內部中空,含有一小玩具。每個蛋不拆開,沒辦法知道送的小玩具是什麼。
  • 詳解蒙特卡洛方法:這些數學你搞懂了嗎?
    該系列文章現已介紹了賭博機問題、馬爾可夫決策過程和蒙特卡洛方法。本文是對其中蒙特卡洛方法文章的編譯。有用於強化學習的動態編程解決方案是挺好的,但這也有很多限制。比如是否存在很多你知道狀態轉移概率的真實世界問題?你能一開始就從任意狀態起步嗎?你的 MDP 是否是有限的?那麼,我認為你會很樂意了解蒙特卡洛方法。這是一種可近似困難的概率分布的經典方法,可以解決你對動態編程解決方案的所有擔憂!
  • 無需數學知識:快速了解馬爾可夫鏈蒙特卡洛方法
    而在貝葉斯方法家族當中,馬爾可夫鏈蒙特卡洛方法(Markov chain Monte Carlo methods)顯得尤為神秘。雖然其中確實涉及大量數學知識且需要昂貴的計算資源,但與數據科學領域的眾多其它方法一樣,其中的基本推理過程同樣可以通過非常直觀的方式進行歸納。而這正是本文的核心主旨所在。
  • 蒙特卡洛梯度估計方法(MCGE)簡述
    其中,對於函數期望類目標問題,最常見的是基於蒙特卡洛採樣的方法。背景知識要了解基於蒙特卡洛採樣的梯度估計方法,首先先了解蒙特卡洛採樣方法和隨機優化方法。MCS 是一種經典的求解積分方法,公式(1)中的問題通常可以用 MCS 近似求解如下:
  • 一份數學小白也能讀懂的「馬爾可夫鏈蒙特卡洛方法」入門指南
    在貝葉斯經典方法中,馬爾可夫鏈蒙特卡洛(Markov chain Monte Carlo/MCMC)尤其神秘,其中數學很多,計算量很大,但其背後原理與數據科學有諸多相似之處,並可闡釋清楚,使得毫無數學基礎的人搞明白 MCMC。這正是本文的目標。那麼,到底什麼是 MCMC 方法?
  • CICC科普欄目|詳解蒙特卡洛方法:這些數學你搞懂了嗎?
    該系列文章現已介紹了賭博機問題、馬爾可夫決策過程和蒙特卡洛方法。本文是對其中蒙特卡洛方法文章的編譯。有用於強化學習的動態編程解決方案是挺好的,但這也有很多限制。比如是否存在很多你知道狀態轉移概率的真實世界問題?你能一開始就從任意狀態起步嗎?你的 MDP 是否是有限的?那麼,我認為你會很樂意了解蒙特卡洛方法。這是一種可近似困難的概率分布的經典方法,可以解決你對動態編程解決方案的所有擔憂!
  • 蒙特卡洛模擬(Python)深入教程
    字幕組雙語原文:蒙特卡洛模擬(Python)深入教程英語原文:Monte Carlo Simulation An In-depth Tutorial with Python翻譯:大表哥、wiige什麼是蒙特卡羅模擬?
  • 簡潔清晰解釋馬爾可夫鏈蒙特卡洛方法
    有三種解釋MCMC的方法: 初級:MCMC允許我們利用計算機進行貝葉斯統計。 中級:MCMC是一種可以找到我們感興趣的參數的後驗分布的方法。具體來說,這種類型的算法以依賴Markov屬性的方式生成蒙特卡羅模擬,然後以一定的速率接受這些模擬以獲得後驗分布。 高級:完整的統計思想。
  • 蒙特卡洛方法-概率密度函數
    簡介為了更加清楚的讓同學們深刻的理解PBR裡面那些公式背後的東西,同學們務必先來擼一遍光線追蹤,畢竟我們這裡舉例的這些蒙特卡洛方法都是光線追蹤第三卷裡
  • 知識工程-數學知識軟體化系列:蒙特卡洛方法及應用軟體(附軟體操作視頻)
    蒙特卡洛(MenteCarlo)是一個賭場的名字,賭博是典型的隨機性事件。蒙特卡洛法就是基於隨機性思想求解確定性問題的方法。蒙特卡洛法始於20 世紀 40 年代製造原子彈的曼哈頓計劃,當時的幾個頂級科學家,包括烏拉姆、馮.
  • MCMC、蒙特卡洛近似和Metropolis算法簡介
    MCMC 是Markov Chain Monte Carlo 的簡稱,但在傳統模擬中有一個很重要的假設是樣本是獨立的(independent samples),這一點在貝葉斯統計尤其是高緯度的模型中很難做到。所以MCMC的目的就是運用蒙特卡洛模擬出一個馬可鏈(Markov chain)。如今,概率建模風靡一時,但是當我第一次了解它時,總有一件事情困擾我。
  • 春節養花選「蒙特卡洛」,優點勝過同類月季,喜慶漂亮,常年開花
    此植物名為蒙特卡洛,在國外非常有名,屬於月季中的一款,若生長順利,可輕鬆長到30cm左右的高度。接下來就具體為大家分享一下關於蒙特卡洛的知識,它算是一種灌木植物,枝條挺拔堅韌,造型極為優美。蒙特卡洛算是一種不常見的盆栽月季,如今在我們國內非常受歡迎,但養護的人卻少之又少。它的葉片常年翠綠,所開出的花朵與綠葉特別搭配,給人一種看起來十分舒心的感覺。
  • 蒙特卡洛模擬法的實施步驟
    蒙特卡洛模擬法的實施步驟一般分為三步:  (1)分析每一可變因素的可能變化範圍及其概率分布。  (2)通過模擬試驗隨機選取各隨機變量的值,並使選擇的隨機值符合各自的概率分布。為此可使用隨機數或直接用計算機求出隨機數。  (3)反覆重複以上步驟,進行多次模擬試驗,即可求出開發項目各項效益指標的概率分布或其他特徵值。