前文链接:点击打开链接
前文已经提到MCTS算法取得了较为明显的成果,究其原因是算法会根据模拟出的获胜场次来选择当前动作中后续胜率最高的动作。然而mcts算法的局限性也正是这个原因引起的,因为mcts在模拟胜场的过程中并没有关于牌力的概念,就会导致只要符合出牌规则的出牌方式它都会选择去尝试,这样就会出现一些小牌能管却不管,起手出炸弹或者管牌的时候拆炸弹等等不合理的行为。也正是由于这个原因,纯粹基于mcts思想的算法虽然能够在最开始就达到较强的AI水平,但是后续的提升空间却有限(mcts算法的提升方法很粗暴:直接增加其模拟次数就可以达到优化的效果)。
如果将斗地主AI的最终目标比喻为一场格斗比赛,那么纯基于mcts的算法就像一个力大膀粗却没有脑子的壮汉,那么,如何在mcts的基础上尽可能的保存mcts算法优越性的同时改善其局限性呢?我们先必须搞清楚局限性出现的原因(我们再以壮汉举例):
一是由于内存限制,我们不可能复刻AlphaGo的做法对每一步都进行千万级模拟,然而值得高兴的是由于斗地主游戏和扑克游戏的方式规则差异性,我们可以在保证进行足