實質上可以看成一種增強學習
蒙特卡羅樹搜尋(mcts)會逐漸的建立一顆不對稱的樹。可以分為四步並反覆迭代:
(1)選擇
從根節點,也就是要做決策的局面r出發向下選擇乙個最急迫需要被拓展的節點t;局面r是第乙個被檢查的節點,被檢查的節點如果存在乙個沒有被評價過的招式m,那麼被檢查的節點在執行m後得到的新局面就是我們所需要展開的t;如果被檢查的局面所有可行的招式已經都被評價過了,那麼利用ucb公式得到乙個擁有最大ucb值的可行招式,並且對這個招式產生的新局面再次進行檢查;如果被檢查的局面是乙個遊戲已經結束的遊戲局面,那麼直接執行步驟4;通過反覆的進行檢查,最終得到乙個在樹的最底層的最後一次被檢查的局面c和它的乙個沒有被評價過的招式m,執行步驟2。
(2)拓展
對於此時存在於記憶體中的局面c,新增乙個它的子節點。這個子節點由局面c執行招式m而得到,也就是t。
(3)模擬
從局面t出發,雙方開始隨機的落子。最終得到乙個結果(win/lost),以此更新t節點的勝利率。
(4)反向傳播
在t模擬結束之後,它的父節點c以及其所有的祖先節點依次更新勝利率。乙個節點的勝利率為這個節點所有的子節點的平均勝利率。並從t開始,一直反向傳播到根節點r,因此路徑上所有的節點的勝利率都會被更新。
之後,重新從第一步開始,不斷地進行迭代。使得新增的局面越來越多,則對於r所有的子節點的勝利率也越來越準。最後,選擇勝利率最高的招式。
實際應用中,mcts還可以伴隨非常多的改進。我描述的這個演算法是mcts這個演算法族中最出名的uct演算法,現在大部分著名的ai都在這個基礎上有了大量的改進了。
第二種解釋:
傳統意義上講,演算法名字帶有蒙特卡洛的意思就是,他對搜尋空間的搜尋都是隨機給乙個方向的,譬如說蒙塔卡羅算圓周率,就是在乙個正方形裡面隨機取點,看看落在圓裡面有多少。蒙特卡洛光線追蹤,在需要對環境積分的時候隨機取角度射光線。蒙特卡洛走迷宮,隨便走。
MCTS 蒙特卡洛樹搜尋
最近想去做乙個小型的五子棋對弈,中間會用到蒙特卡洛樹,在此標記一下。mcts,即蒙特卡羅樹搜尋,是一類搜尋演算法樹的統稱,可以較為有效地解決一些搜尋空間巨大的問題。如乙個8 8的棋盤,第一步棋有64種著法,那麼第二步則有63種,依次類推,假如我們把第一步棋作為根節點,那麼其子節點就有63個,再往下的...
蒙特卡洛演算法
從今天開始要研究sampling methods,主要是mcmc演算法 contents 1.蒙特卡洛介紹 2.蒙特卡洛的應用 3.蒙特卡洛積分 1.蒙特卡洛介紹 蒙特卡羅方法 monte carlo method 也稱統計模擬方法,是二十世紀四十年代中期由於科學技術的 發展和電子計算機的發明,而被...
蒙特卡洛演算法
問題描述 在數值積分法中,利用求單位圓的1 4的面積來求得pi 4從而得到pi。單位圓的1 4面積是乙個扇形,它是邊長為1單位正方形的一部分。只要能求出扇形面積s1在正方形面積s中佔的比例k s1 s就立即能得到s1,從而得到pi的值。怎樣求出扇形面積在正方形面積中佔的比例k呢?乙個辦法是在正方形中...