Introduction to Monte Carlo Tree Search (蒙特卡羅搜索樹簡介)
部分翻譯自“Monte Carlo Tree Search and Its Applications”。
論文鏈接:http://digitalcommons.morris.umn.edu/cgi/viewcontent.cgi?article=1028&context=horizons
MCTS 結合了傳統 MC 隨機采樣的方法 和 樹搜索的方法。MC 方法利用重復的隨機采樣來得到結果。在 MCTS 中,隨機采樣的過程是在隨機模擬的形式中,用來拓展游戲樹。該游戲樹緊接着別用來決定下一個 move。MCTS 隨着游戲樹迭代的生長。每一次迭代,game tree 就 traversed 和 expanded。一段時間之后,game tree 就會收斂。這意味着在每次迭代中都 traversed 同一個路徑。這表明 MCTS 已經找到了一個 move 可以得到從當前游戲狀態下的模擬贏的最多次數。因為這個過程是隨機的,所以 MCTS 是一種概率的方法。MCTS 並不能永遠都找到最優的 move,但是擁有合理的推理過程,能夠使得選擇的 move 有很大的機會贏!這就比較牛逼了!
1. The Tree Structure
MCTS 編碼了游戲的狀態 和 其潛在的moves 到這個樹當中。樹種每一個節點都表示一個潛在的游戲狀態,根節點表示當前狀態。每一個邊表示合法move,使得游戲狀態從一個轉移到另一個。換句話說,它代表了從父節點到子節點的轉移。任何一個節點都有許多孩子節點作為其合法的 move。
例如,游戲 TicTacToe 開始的時候,根節點有9個子節點,每一個表示一個可能的移動。后面的子節點也有比上一個少一個選擇的子節點,由於上一次的選擇已經無法作為當前的選項了。
圖1 表示一個樹的頂端, AI 做出首次移動,所以 根節點 是 第一個游戲板,每一個子節點代表從當前游戲狀態所可以選擇的潛在的移動。該圖是一個簡化的版本,此處應該有 9個子節點,而這里只是畫出了 3 個。一旦 MCTS 決定選擇哪個動作,選中的子節點就變成了新的根節點。扔掉其兄弟姐妹節點。
隨着游戲狀態,每一個節點有一個聯系的值,執行那個子樹的模擬。每一個節點只執行一次模擬。所以,三個子樹 就從3次模擬中得到其值。通過選擇帶有最大預測值的節點, MCTS 算法選擇最優可能贏的路徑,這意味着 MCTS 算法最大化其能夠選擇的贏的move 個數。這就是 MCTS 能夠有效的主要原因。
2. The Four Steps of MCTS
蒙特卡羅搜索樹可以分為 4 個步驟:selection expansion simulation backpropagation.
迭代的執行這4個步驟,直到 AI 做出決定。下圖給出了一個示例:
第一個數字:代表在這個子樹上贏的次數;
第二個數字:代表在這個子樹上執行模擬的次數。
這個比值 就提供給我們這個節點的 預測值(estimated value)。
Selection:
在這個過程中, MCTS 算法利用 樹的策略遍歷整個樹。一個樹策略利用一個 evaluation function 用預測的最大值來優化節點。一旦遍歷到一個葉子節點,則需要轉成 expansion step。
Expansion:
添加一個 “?”的葉子節點。這是每次迭代中唯一添加的節點。
Simulation:又稱 playout 或者 rollout
選擇操作,直到達到結束狀態,或者滿足設定的閾值,就停止該操作。然后基於模擬的結果,建立新添加節點的值。
Backpropagation:
既然已經決定了新添加節點的值,那么剩下的樹就要進行更新。從新的節點開始,算法反向遍歷回到根節點。在遍歷的過程中,存在每一個節點上的模擬的次數都會增加,如果新節點的模擬導致了贏的局面,那么贏的次數也要增加。圖2中僅僅 值為 0/1 的節點不給更新,由於他們不是新添加節點的祖先。這些操作步驟確保每個節點的值准確的反應了在子樹中執行的模擬情況。
3. Upper Confidence Bound
應用在樹上的 upper confidence bound 被用在 MCTS 上(UCT),在遍歷樹的過程中的選擇步驟 作為樹策略。 UCT 平衡了 exploration 和 exploitation 的思想。
exploration approach 促使去探索尚未發現的樹的其他領域。這會將傾向於探索樹的廣度,而不是深度。
exploitation approach 傾向於選擇擁有最大預測值的路徑。這種是屬於貪心算法,趨於探索樹的深度。
UCT 通過給定相對未探索的節點一個 exploration bonus,來平衡 exploration 和 exploitation:
當遍歷樹的時候,孩子節點從這個等式返回的最大值將被選中。N 代表在那個節點和其子孫節點上進行模擬的總次數。W 代表多少次這樣的模擬才會得到贏的局面。C 代表一個經驗得到的 exploration constant。UCT 的第一部分考慮到 該節點的估計值 占所有模擬的比例。這是 exploitation 部分。第二個部分是 exploration bonus,這個和在父節點和子孫節點執行模擬次數的總數相比。這意味着,該節點模擬次數越小,等式中這部分占得比例越大。
另外,可以參考如下博客:
1. https://jeffbradberry.com/posts/2015/09/intro-to-monte-carlo-tree-search/
2. 論文鏈接:http://digitalcommons.morris.umn.edu/cgi/viewcontent.cgi?article=1028&context=horizons