我们现在基本有了实现德州扑克ai的基本知识,德州扑克四条街我们终于通过mccfr搞定了第一条街,接下来列出两篇论文
Depth-Limited Solving for Imperfect-Information Games
Superhuman AI for multiplayer poker
其实这两篇论文使用的技术接近一样,第一篇实现了一对一Modicum 后来利用这个技术实现的pluribus。有小伙伴就要问了,Libratus也是一对一他们有什么区别呢。Modicum使用新的深度有限搜索技术,libratus需要一个超算才能运行,而modicum在普通电脑上就能运行,他是如何做到的呢核心时它使用了一种深度有限搜索的算法。
之前我们提过Nested Solving算法,他的核心思想是先用mccfr训练一个蓝图策略,我们当时也训练了一个蓝图策略,在sohoo高级场打游戏币盈利50bb每百手,但是上了GG试了下被暴打,输20bb每百手。核心问题是如果只使用蓝图,使用了聚类,严格意义上AI不知道具体当前桌面上有什么牌,只知道大概模糊的300类,使用mccfr 如果双方多次加注,就会出现训练不充足乱打,而且现在很多剥削机器人,前1000局收集信息,后1000局就开启剥削策略。
那如何提升呢,肯定需要实时搜索解决问题,核心问题时传统solver 1v1的翻牌圈就需要10~20分钟,这时候就需要深度有限搜索上场了。深度有限搜索在很多强化学习中使用很多,距离当前决策点,但是德州扑克是非完美信息博弈,叶子节点的值是无法确定的,例如玩家在叶子节点诈唬过多,对方就可以过度跟注获取收益,如果玩家在叶子节点咋呼不足,对方就可以过度弃牌剥削,通过一个固定的值无法约束玩家在深度之内收敛到纳什均衡。
论文的解决方式如下,让对手可以在四个动作中选择后续需要使用的偏移策略,而玩家还是使用默认蓝图策略,四个动作可以通过修改之前训练的蓝图策略进行偏移,实现的时候想了很久,最后才顿悟如何把选择策略加入到cfr的训练中,原理是给对手玩家修改动作,不是从fold call raise allin中选,而是选择后续游戏的策略,四套策略分别为原始蓝图,将原始蓝图弃牌的概率乘以10,将原始蓝图跟注的概率乘以10 ,将原始蓝图加注的概率乘以10。叶子节点值可以通过rollout算法获取,也可以通过伸进网络训练这四个值。类似deepstack的实现办法,但是输入和deepstack不同,deepstack需要输入双方的范围,底池返回当前每套牌的cfv值,而论文的深度有限,只需要输入一些当前state的基本状态,返回四个cfv值。
作者论述这种方式虽然不确定能收敛到纳什均衡,但是可以产生很靠谱的策略用来战胜人类我们也验证了这个算法的可行性,在1对1的状况下翻牌圈深度有限搜索求出的策略对比solver的策略十分接近,也验证了算法的可行性,并且将速度从10分钟优化到了30s。
Pluribus这篇论文实现基本沿用Modicum 算法,这里就不详细介绍了。
Pluribus cfr博弈论实战德州 (6)实时搜索
最新推荐文章于 2025-04-30 22:17:06 发布