最近一直在看gtowizard来学习德州扑克,作为数学系毕业的人,突然本能开始好奇solver背后的数学原理。对solver的理解,一直停留在通过算法得到不同场景下的“Nash Equilibrium strategy”,作为大三听过game theory 课程的人来说,我明白纳什均衡策略指的是在某个特定场景下,没有人能通过单独改变自己的策略来获得更高的收益的一组策略。然而这个均衡策略是怎么计算出来的,我对此仍然一无所知。
于是在网上尝试搜索了一下,看到了一位大佬在知乎上分享的他自己写solver的经历:
https://zhuanlan.zhihu.com/p/352336898
这篇文章里提到最常用的,也是作者自己的solver运用的一个算法:cfr ( counterfactual regret minimization)以及其变种。这个做法类似于假设对方策略是固定的,我方要怎么调整得到更优的解。然后互相博弈,最后达到一个稳定的纳什均衡状态。由于策略树过于庞大,因此还有一些概念类似于压缩(action abstraction)的方法,来优化整体的运算速度。(也有点类似于现在学习扑克的将flop,turn的牌分类的方法,来减少自己所需要记忆的策略数量)。
关于cfr算法的paper,可以看以下这篇文章:
https://www.ma.imperial.ac.uk/~dturaev/neller-lanctot.pdf (Surprisingly from Imperial College lol)
这只是一个大概的了解,希望之后可以在了解背后的数学之后对我自己理解德扑有所帮助。另外,我其实挺欣赏作者在这篇知乎文章最后的观点:
“我对之后线上德州扑克的环境是悲观的,本就所剩无几的线上德州社区环境必定终将消失,到时候,线上所有的“鱼”都会流失,只剩下孤独的bot互相竞技。不过换个视角,这又何尝不是一件好事呢?本来就在德州中寻找乐趣的人在线下欢乐的面基,而妄想在德州扑克中赚钱的人在线上用bot杀个你死我活,各取所需,挺好挺好。”
虽然有了计算机之后,很多有限策略完全信息博弈游戏都已经被攻克了(各种棋类,包括围棋),但是这世界上最有意思的,不仍然是人和人之间的博弈么?这又让我想起了年初看的IEM SC2 和国际象棋世界冠军赛,只要不认输,即使胜率只有0.37%,在1/4决赛就BO5以0:2 落后,即使路上各种艰难险阻,也依然无法抵挡李培楠和丁立人站上顶峰。冷漠的机器,在看到胜机之后就不会再给任何机会,但是人不一样,人类确实会犯错,人类会有情绪波动,这种波动恰恰是人类的比赛所独有的魅力。王天一,在网上一个月输的中象比赛比他一年输的都多(绝大部分都是软件),但这并不妨碍他是中国象棋历史上最强。除此以外,他自己也承认,他师从的是软件。我们应该正视solver对自己扑克技术的提升,而不是仅仅让solver成为我们拿来在网上战胜别人的工具。
如果要和象棋AI做类比,我觉得对于preflop的计划,就像是象棋里的开局,开局基本能达成一种共识,基本上不需要做太多调整。对于flop 到turn,这就是类似于棋类的中盘,也是着重考验计算能力的地方了。对于棋类,是策略深度的计算,也就是常说的“能看到几步”。然而对于德扑,这个考验的就是对于范围,以及下注尺度,下注频率的理解与计算了。
我想对于德州扑克,我的未来的计划一定是去参加线下的锦标赛,去用我自己的实力,在线下去和人面对面得竞争。有的时候,只有人和人的博弈才能体现出一些机器所无法显现的光辉与魅力吧。
在这里对自己,也对所有想在扑克上有所提升的人说一句:
加油!学习solver,让自己成为更好的自己吧。