蒙特卡羅演算法

2021-06-29 15:50:23 字數 1274 閱讀 5512

蒙特卡羅演算法並不是一種演算法的名稱,而是對一類隨機演算法的特性的概括。**說「蒙特卡羅演算法打敗武宮正樹」,這個說法就好比說「我被乙隻脊椎動物咬了」,是比較火星的。實際上是zen的演算法具有蒙特卡羅特性,或者說它的演算法屬於一種蒙特卡羅演算法。

那麼「蒙特卡羅」是一種什麼特性呢?我們知道,既然是隨機演算法,在取樣不全時,通常不能保證找到最優解,只能說是盡量找。那麼根據怎麼個「盡量」法兒,我們我們把隨機演算法分成兩類:

舉 個例子,假如筐裡有100個蘋果,讓我每次閉眼拿1個,挑出最大的。於是我隨機拿1個,再隨機拿1個跟它比,留下大的,再隨機拿1個……我每拿一次,留下 的蘋果都至少不比上次的小。拿的次數越多,挑出的蘋果就越大,但我除非拿100次,否則無法肯定挑出了最大的。這個挑蘋果的演算法,就屬於蒙特卡羅演算法——盡量找好的,但不保證是最好的

而拉斯維加斯演算法,則是另一種情況。假如有一把鎖,給我100把鑰匙,只有1把是對的。於是我每次隨機拿1把鑰匙去試,打不開就再換1把。我試的次數越多,開啟(最優解)的機會就越大,但在開啟之前,那些錯的鑰匙都是沒有用的。這個試鑰匙的演算法,就是拉斯維加斯的——盡量找最好的,但不保證能找到

所以你看,這兩個詞並不深奧,它只是概括了隨機演算法的特性,演算法本身可能複雜,也可能簡單。這兩個詞本身是兩座著名賭城,因為賭博中體現了許多隨機演算法,所以借過來命名。

這 兩類隨機演算法之間的選擇,往往受到問題的侷限。如果問題要求在有限取樣內,必須給出乙個解,但不要求是最優解,那就要用蒙特卡羅演算法。反之,如果問題要求 必須給出最優解,但對取樣沒有限制,那就要用拉斯維加斯演算法。對於機器圍棋程式而言,因為每一步棋的運算時間、堆疊空間都是有限的,而且不要求最優解,所 以zen涉及的隨機演算法,肯定是蒙特卡羅式的。

機器下棋的演算法本質都是搜尋樹,圍棋難在它的樹寬可以達到好幾百(西洋棋只有幾十)。在 有限時間內要遍歷這麼寬的樹,就只能犧牲深度(俗稱「往後看幾步」),但圍棋又是依賴遠見的遊戲,甚至不僅是看「幾步」的問題。所以,要想保證搜尋深度, 就只能放棄遍歷,改為隨機取樣——這就是為什麼在沒有mcts(蒙特卡羅搜樹)類的方法之前,機器圍棋的水平幾乎是笑話。而採用了mcts方法後,搜尋深 度就大大增加了。比如,在zen與武宮正樹九段的對局中,我們可以看這一步棋:

武宮正樹九段(執白)第53步大飛,明顯企圖攻角,而zen(執黑)卻直接不理,放棄整個右下角,轉而把中腹走厚。這個交換究竟是否划算,就不在這裡討論了,但我們至少可以看出,zen敢於在此脫先,捨棄這麼大的眼前利益,其搜尋深度確實達到了人類專業棋手的水平。

蒙特卡羅演算法

演算法原理 蒙特卡羅方法也稱統計模擬方法,是1940年代中期由於科學技術的發展和電子計算機的發明,而提出的一種以概率統計理論為指導的數值計算方法。是指使用隨機數 或更常見的偽隨機數 來解決很多計算問題的方法。原理大致如下圖所示 很簡單,舉個例子就是扔石子到方形區域,區域內有個圓,圓內石子的比例即為圓...

蒙特卡羅演算法

構造描述概率過程 實現從已知概率分布抽樣 隨機數是實現模擬的工具 建立各種估計量 得到無偏估計 clear dt 1 365.0 一天的年單位時間 s0 20 在初始時刻的 程式中假設 r 0.031 期望收益率 sigma 0.6 波動率 0.6 expterm r dt 漂移項dt stddev...

蒙特卡羅演算法

參考 蒙特卡羅方法是一類以概率統計理論為指導的數值計算方法。蒙特卡羅是一種隨機演算法,使用隨機數 或者偽隨機數 來解決計算問題,其思想是 當所求解問題是某種隨機事件出現的概率,或者是某個隨機變數的期望值時,通過某種 實驗 的方法,以這種事件出現的頻率估計這一隨機事件的概率,或者得到這個隨機變數的某些...