强化学习笔记(七):蒙特卡洛树搜索(MonteCarlo Tree Search)
目錄
選擇
擴展
模擬
反向傳播
課外資料
如果說多臂賭博機問題被看做?單步強化學習任務?(只用一步決策玩哪個老虎機,然后就收到回報),那么蒙特卡洛樹搜索可以看做是解決?多步強化學習任務?的工具。?樹?是一種天然的用來刻畫或者存儲多步決策的數據結構。正如所有的動態規劃問題可以被轉化為圖搜索,而所有的線性規劃問題可以被轉化為二分圖一樣。?至于蒙特卡洛樹搜索,實際上可以分為兩步[1]:
- 利用樹結構來重新表達決策問題
- 利用蒙特卡洛方法來進行搜索
MCTS對游戲進行多次模擬,然后嘗試基于模擬結果對最佳下一步進行預測。MCTS的四個步驟,即選擇、擴展、模擬和反向傳播。
MCTS的主要概念還是搜索。搜索是沿著游戲樹的一組遍歷的集合,單次遍歷是從根節點(當前游戲狀態)到一個未完全展開節點的路徑。一個未完全展開的節點意味著它至少有一個未被訪問的子節點。當遇到未完全展開的節點時,從該節點的子節點中選取一個未被訪問過的用來進行一次模擬。模擬的結果然后反向轉播是當前樹的根節點,并更新節點的統計信息。當搜索結束時(受限于時間或計算能力),就可以根據收集的統計信息來決定下一步怎么走[2]。
-
選擇
UCT(樹的置信度上界)是一個讓我們從已訪問的節點中選擇下一個節點來進行遍歷的函數,也是MCTS的核心函數[2]。
???????第一部分是總收益/總次數=平均每次的收益,參數c是利用和探索之間的折中系數。
如何選擇動作?———選擇使得Q值最大的動作
-
擴展
?通過上面兩個圖的對比,所有子節點都被訪問了,則這個節點被全擴展了,否則,這個節點沒有被全擴展。
-
模擬
在實際應用中,搜索的一開始,根節點的所有子節點都是未被訪問的,如果選擇了一個,第一次模擬就隨之開始。要注意的是,模擬過程中由rollout策略函數選擇的節點是不會被標記為已訪問過的,只有從模擬開始的節點被標記為已訪問過。模擬的最簡單的形式只是一個從給定游戲狀態到終端的隨機移動序列。模擬總是會產生一個結果,對于游戲來說就是獲勝、失敗或平局,但是廣義上來說模擬的合法結果可以是任意值[2]。
-
反向傳播
反向傳播是從葉節點(模擬開始)到根節點的遍歷。模擬結果被傳送到根節點,并更新反向傳播路徑上每個節點的統計信息。反向傳播保證每個節點的統計信息能夠反映該節點所有后代的模擬結果[2]。
課外資料
在學習的過程中,看見一個博主[1]?的一份作業,感覺有意思,粘貼在這里,并附上了原文鏈接,感興趣的同學可以瞅瞅。
作業的任務是這樣的:如何利用蒙特卡洛樹搜索來解決一個圖染色的組合優化問題。具體而言,給定一個無向圖和一串紅藍相間的顏色序列,初始給一個節點按照顏色序列的順序給其染色。接下來,我們可以給未染色并且是已染色點的相連點進行染色,并且必須按照顏色序列的順序染色。如果顏色序列用盡或者所有的點都被染上色,那么任務結束。最終的收益為連接兩個不同顏色點(已染色)的邊的數量,并且越大越好。
博主[1]的代碼基于Monte Carlo Search Algorithm Discovery for One Player Games這篇文章,給出了實現蒙特卡洛樹搜索的通用框架。也就是基于這個框架,可以很簡單的構造出任意類型的蒙特卡洛樹搜索算法,所以通過該博主的代碼,你可以獲得蒙特卡洛樹搜索的通用框架!
具體的程序代碼以及文檔,請見https://github.com/Greenwicher/Awsome-Project/tree/master/IE5504%20Systems%20Modeling%20and%20Advanced%20Simulation
參考資料:
[1]:http://blog.greenwicher.com/2016/12/24/drl-from_mab_to_mcts/
[2]:https://blog.csdn.net/qq_16137569/article/details/83543641?強烈推薦這個博客,這篇博文講的很清楚!!
斯坦福cs234課件:http://web.stanford.edu/class/cs234/index.html?
總結
以上是生活随笔為你收集整理的强化学习笔记(七):蒙特卡洛树搜索(MonteCarlo Tree Search)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: icall,bcall,ecall
- 下一篇: 《高效能人士的7个习惯》读书笔记PPT模