Skip to Main Content

本文旨在說明什麼是蒙地卡羅模擬、其運作方式與常見應用領域。文中也會舉例說明其優缺點,以及過程中會用到的工具。

什麼是蒙地卡羅模擬?

蒙地卡羅模擬是一套演算法,在輸入隨機變動時,可用於預測過程的機率結果。該演算法是一種隨機模擬,又稱為蒙地卡羅方法、蒙地卡羅分析或蒙地卡羅實驗。

為了瞭解潛在結果的分佈情況,蒙地卡羅模擬會執行大量試驗,每項試驗使用不同的隨機輸入組合。接著分析從每項試驗所得出的模擬結果,以判斷不確定變數的機率分佈。

蒙地卡羅模擬的概念源自於曼哈頓計畫 (Manhattan Project) 和後續的核武開發計畫。1946 年,Stanislaw Ulam 和 John Von Neumann 嘗試確定中子與原子核碰撞時釋放能量的機率分佈。有位同事提議使用「蒙地卡羅」這名稱,因為他的叔叔曾在摩納哥的蒙地卡羅賭場賭博,輸入變數的隨機選取讓他們聯想到賭場輪盤的隨機性。

大多數過程都具確定性,因為在提出任一輸入組合時,輸出結果是已知的。舉例來說,如果使用已知溫度的已知水量,加上已知的熱量,便能計算出溫度升高多少。但是,若是以隨機輸入且過程本身複雜時,在這項較為複雜的系統中,結果就會難以預測。工程師、科學家、數學家和經濟學家都使用蒙地卡羅模擬,將隨機性納入此類系統的結果預測中。 

使用 Microsoft Excel 的蒙特卡羅模擬範例

瞭解這項強大模擬工具的一個好方法就是直接透過一個簡單的範例加。有個典型的題目是,預測四枚硬幣要擲多少次,才會出現零、一、二、三或四次正面。

輸入變數是硬幣數,我們想預測的輸出變數,則是各種正面組合的機率。這個簡單的 Excel 蒙地卡羅模擬,使用隨機數函數「 rand()」 預測硬幣正反面的結果:當隨機數小於 0.5 時,將儲存格設為一 (表示正面),大於 0.5 時則設為零 (表示反面)。此模型由一個表格組成,其中每枚硬幣對應一個欄位,每次試驗對應一列,並設有一個總和欄位,用於計算擲出正面的硬幣數量。為了計算機率,此模型使用「 countif()」 計算各種可能性的發生次數,然後將其除以試驗次數。 

monte carlo example excel four coin
monte carlo excel formula

使用 Microsoft Excel 進行簡單的四枚硬幣蒙地卡羅模擬。結果顯示在上方圖片,使用的公式則顯示在下方圖片。每次重新整理試算表時,都會計算出新的結果。

如何進行蒙地卡羅模擬

蒙地卡羅模擬使用演算法,透過從大量隨機輸入進行取樣以解決問題。此工具的使用者必須定義打算模擬的流程、識別輸入和輸出值、執行模擬並審核結果。

以下是具體步驟:

1.瞭解流程

開始模擬前,先定義欲建模的流程。這可以是一個物理問題、股票市場、特定區域的天氣或生物學過程。

2.定義自變數及其分佈

下一步是擷取所有自變數。這些變數代表該過程的各項特性。它們也必須是在一旦改變時,就會影響該流程行為的特性。自變數也稱為輸入變數、輸入值,或簡稱為輸入。

在此步驟中,研究人員亦需針對每個自變數,設定其最小值與最大值,並定義該值範圍內的分佈或變異性。分佈有多種類型。以下是最常見的項目:

  • 均勻分佈:指定範圍內的任何值,與其他任何值出現的機率相同,進而形成均等或均勻的分佈。
  • 常態分佈:在自然現象與金融領域中,值通常會集中於某一中心平均值附近,距離該平均值越遠,發生機率就越低,這稱為常態分佈。許多人也將其稱為「鐘形曲線」,因為繪製於圖表上時,其形狀類似鐘形。
  • 三角分佈:當實際資料有限 (例如在專案管理情境) 時,工程師通常會使用最小值、最可能值與最大值以建立三角分佈,而非使用鐘形曲線。最可能值可能不是平均值。
  • 二項分佈:當一流程的輸入值只有兩種可能值 (例如零或一、是或否、true 或 false、正面或反面等),研究人員會採用二項分佈。
  • 卜瓦松分佈:卜瓦松分佈 (Poisson distribution) 會擷取具有兩個可能值的輸入參數。然而,該分佈會考慮特定值隨時間變化的發生頻率。商店來客數在這方面是不錯的例子。
  • 經驗分佈:在複雜的系統中,特定輸入變數的分佈,可能不符任何常見的特性。然而,當有足夠的歷史資料能用於繪製分佈圖時,便可採用經驗或自訂分佈。

3.定義應變數

第三步是定義流程的應變數。這些是可測量的特性,會在輸入變數出現變動時跟著變化。應變數同時應是對人們而言至關重要的指標。最小化或最大化應變數是最佳化研究的典型目標。或者,團隊會利用可能的結果做出決策。應變數也稱為輸出變數、輸出值或結果值。

4.建立流程模擬

關鍵步驟是將流程準確轉換為電腦演算法。這可以是一個簡單的方程式、一個查找表,或以數值模型呈現的較複雜表示方式。模擬應盡可能快速高效執行。

5.使用輸入變數的隨機組合,重複執行模擬

蒙地卡羅模擬的本質是透過模擬模型執行大量試驗。演算法使用每個輸入的值和分佈範圍,為每個輸入變數建立隨機值。接著,該工具會擷取每次試驗的不同結果。

受測流程決定了為取得輸出值準確分佈所需的模擬執行次數。有些問題需要執行 1,000 到 10,000 次。但有些流程可能需要執行 100,000 次以上的試驗。

6.分析輸出變數

收集到所有輸出值後,下一步是套用統計方法以估計每個結果的發生機率。如果輸出變數為常態分佈,其機率分佈可由平均值與標準差表示。在簡單情境下,特定值的機率是將特定結果計數除以試驗次數計算得出。

對於較複雜的系統和應用領域,尤其是訓練機器學習模型,研究人員會使用貝葉斯分析。

蒙地卡羅模擬於不同產業的典型應用

各行各業會使用蒙地卡羅模擬進行機率建模。以下是一些最常見的應用領域:

工程設計

工程師時常需要設計缺乏歷史資料,或無法以簡單確定性模型描述的複雜系統,所以會在多種應用領域中採取蒙地卡羅方法。除了設計外,他們也將其用於專案管理,針對專案規劃進行敏感性分析和風險管理。最常見的用途是複雜系統的數值模擬,以瞭解產品的統計行為,以及輸入與輸出變數之間的關係。其中一個最佳範例是中子傳輸,工程師會計算中子如何穿過核反應爐中的結構元件,並與其發生交互作用。

石油、天然氣和採礦

從地球上開採自然資源,涉及在許多未知因素下,預測專案的經濟可行性。業界使用蒙地卡羅模擬協助預測儲存層規模、孔隙度、開採資源品質,甚至該商品的未來價格。其中一項較為常見的用途,是利用機率分佈,按照潛在油田的地質條件建模,包括不同岩層的組成、孔隙度與厚度,以及各種條件組合下的油藏分佈。人們接著會執行蒙地卡羅模擬,以取得潛在油藏含量分佈。他們不是預測特定位置的確切油藏量,而是計算石油的機率分佈。

金融市場

金融市場的複雜度和隨機性,在世上鮮少有事物可以相提並論。經濟學家和財務分析師會使用蒙地卡羅方法,以預測股價、波動性、利率、消費價格和其他關鍵經濟變數。商品交易商會使用蒙地卡羅方法,針對持有商品隨著時間的價格波動進行壓力測試。他們將價格對數十種不同市場影響變化的敏感度進行建模,然後隨機選取隨著時間發生的事件,進而取得每日可能價格的分佈。這樣便能取得其投資組合的風險值 (VAR)。

物理、化學和生物技術

蒙地卡羅方法最初是為核子物理學所開發,至今仍是反應爐、放射治療和偵測器等系統的重要輻射建模工具。化學家將其作為運算化學與統計力學的基礎,用於建立化學反應模型或開發新分子,因為他們所研究的機制,無法透過解析方法進行計算。在生物技術領域也不例外,研究人員利用此方法解讀藥物試驗結果、評估患者反應率,並據此設計新藥。

在新藥開發領域中,蒙地卡羅的常見用途是模擬分子嵌合。化學家想要找到能嵌入蛋白質 (鎖) 的小分子 (鑰匙)。如果分子能嵌入蛋白質,就可以抑制不必要的化學反應。與其對小分子的所有形狀與旋轉逐一建模,取而代之的是對兩者隨機分佈取樣,找出能量最低的組合,供研究人員進一步分析。 

蒙地卡羅方法的優缺點

有鑑於蒙地卡羅模擬的多項優勢,人們在許多應用領域中都會使用它。不過,此方法也有一些缺點,因此應用於實際問題之前應加以考量。

下面列出了最為常見的優缺點:

優點

  • 可將複雜問題建模。
  • 產生機率結果。
  • 提供輸入變數的敏感度資訊,指出這些變數的異動,對輸出變數值的影響程度。
  • 擷取輸入分佈。

缺點:

  • 對於具有許多輸入和輸出變數、數值模型運算複雜度高的系統,需要用到龐大運算資源。
  • 對輸入資料品質高度敏感 (垃圾進、垃圾出)。
  • 產生高度精準的假象,因為其會得出大量統計資訊。然而,計算得出的分佈品質,仍取決於輸入參數與模型準確度。
  • 由於建立和驗證準確模型相當耗時,整個過程具勞動密集性。

蒙地卡羅模擬使用的工具

執行蒙地卡羅模擬通常使用三種工具:數學軟體、自訂程式和模擬軟體。

如下所述,三者各有其優點和挑戰。

數學軟體

Microsoft Excel、Google 試算表、Mathematica 和 MATLAB 等軟體工具的功能都很強大,可執行計算和處理輸入和輸出變數的統計分佈。試算表工具缺乏蒙地卡羅專用功能,使用者必須自行從頭建立模擬。專門的數學工具,特別是具備強大統計模組的工具,更容易建立隨機變數、自動執行試驗,並對結果進行機率分析。這種等級的工具所面臨的最大挑戰是建立準確的流程模型。

自訂程式

若能透過程式語言中的子程序描述流程時,自訂程式會是理想的工具類型。大多數語言都有函式庫以支援任務,此類任務例如為隨機變數及為處理據此產生的應變數,建立輸入分佈。這種方式的缺點在於使用者必須為每種應用建立自訂程式,包含研究過程的模型。像 Python 的程式設計平台有助於簡化此過程,但在設定並啟動模擬方面,仍需要耗費一些時間。

模擬軟體

模擬軟體是功能最強大且在實務應用中最為常見的工具組合。這些程式可為所研究的過程建模,通常本身也搭載內建工具,能夠簡化蒙地卡羅的設定流程,並自動化執行試驗案例。

Ansys Optics 套件就是一個不錯的範例:Ansys Zemax OpticStudio 光學系統設計和分析軟體,可用於光學系統的蒙地卡羅模擬,至於 Ansys Lumerical 軟體,則用於模擬光子學的高度隨機行為。兩種工具都能協助使用者建立支援蒙地卡羅模擬的參數模型。 

optimization interface lumerical

針對 Ansys Lumerical 軟體的最佳化介面

Ansys 旗艦模擬軟體工具的情況也是如此:Ansys Mechanical 結構有限元素分析軟體、Ansys LS-DYNA/LS-Opt 非線性動力學結構模擬軟體、Ansys Fluent 流體模擬軟體、Ansys Maxwell 先進電磁場求解器,以及 Ansys HFSS 高頻 3D 電磁模擬軟體。這些工具各自專注於模擬特定的物理子領域。然而,它們都支援參數化輸入和輸出變數,提供蒙地卡羅模擬工具,並支援統計後處理。

如果特定模擬平台的內建工具不足,使用者可以將其整合至最佳化工具中,例如 Ansys optiSLang 流程整合與設計最佳化軟體。這款通用的最佳化與流程整合工具具備先天優勢,可執行蒙地卡羅模擬,並同時與Ansys (現已與 Synopsys 合而為一) 和非 Ansys 模擬工具相互整合,提供單一自動化平台。它也運用功能強大的 Python 介面,將程式連接至其他軟體或 Python 例行程式。 

monte carlo tolerance zemax

Ansys Zemax OpticStudio 光學系統設計和分析軟體的蒙地卡羅公差介面

人工智慧 (AI)

研究人員和數學家長期以來將蒙地卡羅模擬用於多個不同 AI 應用領域。以下是幾個範例:

  • 使用訓練與最佳化的機器學習、貝葉斯分析和信心評估
  • 用於大規模決策的蒙地卡羅樹搜尋
  • 強化學習
  • 訓練神經網路
  • 微調大型語言模型 (LLM)

用於模擬的 Ansys SimAI 雲端 AI 平台,是現代 AI 工具的典型範例,其運用蒙地卡羅模擬產生模型所需的訓練資料。

相關資源

生物醫學應用領域的光學和輻射量測模擬

這場網路研討會探討計算生物組織中的光傳播,以及如何判斷生物組織散射與吸收光譜等概念。

Ansys HFSS + SynMatrix AI:低損耗平面濾波器

這場簡報將探索平面濾波器,如何在今日的 RF 與微波系統中成為必要元件、提供小型化、成本效益及高頻效能兼備的解決方案,並與 PCB 技術相容。

將機器學習演算法整合至可靠度分析工作流程,以便進行先進駕駛輔助系統的數位驗證

這場簡報說明使用可靠度分析的方法,進行數位驗證的挑戰,並介紹可靠度演算法和機器學習的工作流程。