- 選擇階段:MCTS反覆選擇當前狀態的得分最高的子節點。如果當前狀態是根節點,那麼這些孩子從哪裏來的呢?難道你沒有一個只有一個根節點的樹開始?只有一個根節點,您是否馬上進入擴展和模擬階段?
選擇步驟通常實施不實際這實際上存在於樹節點中選擇(已經通過擴展步驟中創建)。它通常被ipmlemented選擇匹配你當前節點的遊戲狀態的所有可能的後繼狀態。因此,在剛開始的時候,當你只有一個根節點時,你會希望你的選擇步驟仍然能夠從所有可能的後繼遊戲狀態中選擇一個(即使它們沒有匹配樹中的節點)。通常情況下,對於尚未訪問過的遊戲狀態(在樹中沒有節點),您需要非常高的分數(無限大,或者一些非常大的常數)。這樣,你的選擇步驟將總是隨機地在沒有匹配節點的狀態中進行選擇,並且只有在所有可能的遊戲狀態在樹中具有匹配節點的情況下才真正使用探索與利用權衡。
- 如果MCTS選擇在選擇階段得分最高的子節點,你永遠探索其他的孩子甚至可能是一個全新的孩子,而下降樹的水平?
的「」得分'使用選擇步驟通常應不只是模擬通過該節點的去所有結果的平均值。它通常應該是一個由兩部分組成的分數;一個「探索」部分,對於已經很少被訪問的節點來說是很高的,還有一個「開發」部分,對於目前看起來是很好的移動的節點來說是很高的(這裏很多仿真都以一個勝利結束對於允許選擇移動的玩家來說)。這在您鏈接的論文的第3.4節中有描述。 W(s, a)/N(s, a)
是開發部分(簡單的平均分數),而B(s, a)
是探索部分。
- 節點的擴展階段如何發生?在上圖中,爲什麼不選擇葉節點,而是決定將葉節點添加到葉節點?
膨脹處理通常被實現簡單的添加相應於由選擇步驟選擇的最後一場比賽狀態的節點(以下是我回答你的第一個問題,在選擇步驟總是會選擇一個遊戲結束以前從未選擇的狀態)。
- 在模擬階段,使用隨機策略爲兩個玩家選擇合法移動,直到遊戲結束。這個隨機策略是一種硬編碼的行爲,你基本上在模擬中擲骰子,以便在每個玩家之間輪流選擇其中一種可能的動作,直到最後?
最直接的(也可能是最常見的)實現的確是完全隨機播放。儘管如此,也可以做到這一點。例如,您可以使用啓發式方法爲某些操作創建偏向。通常,完全隨機播放速度更快,可以讓您在相同的處理時間內運行更多模擬。但是,它通常也意味着每個單獨的模擬信息都較少,這意味着您實際上需要運行更多的MCTS模擬才能發揮出色。
- 我明白這是你開始在一個根節點和通過重複上述相在構造樹到一定深度的方式。然後你選擇第二級別中得分最高的孩子作爲下一步。你願意構建的樹的大小基本上是你的硬性AI響應要求嗎?由於在構建樹時,遊戲將停止並計算該樹。
MCTS不統一探索樹的所有部分到相同的深度。它傾向於探索看起來比較有趣的部分(強烈的動作),比看起來沒有興趣的部分(弱動作)更深。所以,通常你不會真的使用深度限制。相反,您可以使用時間限制(例如,持續運行迭代,直到您花費1秒,5秒或1分鐘,或者您允許的任何處理時間量)或迭代次數限制(例如,允許它運行10K或50K或任意數量的仿真)。
感謝您對MCST的一般性解釋,但這種高級解釋都可以從我鏈接的資源中獲得。我所追求的是那些我不明白的具體問題,現在我決定爲遊戲編寫一個AI代碼。 – jiminssy