Pachi中的蒙特卡洛树搜索,AMAF,Rave
蒙特卡洛樹(shù)搜索:
?MCTS使用蒙特卡洛模擬來(lái)估計(jì)每個(gè)節(jié)點(diǎn)的價(jià)值. 其默認(rèn)策略為貪婪算法, 即每次選擇價(jià)值最高的節(jié)點(diǎn)進(jìn)行模擬, 在每次模擬得到結(jié)果后, 將結(jié)果反饋回每個(gè)上級(jí)節(jié)點(diǎn), 更新節(jié)點(diǎn)價(jià)值. 通常來(lái)講, 每個(gè)訪問(wèn)到的節(jié)點(diǎn)都會(huì)加入到樹(shù)中, 實(shí)際上為了節(jié)省內(nèi)存每次只加入一個(gè)子節(jié)點(diǎn), 可以通過(guò)對(duì)舊節(jié)點(diǎn)剪枝或多次模擬后再加入新節(jié)點(diǎn)來(lái)進(jìn)一步節(jié)省內(nèi)存.
?貪婪算法的缺點(diǎn)在于對(duì)于一個(gè)節(jié)點(diǎn), 如果產(chǎn)生了一次或幾次不利的結(jié)果后, 搜索樹(shù)就會(huì)避開(kāi)訪問(wèn)這個(gè)節(jié)點(diǎn), 這意味著搜索樹(shù)的廣度會(huì)降低, 可能會(huì)忽略更好的選擇. 這時(shí)應(yīng)該選擇UCB1算法(Upper Confidence Bound), 對(duì)應(yīng)節(jié)點(diǎn)產(chǎn)生的價(jià)值為:
?其中C為搜索規(guī)模常數(shù), 當(dāng)C取值越大, 樹(shù)越偏向廣度搜索, 越小就越偏向深度搜索.
?AMAF(all moves as first) 算法的核心思想是每一步落子有一個(gè)恒定的價(jià)值, 不管是什么時(shí)候落下的.
?當(dāng)給定狀態(tài)s, 模擬出期望結(jié)果z, 選取a作為后續(xù)落子, AMAF value計(jì)算為:
?當(dāng)?shù)趇次模擬時(shí), 動(dòng)作a被執(zhí)行, 得到狀態(tài)s時(shí)返回1, 否則則返回0
?RAVE(rapid action value estimation) 算法融合了蒙特卡洛樹(shù)搜索和AMAF算法, 它不計(jì)算蒙特卡洛價(jià)值, 而是計(jì)算AMAF價(jià)值. 其核心思想是歸納整個(gè)子樹(shù), 即動(dòng)作a的價(jià)值在狀態(tài)s下, 或者在子樹(shù)中其他狀態(tài)下都一樣, 即a的價(jià)值是在所有情況下估計(jì)得到而不是執(zhí)行動(dòng)作時(shí)候得到.
?如圖, 當(dāng)使用蒙特卡洛價(jià)值估計(jì)時(shí), 在s狀態(tài)下, 如果走a, 會(huì)導(dǎo)致兩次失敗, 價(jià)值為0/2, 如果走b, 會(huì)有兩次成功一次失敗, 價(jià)值為2/3, 則會(huì)選擇走b. 當(dāng)使用AMAF算法價(jià)值估計(jì)時(shí), 在s狀態(tài)下, 如果走a, 會(huì)有三次成功和兩次失敗包含動(dòng)作a, 價(jià)值為3/5, 如果走b, 會(huì)有兩次成功和三次失敗包含動(dòng)作b, 價(jià)值為2/5.
?RAVE和AMAF算法得到價(jià)值會(huì)有一定誤差但是運(yùn)行速度較快.
總結(jié)
以上是生活随笔為你收集整理的Pachi中的蒙特卡洛树搜索,AMAF,Rave的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 3D景深探究
- 下一篇: 将echarts图表数据导出成表格