之前本科的时候有学过这个算法,写了一个五子棋的小demo,不过现在忘记了很多。所以在捡起来看一看。记录一下我的学习。
简介
蒙特卡洛搜索树和蒙特卡洛算法还是有区别的,mcts是一类数搜索算法,可以解决探索空间巨大的问题,比如围棋算法,AlphaGo就是用的mcts。如果对于空间小,层数浅的问题,可以直接使用穷举来计算。但是对于空间非常大的问题,计算能力跟不上,就只能使用mcts了。
mcts包括四个步骤:Selection、Expansion、Simulation、Backpropagation。(配合下图食用更加)
Selection选择:从根结点(根结点已经确认)往下走,每次都选择最好的(score最高,score后面说,没有选择过的节点score最高)节点,直到到达一个“存在未拓展的”子节点A。
Expansion拓展:如果A不是终止节点(即游戏结束,或者后面已经没有可以拓展的了),则创建A的子节点B,如果B有多种选择, 则可以随机或者按照一定的机制来选择。
Simulation模拟:拓展好了B,对B进行模拟。随机选择B可行的下一步,一直随机直到结束。将结果计算作为B的value(value和score是不同的),这个模拟过程的中间节点是不做记录的。
Backpropagation回溯:用模拟的结果,更新当前行动序列。
重复循环这个过程。