前言:
本文将谈谈如何评估测试炸金花的AI, 其实这个也代表一类的问题, 德州扑克也是类似的解法. 本文将谈谈两种思路, 一种是基于基准AI对抗评估, 另一种是基于测试集(人工选定牌谱). 由于炸金花/德州是一类信息不完全的游戏, 而且运气在局数少的情况下, 占据很大比例, 波动有些大. 因此基于测试集来评估, 可能更好, 更准确.
总而言之, 好的AI, 在优势下赢得越多, 在劣势下输得越少, ^_^.
相关文章:
德州扑克AI--Programming Poker AI(译).
系列文章说来惭愧, 之前一直叫嚷着写德州AI, 不过可惜懒癌晚期, 一直没去实践, T_T. 相比而言,***简单很多, 也更偏重于运气和所谓的心理对抗.
系列文章:
1. 炸金花游戏的模型设计和牌力评估
2. 炸金花游戏的胜率预估
3. 基于EV(期望收益)的简单AI模型
4. 炸金花AI基准测试评估
5. 动态收敛预期胜率的一种思路
基准AI的选定:
基准AI来评估新AI的好坏, 这个有点绕, 感觉像先有鸡, 还是先有蛋的问题. 但应该属于迭代发展的例子, 就好像最老一代的C编译器由汇编编写, 然后用C语言编写新一代的C编译器, 继而在用c语言开发再新一代的C编译器...., 最终C语法支持越来越强, 性能越来越强大.
对于这个基准AI, 我们可以如下设定基础规则:
1. 随机选择see操作
看牌see的最佳时期, 这个难以定论, 这边引入随即决策看牌, 几回合后强制看牌.
2. 提升对手手牌范围, 明注每操作一轮提升, 明注主动raise提升, PK胜利提升.
玩家默认牌力为高high/弱对子
玩家明注check一轮, 牌力 += 1
玩家明注raise, 牌力 += 2
玩家主动pk胜利, 牌力 += 1
玩家被动pk胜率, 牌力 += 2
3. 根据手牌胜率, 决定check/raise/pk/pack
p >= 0.65, 选择check/raise
p >= 0.5 && p < 0.65, 60%选择pk, 40%选择check
p >= 0.4 && p < 0.5, 70%选择pk, 30%选择pack
p >= 0.2 && p < 0.4, 30%选择pk, 70%选择pack
p <= 0.2, 选择pack
任何有一定均衡性的游戏, 都有风格相克的问题, 所以基准AI对抗也有过拟合的问题.
基于测试集:
这需要人工选一些有代表意义的牌谱, 牌谱覆盖正反case, 同时能满足一定的概率分布, 这个测试牌谱需要领域专家来完成. 除了牌谱选定外, 对每个牌谱, 需要人为的设定阈值条件和策略规则.这边的牌谱以及规则设定都是基于理性的.
1. 正向case
AI手牌牌力强, 敌方手牌牌力弱/稍弱, 这些情况下, AI能取得到的最大价值.
2. 反向case
AI手牌牌力弱, 敌方手牌牌力强, 这些情况下, AI能尽量的少输.
这边举几个列子吧, 确实这个挺难以展开的.
AI手牌为同花, 测试牌谱为弱对子, AI需要谨慎的处理raise, 因为一旦raise, 会导致对方提前pk或者pack, 这样能取到的价值较少了.
AI手牌为同花, 测试牌谱为顺子, AI在谨慎处理后, 发现对方牌力不小, 可以raise, 提高可获取的价值.
这边做个小广告吧, poker logic, 这边的测试来评估玩家水平, 进而衍生为评估AI, 这种方式我觉得是评估AI强弱的正道.
总结:
本文谈到了两种方式去评估AI, 一种是基于基准AI, 一种是就要牌谱测试集, 我个人更倾向于第二种. 由领域专家选定的牌谱在指导和评估AI的能力, 更具说服力.
对待博彩游戏, 希望大家娱乐心态行娱乐之事, 切勿赌博, ^_^.