MCTS 蒙特卡洛樹搜尋

2021-08-20 11:35:08 字數 987 閱讀 2254

最近想去做乙個小型的五子棋對弈,中間會用到蒙特卡洛樹,在此標記一下。

mcts,即蒙特卡羅樹搜尋,是一類搜尋演算法樹的統稱,可以較為有效地解決一些搜尋空間巨大的問題。

如乙個8*8的棋盤,第一步棋有64種著法,那麼第二步則有63種,依次類推,假如我們把第一步棋作為根節點,那麼其子節點就有63個,再往下的子節點就有62個……

如果不加干預,樹結構將會繁雜,mcts採用策略來對獲勝性較小的著法不予考慮,如第二步的63種著法中有10種是不可能勝利的,那麼這十個子節點不予再次分配子節點。

mcts的主要步驟分為四個:

1, 選擇(selection)

即找乙個最好的值得探索的結點,通常是先選擇沒有探索過的結點,如果都探索過了,再選擇ucb值最大的進行選擇(ucb是由一系列演算法計算得到的值,這裡先不詳細講,可以簡單視為value)

2, 擴充套件(expansion)

已經選擇好了需要進行擴充套件的結點,那麼就對其進行擴充套件,即對其乙個子節點最為下一步棋的假設,一般為隨機取乙個可選的節點進行擴充套件。

3, 模擬(simulation)

擴充套件出了子節點,就可以根據該子節點繼續進行模擬了,我們隨機選擇乙個可選的位置作為模擬下一步的落子,將其作為子節點,然後依據該子節點,繼續尋找可選的位置作為子節點,依次類推,直到博弈已經判斷出了勝負,將勝負資訊作為最終得分。

4, 回溯更新(backpropagation)(此處應該也可以叫做反向傳遞)

將最終的得分累加到父節點,不斷從下向上累加更新。

對於ucb值,計算方法很簡單,公式如下:

其中,v'表示當前樹節點,v表示父節點,q表示這個樹節點的累計quality值,n表示這個樹節點的visit次數,c是乙個常量引數。

參考:

蒙特卡洛樹演算法 MCTS

實質上可以看成一種增強學習 蒙特卡羅樹搜尋 mcts 會逐漸的建立一顆不對稱的樹。可以分為四步並反覆迭代 1 選擇 從根節點,也就是要做決策的局面r出發向下選擇乙個最急迫需要被拓展的節點t 局面r是第乙個被檢查的節點,被檢查的節點如果存在乙個沒有被評價過的招式m,那麼被檢查的節點在執行m後得到的新局...

蒙特卡洛樹搜尋 8 11 蒙特卡洛樹搜尋

我想蒙特卡洛樹搜尋 monte carlo tree search,mcts 突然為人所知還是得益於deepmind的alphago。一瞬間,關於解析alphago背後技術的文章大量湧現,其中的乙個核心技術就是本節mcts的乙個擴充套件。本節我們基於前面的知識,來看看mcts究竟是什麼?首先,我們給...

蒙特卡洛理解

蒙特卡羅演算法並不是一種演算法的名稱,而是是一類隨機方法的統稱。這類方法的特點是,可以在隨機取樣上計算得到近似結果,隨著取樣的增多,得到的結果是正確結果的概率逐漸加大,但在 放棄隨機取樣,而採用類似全取樣這樣的確定性方法 獲得真正的結果之前,無法知道目前得到的結果是不是真正的結果。從特性特性來說,我...