本文已参与「新人创作礼」活动.一起开启掘金创作之路。
本文针对一种黑白棋策略游戏,采用基于图的知识表示方法对问题进行分析,并建立黑白棋游戏博弈模型。利用蒙特卡罗搜索树算法,将最佳的放置策略分为路径选择、节点扩充、模拟实验和节点更新四步,在路径选择时利用上限置信区间(UCT)算法计算当前局面所有可放置的节点的UCT 值,再进行扩展、模拟,直到达到游戏限制范围,对不同放置位置的值进行处理获得局面评估值,选择UCT 值最大的方向作为下一次的移动方向,以此得到最佳落子点,进而得到最优选择策略,并设计了程序实现人机对弈,AI胜率较人更高。
1.1 蒙特卡洛树搜索原理
蒙特卡罗方法是通过多次的模拟运行来重复计算那些建立于同一个概率分布上的结果来最终累计出一个近似却又有效的结果。通常蒙特卡罗方法用于求解优化问题、数值计算问题以及从一个概率分布之中产生抽样的问题。蒙特卡罗方法通过构造一系列服从某一个规则的随机数来对各种问题进行求解。蒙特卡罗方法是一种有效地求解出问题的近似解的算法,对于那些我们无法获得确定的求解方法的问题,或者求解方法过于复杂导致获得的解的准确度与算法最终消耗的计算资源不成比例的问题。
蒙特卡罗树搜索算法是一种机器学习领域中的博弈树搜索算法,该算法将博弈树搜索算法以及蒙特卡罗模拟方法相结合,其最成功的应用在于求解计算机围棋问题,极大地提高了计算机围棋引擎的博弈水平。蒙特卡罗树搜索算法是在树搜索的其中某个节点上,从当前位置逐步向下延伸搜索,遇到未完全展开的节点时,则进行单次模拟,即将该节点作为单次模拟的根节点,继续向下延伸搜索,直到因时间或其他限制因素而停止,并将搜索结果反向传播回当前根节点,更新其评估值及访问次数,从而获得该节点的优劣信息做出决策。
蒙特卡罗树搜索算法的一个重要的特点就是选择性地扩展博弈树并逐步适应并改善模拟的策略,随着模拟次数的增加,博弈树的尺寸逐渐增大,同时节点的蒙特卡罗评估值也变得更加精确,同时也为我们提供了大量的有用信息,这些信息可以用来作为调整行为选择的策略,所选择的行为影响对应的节点使之具有一个更高的评估值。
蒙特卡洛树搜索有两种策略学习机制,(1)搜索树策略:从已有的搜索树中选择或创建一个叶子结点(即蒙特卡洛中选择和拓展两个步骤);(2)模拟策略:从非叶子结点出发模拟游戏,得到游戏仿真结果。搜索流程如上图1.1所示。
1.2 信心上限应用树(UCT)方法
UCT算法(Upper Confidence Bound Apply to Tree),即上限置信区间算法,是一种博弈树搜索算法,该算法将蒙特卡洛树搜索(Monte—Carlo Tree Search,MCTS)方法与UCB公式结合,在超大规模博弈树的搜索过程中相对于传统的搜索算法有着时间和空间方面的优势。
在结合UCT策略的蒙特卡罗树搜索算法中,博弈树的每个节点不但要保存蒙特卡罗模拟获得的评估值作为经验值之用,同时还应该保存每个节点的访问次数用于计算UCB1中的探索部分,结合UCT策略的蒙特卡罗树搜索算法最早被应用计算机围棋之中。假设Z(s,a)为黑棋在博弈状态s下的可选择决策a的UCB1值,而这个值可以根据下列的公式计算获得:
其中C是一个调节常数,N(s,a)是博弈状态s下可选择策略α被遍历选择的次数,N(s)表示在整个遍历中博弈状态s被遍历的次数,而W(s, a)则表示选择a决策时获得的收益的总和,而B(s,a)则表示对未知的探索值。因此我们可以看出,当一个可选择决策的访问次数过少的时候,算法会相应地增加该可选择决策被选中的权重。当这种遍历模拟达到一个限定的次数或是计算时间到达一个指定的阈值的时候,计算结束算法返回根节点进行决策选择,在这一个步骤上,结合UCT策略的蒙特卡罗树搜索算法并非是选择根节点具有最高评估值的行为进行决策,而是选择具有最高访问次数行为作为最终的决策。