【百纳BetaGo】基于蒙特卡洛搜索树的二人明牌斗地主博弈(二)

来源:互联网 发布:seo和竞价排名 编辑:程序博客网 时间:2024/04/28 01:45

前文链接:点击打开链接

        前文已经提到MCTS算法取得了较为明显的成果,究其原因是算法会根据模拟出的获胜场次来选择当前动作中后续胜率最高的动作。然而mcts算法的局限性也正是这个原因引起的,因为mcts在模拟胜场的过程中并没有关于牌力的概念,就会导致只要符合出牌规则的出牌方式它都会选择去尝试,这样就会出现一些小牌能管却不管,起手出炸弹或者管牌的时候拆炸弹等等不合理的行为。也正是由于这个原因,纯粹基于mcts思想的算法虽然能够在最开始就达到较强的AI水平,但是后续的提升空间却有限(mcts算法的提升方法很粗暴:直接增加其模拟次数就可以达到优化的效果)。

如果将斗地主AI的最终目标比喻为一场格斗比赛,那么纯基于mcts的算法就像一个力大膀粗却没有脑子的壮汉,那么,如何在mcts的基础上尽可能的保存mcts算法优越性的同时改善其局限性呢?我们先必须搞清楚局限性出现的原因(我们再以壮汉举例):

一是由于内存限制,我们不可能复刻AlphaGo的做法对每一步都进行千万级模拟,然而值得高兴的是由于斗地主游戏和扑克游戏的方式规则差异性,我们可以在保证进行足够模拟的基础上尽可能的降低对机器的压力,方法很简单:原始的mcts算法是对每一步模拟规定具体的模拟次数,而我们发现在地主第一手出牌的时候由于选择的多样性,(在假定总模拟次数为1000的基础上)基本上很多分支的模拟次数都不会超过10(结果并不具备模拟代表性),这样就会出现模拟结果胜率相同的分支,而mcts则会在这些分支中随机选择一种,而如果不改变策略直接无脑增加总模拟次数,付出的代价提高了,但分到每个分支上的模拟次数却并不会有明显的提高,况且在后续的管牌情况中并不需要那么多的模拟次数,那么如何满足双方需求呢?我们的解决办法是将总模拟次数限制改为分支模拟次数限制,即设定出每个分支的模拟次数,这样既满足了出牌情况较多时的模拟要求又在分支较少时节省了内存。

二是由于算法自身限制,由于mcts并没有对牌力的认知而,只是纯粹的根据可出牌型进行尝试(包括一些很蠢的分支比如起手炸弹等等),如果将斗地主AI的最终目标比喻为一场格斗比赛,那么纯基于mcts的算法就像一个力大膀粗却没有脑子的壮汉,虽然赋予他足够的智商是很困难的的,但是我们至少可以做到能够让他具备一些基本的分辨能力,那么如何让mcts能在进行模拟之前就丢弃这些分支呢?显然mcts本身对此事无能为力的,我们的处理方法有两种:一是引入规则分类,即自己制定出一套规则价值体系,将手牌拆分组合,取前n种组合中所有出现过的牌型作为mcts的搜索分支而不再是所有可出牌型而是经过价值体系筛选后的牌组,然后将其作为模拟分支。二是直接通过经验对明显很差的分支直接进行限制甚至对某些残局情况下抛弃mcts进行强制干预。这两种方法的优缺点都显而易见,前者有着对效率的巨大提升且很大程度上保证了较差分支的存在过于依赖价值体系,而后者则对人为经验的要求很高,如果进行干预函数的设计者对斗地主游戏的认知不够,那么最终实现出来的效果可能微乎其微。经过测试我们发现前一种方法比后一种方法的实际效果要好。

经过剪枝改进二人明牌的AI水平已经达到90%,这些在明牌上的经验对于开发后续的二人斗地主暗牌有着很积极的意义。

作者:刘聪@百纳(武汉)信息技术有限公司

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新qq号忘记了怎么办 手机qq登不上去怎么办 qq的账号忘了怎么办 微信红包密码输错锁了怎么办 陌陌钱包异常钱怎么办 对公账户转错了怎么办 微信零钱转账限额怎么办 微信红包充错话费怎么办 qq支付20万限额怎么办 qq红包20万限额怎么办 微信充qb冲错了怎么办 液相色谱柱干了怎么办 微信钱包充流量没到账怎么办 qq买流量不到账怎么办 冲q币电话冲错号了怎么办 下载cf什么文件损坏怎么办 cf老是36_2怎么办啊 永辉超市积分卡怎么办 超市积分卡丢了怎么办 医保卡磁条坏了怎么办 社保卡磁条坏了怎么办 鞋子长了怎么办m.s.cn 厚底皮拖鞋穿松了怎么办 白色帆布鞋洗后发黄怎么办 运动鞋子买大了怎么办 格力空调出现fo怎么办 绝味鸭脖代金券的附券撕了怎么办 耐克鞋子开胶了怎么办 苹果6s自动重启怎么办 钱不够想买手机怎么办 安卓机屏幕密码忘了怎么办 屏幕解锁密码忘了怎么办 华为手机屏幕解锁密码忘了怎么办 oppo锁屏密码忘了怎么办 云助理密码忘了怎么办 购买方发票丢了怎么办 普票发票联丢失怎么办 唯品金融没还款怎么办 金点原子锁打不开了怎么办 87彩店注册不了怎么办 微店如果不退款怎么办