机器学习(三十七)——Integrating Learning and Planning(3)
Integrating Learning and Planning
Monte-Carlo Search(續)
下面我們結合實例(下圍棋)和示意圖,來實際了解MCTS的運作過程。
第一次迭代:五角形表示的狀態是個體第一次訪問的狀態,也是第一次被錄入搜索樹的狀態。我們構建搜索樹:將當前狀態錄入搜索樹中。使用基于蒙特卡羅樹搜索的策略(兩個階段),由于當前搜索樹中只有當前狀態,全程使用的應該是一個搜索第二階段的默認隨機策略,基于該策略產生一個直到終止狀態的完整Episode。圖中那些菱形表示中間狀態和方格表示的終止狀態,在此次迭代過程中并不錄入搜索樹。終止狀態方框內的數字1表示(黑方)在博弈中取得了勝利。此時我們就可以更新搜索樹種五角形的狀態價值,以分數1/1表示從當前五角形狀態開始模擬了一個Episode,其中獲勝了1個Episode。
第二次迭代:當前狀態仍然是樹內的圓形圖標指示的狀態,從該狀態開始決定下一步動作。根據目前已經訪問過的狀態構建搜索樹,依據模擬策略產生一個行為模擬進入白色五角形表示的狀態,并將該狀態錄入搜索樹,隨后繼續該次模擬的對弈直到Episode結束,結果顯示黑方失敗,因此我們可以更新新加入搜索樹的五角形節點的價值為0/1,而搜索樹種的圓形節點代表的當前狀態其價值估計為1/2,表示進行了2次模擬對弈,贏得了1次,輸了1次。
經過前兩次的迭代,當位于當前狀態(黑色圓形節點)時,當前策略會認為選擇某行為進入上圖中白色五角形節點狀態對黑方不利,策略將得到更新:當前狀態時會個體會嘗試選擇其它行為。
第三次迭代:假設選擇了一個行為進入白色五角形節點狀態,將該節點錄入搜索樹,模擬一次完整的Episode,結果顯示黑方獲勝,此時更新新錄入節點的狀態價值為1/1,同時更新其上級節點的狀態價值,這里需要更新當前狀態的節點價值為2/3,表明在當前狀態下已經模擬了3次對弈,黑方獲勝2次。
隨著迭代次數的增加,在搜索樹里錄入的節點開始增多,樹內每一個節點代表的狀態其價值數據也越來越豐富。在搜索樹內依據?\epsilon?-greedy策略會使得當個體出于當前狀態(圓形節點)時更容易做出到達圖中五角形節點代表的狀態的行為。
第四次迭代:當個體位于當前(圓形節點)狀態時,樹內策略使其更容易進入左側的藍色圓形節點代表的狀態,此時錄入一個新的節點(五角形節點),模擬完Episode提示黑方失敗,更新該節點以及其父節點的狀態價值。
第五次迭代:更新后的策略使得個體在當前狀態時仍然有較大幾率進入其左側圓形節點表示的狀態,在該節點,個體避免了進入剛才失敗的那次節點,錄入了一個新節點,基于模擬策略完成一個完整Episode,黑方獲得了勝利,同樣的更新搜索樹內相關節點代表的狀態價值。
如此反復,隨著迭代次數的增加,當個體處于當前狀態時,其搜索樹將越來越深,那些能夠引導個體獲勝的搜索樹內的節點將會被充分的探索,其節點代表的狀態價值也越來越有說服力;同時個體也忽略了那些結果不好的一些節點(上圖中當前狀態右下方價值估計為0/1的節點)。需要注意的是,仍然要對這部分節點進行一定程度的探索,以確保這些節點不會被完全忽視。
MCTS的優點:
-
蒙特卡羅樹搜索是具有高度選擇性的(Highly selective)、導致越好結果的行為越被優先選擇(best-first)的一種搜索方法。
-
它可以動態的評估各狀態的價值,這種動態更新價值的方法與動態規劃不同,后者聚焦于整個狀態空間,而蒙特卡羅樹搜索是立足于當前狀態,動態更新與該狀態相關的狀態價值。
-
使用采樣避免了維度災難;同樣由于它僅依靠采樣,因此適用于那些“黑盒”模型(black-box models)。
-
MCTS是可以高效計算的、不受時間限制以及可以并行處理的。
參考:
https://mp.weixin.qq.com/s/4qeHfU9GS4aDWOHsu4Dw2g
記憶增強蒙特卡洛樹搜索細節解讀
https://zhuanlan.zhihu.com/p/30458774
如何學習蒙特卡羅樹搜索(MCTS)
https://zhuanlan.zhihu.com/p/26335999
蒙特卡洛樹搜索MCTS入門
https://zhuanlan.zhihu.com/p/25345778
蒙特卡洛樹搜索(MCTS)基礎
Game Tree
上面圍棋示例中的搜索樹,在博弈論中,也叫做博弈樹(Game Tree)。
Minimax
極小化極大算法(Minimax)是零和游戲常見的策略。通俗的說法就是:選擇對自己最有利,而對對手最不利的動作。
Alpha Beta pruning algorithm
在博弈過程中,我們不僅要思考自己的最優走法,還要思考對手的最優走法。而且這個過程是可以遞歸下去的,直到終局為止。
這樣就會形成一整套如下所示的策略序列(以圍棋為例,黑棋先下):
黑最優->白最優->黑最優->白最優->…
然后輪到白棋下子:
黑最優->白最優->黑最優->白最優->...
這里的紅色字體表示的是已經發生的事件。
可以看的出來,在零和游戲中,我們只需要考慮一方的Game Tree就行了,另一方的Game Tree只是一個鏡像而已。這樣的話,搜索空間直接就只有原來的一半了。
能不能進一步裁剪呢?這里介紹一下Alpha Beta pruning algorithm。
詳細的步驟參見:
http://web.cs.ucla.edu/~rosen/161/notes/alphabeta.html
Minimax with Alpha Beta Pruning
這里只提一下要點:
-
α\alphaα是指the maximum lower bound of possible solutions;β\betaβ是指the minimum upper bound of possible solutions。
-
我方下棋會尋找使我方獲得最大值的策略,因此叫做MAX結點;敵方下棋顯然會尋找能使我方收益最小的策略,因此叫做MIN結點。從Game Tree的角度來看,就是:一層MAX結點->一層MIN結點->一層MAX結點->一層MIN結點->…
-
初始狀態:根節點:α=?∞,β=∞\alpha=-\infty,\beta=\inftyα=?∞,β=∞,葉子結點:包含value值。
-
深度優先遍歷Game Tree,利用MAX結點的值,更新父結點的β\betaβ值,利用MIN結點的值,更新父結點的α\alphaα值。
-
一旦出現α>β\alpha > \betaα>β的情況,則說明遇到了異常分支,直接剪去該分支即可。
參考
https://zhuanlan.zhihu.com/p/55750669
博弈樹與α-β剪枝
https://segmentfault.com/a/1190000013527949
Minimax和Alpha-beta剪枝算法簡介,以及以此實現的井字棋游戲(Tic-tac-toe)
https://materiaalit.github.io/intro-to-ai-17/part2/
Games
MCTS和MC的區別
上圖是一局圍棋的Game Tree的局部。最下面的葉子結點給出了黑棋贏棋的百分比。現在的問題是,黑棋該如何走呢?(假設根節點為當前狀態)
如果是用蒙特卡洛方法,趨近的會是其下所有勝率的平均值。例如經過蒙特卡洛模擬,會發現b1后續的勝率是49% = (50+48)/2,而b2后續的勝率是55% = (62+45+58)/3。
于是蒙特卡洛方法說應該走b2,因為55%比49%的勝率高。但這是錯誤的。因為如果白棋夠聰明,會在黑棋走b1的時候回應以w2(盡量降低黑棋的勝率),在黑棋走b2的時候回應以w4(盡量降低黑棋的勝率)。
如果用蒙特卡洛方法做上一百萬次模擬,b1和b2的勝率仍然會固定在49%和55%,不會進步,永遠錯誤。所以它的結果存在偏差(Bias),當然,也有方差(Variance)。
而蒙特卡洛樹搜索在一段時間模擬后,b1和b2的勝率就會向48%和45%收斂,從而給出正確的答案。所以它的結果不存在偏差(Bias),只存在方差(Variance)。但是,對于復雜的局面,它仍然有可能長期陷入陷阱,直到很久之后才開始收斂到正確答案。
Dyna-2
如果我們把基于模擬的前向搜索應用到Dyna算法中來,就變成了Dyna-2算法。
使用該算法的個體維護了兩套特征權重:
-
一套反映了個體的長期記憶,該記憶是從真實經歷中使用TD學習得到,它反映了個體對于某一特定強化學習問題的普遍性的知識、經驗;
-
另一套反映了個體的短期記憶,該記憶從基于模擬經歷中使用TD搜索得到,它反映了個體對于某一特定強化學習在特定條件(比如某一Episode、某一狀態下)下的特定的、局部適用的知識、經驗。
總結
以上是生活随笔為你收集整理的机器学习(三十七)——Integrating Learning and Planning(3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习(三十六)——Integrati
- 下一篇: 机器学习(三十八)——博弈论(1)