最近入坑用AI打游戲泣棋,決定先去扒alphagao是怎么做的
圍棋AI早期利用圍棋知識隘道、棋譜進行特征匹配之后擁抱蒙特卡洛樹搜索赌渣,在Alphago中在蒙特卡羅樹搜索的框架下世落,使用了監(jiān)督學習和增強學習的方法淮腾。數(shù)據(jù)來自160,000盤6-9段玩家的圍棋對戰(zhàn),共29,400,000個棋局
下面是算法大致構(gòu)架
說明:
蒙特卡羅樹搜索
個人認為蒙特卡洛樹搜索是邏輯最為復雜的地方
首先熟悉一下蒙特卡羅方法
蒙特卡羅方法是一種統(tǒng)計模擬方法屉佳,是使用隨機數(shù)(或更常見的偽隨機數(shù))來解決很多計算問題的方法谷朝。當所求解問題是某種隨機事件出現(xiàn)的概率,或者是某個隨機變量的期望值時武花,通過“實驗”的方法圆凰,以這種事件出現(xiàn)的頻率估計這一隨機事件的概率,或者得到這個隨機變量的某些數(shù)字特征体箕,并將其作為問題的解专钉。它是一種有偏估計。
舉個栗子:
希望得到π值的估計累铅,那么就在一個圓的外切正方形內(nèi)隨機放置100000個點跃须,通過坐落在園內(nèi)的點與全部點的比來得到π的估計。
再如計算積分娃兽,通過模擬點落在積分曲線內(nèi)部的概率得到這部分面積的估計菇民。
蒙特卡羅樹搜索和蒙特卡羅方法還是不一樣的,前者沒有是無偏的。蒙特卡羅方法做的是概率估計而蒙特卡羅樹搜索卻可以做到局面估計玉雾。
蒙特卡洛樹搜索主要涉及到選擇、擴展轻要、模擬以及反向更新四個步驟
選擇過程會兼顧勝率和多樣性
具體到Alphago的算法:
選擇:
有兼顧到reward和多樣性
擴展:
如果到達的葉子節(jié)點訪問次數(shù)不足閾值复旬,是不做擴展的,僅僅更新價值估計
如果超過了閾值冲泥,則做拓展驹碍,拓展節(jié)點訪問次數(shù)置為0,并用SL Policy Network求取落字先驗
模擬:
使用value net進行估計
使用rollout net快速走子進行估計
綜合二者得到擴展的葉節(jié)點的價值
反向更新:
各節(jié)點的訪問次數(shù)更新
各節(jié)點的價值更新(取均值)
落子選擇:
選擇訪問次數(shù)最多的