托马斯·桑德霍尔姆:扑克与博弈论
Tuomas Sandholm: Poker and Game Theory
博弈论与 AI 研究者谈如何用算法求解不完全信息博弈,并让机器在扑克中取胜。
2017 年 1 月,匹兹堡 Rivers 赌场。四个世界顶级的单挑无限注德州扑克选手,连续二十天,每天从早打到晚,对手不是人。
他们在一台屏幕前落座。对面是一个叫 Libratus 的人工智能系统。最终统计出来的结果是,如果筹码是真钱,这个系统从四位人类手里赢走了接近两百万美元。而更让组织者托马斯·桑德霍尔姆(Tuomas Sandholm)印象深刻的,是赛前国际博彩网站开出的赔率:人类赢,AI 是四赔一甚至五赔一的弱方。
连赢三天之后,博彩网站依然坚持五五开。
为什么博彩市场会持续看低一个已经连赢三天的系统
桑德霍尔姆在采访里聊到这件事时,语气挺平静:「人们对 AI 的认知有一种系统性的滞后,直到亲眼看见它赢过人类,否则很难相信它能赢。」
这句话背后的道理比扑克本身有意思得多。博彩市场是理性的,它只是用「我见过的顶级人类有多强」来推算 AI 的胜率。人类顶尖选手在牌桌上看穿对手、读表情、读下注节奏,那种能力看上去牢不可破,所以市场把这种印象直接平移成了赔率。
但牌桌的真实结构,和大众想象的不一样。
桑德霍尔姆把这个问题拆成了两半:一半是「人类为什么更信任人类」,另一半是「那些被浪漫化的读牌技巧,在最高水平的对局里到底占多大权重」。他的答案是,在周五晚上的朋友局里,表情和肢体语言几乎是全部;但在顶级职业选手之间,藏读的能力强到互相探查已经不划算。真正的差距在于下注策略的丰富程度,谁更会读人在这个层级上已经让位。
「在最顶级的扑克里,读人这件事,占的比重会小得多,小得多。」(桑德霍尔姆)
十万手牌以上才勉强能看出谁更强
理解这场比赛为什么需要打二十天,得先理解无限注德州扑克的方差有多大。
一副牌,每人先发两张暗牌,只有自己看得见。然后分四轮下注,中间桌面依次翻开五张公共牌。每一轮下注的额度不设上限,两个人随时可以把全部筹码推上去。桑德霍尔姆说,如果双方都 All-in,那就是一个「巨大的方差堆」。一场比赛打几千手,运气成分依然能淹没技术差距。所以要打十二万手,才能拿到统计学意义上的结论。
这个细节解释了一件事:桑德霍尔姆的团队为什么邀请的是四位世界前十,而不是随便找一位职业选手打满十二万手。四位选手轮换上场,每人对战的牌局数控制在可以承受的范围内,出场费二十万美元,但实际支付按他们对阵 Libratus 的胜负表现来分配。
桑德霍尔姆团队真正要的是统计显著性,观赏性是顺带产生的副产品。
十的一百六十一次方,怎么下手
单挑无限注德州扑克的策略空间,量级大约是 10 的 161 次方。这个数字大到任何直接求解的方法都无意义,哪怕用上当时最快的均衡求解算法。
所以必须先做抽象(abstraction)。
桑德霍尔姆特别强调,博弈里的抽象比单智能体场景里的抽象要棘手得多,因为存在「抽象病理」。一个更精细的抽象,解出来后应用到真实游戏里,效果可能反而比一个更粗糙的抽象更差。这是一种在博弈问题里真实存在的反直觉现象,并不只是理论上的边角情况。
抽象分两类。一类是信息抽象,把具体的牌型归类;另一类是动作抽象,把连续的下注金额离散成有限几个尺度。
信息抽象这一块,Libratus 是纯自动的。桑德霍尔姆团队用的是一种叫「潜在感知抽象」(potential aware abstraction)的算法。它不仅看一手牌当下的牌力强弱,还要评估这手牌在未来几轮演化成好牌或坏牌的可能性。底层是自下而上的整数规划和聚类。
动作抽象则更多借鉴人类历史牌局的下注尺度,但在开局的前几轮,他们用了一种可证明收敛的自动动作抽象技术,能找出最优的下注尺度组合。问题是这个技术不太能扩展,所以他们只在最初几个下注动作上用它。
抽象完之后,才轮到均衡求解器进场。
为什么 Libratus 一行深度学习都没用
这是整个对话里最值得停下来想一想的部分。
AlphaGo 用了深度神经网络,AlphaZero 用了深度神经网络,很多人的印象里「顶尖游戏 AI 等于深度学习」。但 Libratus 完全没用学习,纯粹靠博弈论和抽象加搜索,照样赢了顶级人类。
原因是,在非完美信息博弈里,学习一个状态的评估函数这件事,根本上是定义不清的。
「如果我手里是一手烂牌,但对手认为我手里是好牌,那我其实处境不错。反过来,如果我手里是好牌,但对手以为我拿的是烂牌,我也占便宜。所以一个状态的价值,不只是牌面的函数。」(桑德霍尔姆)
换句话说,状态的价值不只是「现在桌上是什么」,还取决于双方对彼此的信念分布。在围棋里,一个局面的评估就是一个局面的评估,局面本身包含了所有信息。在扑克里并非如此,同一个牌面,配上不同的信念分布,就是完全不同的局面。
这就是为什么在非完美信息博弈里做搜索特别难:搜索树展开到叶子节点时,叶子节点的价值无法用单个数字表示,它是一个关于信念的函数。
Libratus 绕开这个问题的方式很简单:它只在本手牌打到终局时才做计算,那时收益是确定的,不需要人为构造信念函数。这种策略在全树搜索里行不通,但在每手牌内部是可行的。
后来桑德霍尔姆团队发表了一篇关于「深度受限搜索」的论文,让系统能够在游戏开局就启动有深度的前瞻搜索。他们的做法是允许对手在搜索树的叶子处选择不同的后续策略,从而避免搜索过程过于乐观。这是目前处理非完美信息博弈搜索的一种可靠方法。
至于一度很受关注的 DeepStack,用的是另一条路:随机生成大量牌局状态,从这些状态向前推演到终局,把终局价值当作新的学习目标,用深度学习去拟合。它学习的「状态」不只是物理状态,还包含信念分布。这条路和 Libratus 的思路完全不同。
没有数据,没有对手模型,只有理性
德州扑克玩家入座前会研究对手的历史录像,AI 系统通常也会做对手建模。但 Libratus 一个都不做。
桑德霍尔姆说这是博弈论最漂亮的地方。纳什均衡的定义方式决定了,它不仅给出每个玩家的策略,也同时给出每个信息集上的信念分布。你不需要知道对手过去怎么打过,你只需要假设他是理性的,然后从游戏规则本身推导出他可能的出牌分布。
「这是一种完全不需要数据、也不需要对手模型的方法。它来自游戏本身的设计,跟玩家的设计无关。」(桑德霍尔姆)
他用石头剪刀布举了个例子。双方策略都是各三分之一,这个策略一旦确定,对方在某个信息集上的信念自然就是三分之一、三分之一、三分之一。直接推出来的。
团队确实也做过对手建模的工作,把对手建模和博弈论结合起来,可以更狠地剥削弱玩家。但在对阵那四位顶级选手时,桑德霍尔姆把这个模块关掉了。
原因很有意思:一旦你开始剥削对手,你同时也在暴露自己,把自己置于被反剥削的境地。而那四位是人类世界里最擅长反剥削的人。他们身上可以剥削的漏洞本来就不多,不值得冒这个险。
为什么两个玩家和三个玩家之间隔着一条鸿沟
这是博弈论里一个很根本的分水岭,桑德霍尔姆花了挺多时间讲。
两人零和博弈在概念上和计算上都相对容易。原因在于:任何均衡策略对其他均衡策略都是最佳回应。即使你和我选的是不同的均衡点,博弈的值依然是对的。纳什均衡的集合是「互相兼容」的。
只要加入第三个玩家,或者去掉零和假设,这个性质立刻崩掉。
纳什均衡的存在性本身没有问题。约翰·纳什(John Nash)1950 年已经证明了,所有有限博弈都有纳什均衡。麻烦的是均衡可能有很多个,然后你就得面对「选哪一个」的问题。如果你从均衡 A 里取策略,我从均衡 B 里取策略,在非零和博弈里,我们可能双双受损,明明存在一个让双方都更好的选项。
更麻烦的是勾结。三个玩家的局里,你我完全可以联手对付第三个,收益会显著提升。
桑德霍尔姆的学生诺姆·布朗(Noam Brown)在 Reddit 的 AMA 里提到过:要让扑克变得无法被现有方法求解,方法不多,但玩家之间的合作或勾结会让它变得极其困难。
这种合作博弈可以用桥牌来理解。你和我是搭档,收益是共享的,但我们不能说话,不能互相透露手里的牌。我们只能事先约定策略,也允许一些双方都能理解的信号。桥牌把「合作」写进了规则里,所以它是可分析的。
但拍卖、谈判、外交关系,乃至扑克,这种合作并不写在规则里,是玩家在过程中自发形成的。这种情况下博弈的维度会暴涨,一些标准的博弈表示方法甚至无法表达这种结构。桑德霍尔姆和另一位学生加布里埃拉·法里纳(Gabriela Farina)在当年的 NeurIPS 上专门发表了一篇论文,提出了一种新的博弈表示方法,来处理这种联盟博弈。
一个叫「肾交换」的系统,让几百个活人没死
很多人对博弈论的印象是「理论上很漂亮,现实里没几个应用」。桑德霍尔姆对这个印象有意见。
他参与运营的全国性肾交换系统,已经让几百个原本等不到肾源的患者活了下来。这是真人真事。而且它创造了一系列实际岗位:肾交换中心需要运营人员,器官移植中心需要对接人员,多出来的外科医生、护士、麻醉师、医院床位,全都是就业。
另一个例子是组合采购拍卖。2001 到 2010 年间,桑德霍尔姆团队完成了 800 场大规模组合采购拍卖,涉及六千亿美元的采购支出,把供应链效率提升了 12.6%。折合下来,是超过六十亿美元的效率改善。
他强调,这些钱并没有把价值从一个口袋挪到另一个口袋。物流里少跑空车,意味着更少的浪费、更小的碳足迹。这六十亿美元是真真切切从系统里省出来的。
「在机器学习领域,这项技术已经相对成熟,被广泛应用,并且在现实世界中被验证过。但在博弈求解领域,应用几乎还没有。」(桑德霍尔姆)
这句话值得反复读几遍。Libratus 在 2017 年打败了顶级人类,但博弈求解技术在现实世界的应用,几乎还是空白。这也是桑德霍尔姆现在把大量精力放在创业公司上的原因。他创办了两家公司,一家叫 Strategic Machine,面向商业、体育、金融、电力市场这些领域;另一家叫 Strategic Robot,面向军事、安全、网络安全和情报领域。
自动机制设计,在不可能的地图上划出可行的小岛
机制设计这个词听起来抽象,说白了就是「设计游戏规则,让博弈的结局朝你想要的方向走」。
桑德霍尔姆团队做的是自动机制设计,用算法自动搜索最优规则,人的手工微调退居次要位置。他对这项技术有很坚定的信念,但也保持清醒。
机制设计领域有一堆「不可能定理」。1983 年,罗杰·迈尔森(Roger Myerson)和马克·萨特思韦特(Mark Satterthwaite)证明了一个著名结果:在非完美信息下,要同时实现交易效率和预算平衡,是做不到的。
但桑德霍尔姆指出,这类不可能定理有一个前提:它说的是「在整个类 C 上,不存在一个机制能实现目标 X」。而现实中的问题从来都是具体的实例,不会以一整个类的形式出现。
「这些定理没有在给人类智慧下判决。它们只是说,如果你想在整个类 C 上实现目标 X,那是做不到的。但在具体的实例里,你可以划出很多可行的小岛。」(桑德霍尔姆)
他们确实做到了。在迈尔森萨特思韦特定理划定的不可能区域内,很多具体设置下,只要换一种游戏设计方式,高效交易依然可以实现。这并不矛盾,定理依然成立,只是它的边界之外还有大片可耕作的土壤。
一个反面例子是 FCC 频谱拍卖。这是机制设计进入现实世界的著名案例,背后有最顶尖的经济学家参与。但最终设计出来的实际规则里,「诚实出价」算不上最优策略。哪怕拍卖的是几百亿美元级别的频谱,参与者依然有动机歪曲报价。而且桑德霍尔姆补了一句:这些拍卖里,目前没有人知道哪怕一个最优的出价策略。
机制设计理论应用到现实的时候,人和制度之间的缝隙比想象中大得多。
为什么他不担心 AI 的价值对齐问题
桑德霍尔姆对 AI 存在性风险的态度,和麦克斯·泰格马克(Max Tegmark)、斯图尔特·罗素(Stuart Russell)这些人很不一样。他承认价值对齐在理论上是个真实的担忧,但坦率说自己做了几十年实际系统,没在现实里见过它发生。
他提到一个 1980 年代末的例子。当时团队在构建交通优化系统,有人跟他说,「资产利用率高是个好东西,为什么不做成目标函数?」他当场演示了结果:如果真把它当成目标,AI 会让卡车装满货在城里绕圈开,利用率百分之百,但什么东西都送不出去。
所以「目标设计错了、AI 会把它优化到极致、造成巨大伤害」这件事,他三十多年前就懂了。但他从来没在现实里见过这种情形真正成为灾难。
「你要是给了 AI 一个错误的目标,它确实会把这个错误目标优化到极致,造成的破坏会比一个半罐子人类凭借直觉瞎搞更大。但我就是没见过它在现实里真发生。」(桑德霍尔姆)
他认为这和「理论与现实的鸿沟」有关。理论上能想象出来的最坏情况,和现实里通常发生的事情,中间隔着巨大的距离。
那真正让他担心的是什么?
他说得很直接:气候变化和核战争,这是他真正担心的两件事。他为气候问题两次启动过研究,想看看自己的技术能不能找到切入点。最容易想到的是碳排放交易市场设计,但他发现真正的瓶颈在政治意愿,再精巧的市场设计也推不动。芝加哥气候交易所后来也关了,这条路走不通。
核战争呢?他说自己比以前更担心。
「冷战时期的相互保证毁灭(MAD),用很小的矩阵就可以做博弈分析,结论是没人愿意先动手。但那是高度粗粒化的建模。当年只有两三个超级大国,现在核门槛更低,小国和非国家行为者也可能拿到核武。我认为现在的风险比历史上任何时候都高。」(桑德霍尔姆)
换句话说,博弈论能告诉你冷战为什么稳定,但博弈论所依赖的那个结构已经变了。
商业策略和军事策略,未来可能由算法来出方案
桑德霍尔姆认为博弈求解技术在现实世界最大的应用缺口,是商业策略和军事策略这两块。他承认自己是乐观派,但也说得很实在,这更像一种信念,还没有被事实验证。
一个有意思的差异是关于可解释性。深度学习不可解释,这是大家都知道的问题。博弈论方法呢?
桑德霍尔姆的回答是「一半一半」。纳什均衡有可证明的性质,你不会像训练神经网络那样「交叉手指祈祷它能工作」,你知道解的质量受什么约束。但可解释不等于人类能看懂。算法给出的策略可能反直觉、复杂、难以用人类语言复述。这一点和深度学习的处境类似。
「深度学习和计算博弈论在可解释性上是同一条船上的。但博弈论技术至少还有一个东西:它给出的解有质量保证。」(桑德霍尔姆)
他还聊到一个很具体的应用场景:自动驾驶汽车的车队之间如何合流。不同公司运营的车队,遵守公路规则,但规则只界定合法性,巨大的策略空间留给了具体操作。人类开车合流时会减速、打灯、看对方一眼,这些摩擦全都是时间成本。如果用自动化的方式,让各家车队提前把「合流时谁让谁」这些约定谈好,把所有可能的合流场景做成一份组合式谈判协议,整个交通系统的效率都会提升。
这套逻辑其实和扑克抽象一模一样:把一个巨大的策略空间,用自动化的方式压缩成可谈判、可执行、可证明的形式。
给读者的行动建议
- 别把深度学习当成 AI 能力的唯一路径。Libratus 一行神经网络都没用,靠抽象加搜索加博弈论就打败了顶级人类。如果你的问题里存在多方博弈,先想想该用哪一类工具,博弈论在这个场景里往往比深度学习更对口。
- 如果你的场景里有多个决策者,先问一个问题:这是两人零和,还是更一般的情形?两人零和博弈的均衡求解有原理级优势,任意均衡都互相兼容。一旦加入第三个人或去掉零和假设,问题复杂度会跳跃式上升,别低估这条鸿沟。
- 抽象任何复杂博弈时,记住「抽象病理」的存在:更精细的抽象不等于更好的实际表现。抽象之后要在真实游戏里验证,只在小规模实验里比指标很容易被误导。
- 把「只有在真实规模下才能看出哪个算法好」当作一条工程原则。桑德霍尔姆团队证明了,很多理论上收敛更快的算法,实际表现反而不如 CFR;很多在小规模场景下看起来漂亮的技术,放大了会完全走样。
- 如果你在运营或设计某个制度、市场或协议,问一句:在这套规则下,诚实参与是不是最优策略?如果答案是否定的,别急着上线。FCC 频谱拍卖这种几百亿美元级别的项目,设计的实际规则里诚实出价依然算不上最优解。
- 如果你对人的评判抱有很强信心,尤其是「凭直觉、凭读表情、凭历史印象」,可以留意一下自己是不是正在忽略某个已经连赢三天的事实。这个偏见在牌桌上有,在商业竞争和职业选择里也有。
本集资源与出处
- 视频在 YouTube 收看
- 音频官方 MP3 直链来自 lexfridman.com 官方播客 RSS
- 官网Lex Fridman 官网本集页面
- 文稿HappyScribe 版文稿