近年来,人工智能(AI)领域已经取得了相当大的进展。在许多情况下,衡量这种进步的标志是在基准游戏中对人类的表现。国际人道主义计划在跳棋(1),国际象棋(2)和围棋(3)。在这些完美的信息游戏中,双方都知道每一点的确切状态。相反,在不完美信息游戏中,关于游戏状态的一些信息对玩家是隐藏的 - 例如,对手可能藏有隐藏的卡。隐藏的信息在商业战略,谈判,战略定价,金融,网络安全和军事应用等现实世界的战略互动中无处不在,这使得研究不完美信息游戏的通用技术尤为重要。
由于多种原因,隐藏的信息使游戏变得复杂得多。对于不完美信息游戏而言,AI不是简单地寻找一个最佳的动作序列,而是必须确定如何适当地平衡动作,这样对手才不会过多地发现AI所拥有的私人信息。例如,虚张声势是任何竞争性扑克策略的必要特征,但是总是唬骗是一个糟糕的策略。换句话说,一个行动的价值取决于它被玩的概率。
另一个关键的挑战是游戏的不同部分不能孤立地考虑,对于一个给定的情况,最佳策略可能取决于在未发生情况下将会发挥的策略(4)。因此,一个竞争的AI总是必须考虑整个游戏的策略。
扑克作为开发可以解决隐藏信息的AI的挑战问题有着悠久的历史(5 - 11)。无限德州扑克是世界上最受欢迎的扑克形式。单挑(即双人)变体可以防止对手的勾结和国王制造者的情况,在这种情况下,糟糕的球员导致平庸的球员发光,从而可以确定明确的赢家。由于其庞大的规模和战略复杂性,单挑无限德州扑克(HUNL)已经成为数年来不完善的信息游戏解决方案的主要标杆和挑战问题。在这场比赛中之前AI没有击败顶级人类玩家。
在本文中,我们介绍Libratus,(12)一个AI,它采用了一种独特的方法来处理不完美信息游戏。在为期20天的,拥有20万美元奖池的12万手比赛中,击败了HUNL的顶尖人才。Libratus中的技术不使用专家领域知识或人类数据,也不是专门针对扑克的; 因此它们适用于大量不完美的信息游戏。
Libratus中的游戏解决方法
Libratus具有三个主要模块:
(1)第一个模块计算一个更小,更容易解决的抽象,然后计算抽象的博弈论策略。这个抽象的解决方案为游戏的早期阶段提供了一个详细的策略,但只是在游戏后期更多的部分玩游戏的近似。我们将抽象的解决方案称为蓝图战略。
(ii)在游戏过程中当游戏后期到达时,Libratus的第二个模块为该子游戏构建一个更细粒度的抽象并实时解决(13)。与完美信息博弈中的子博弈解决技术不同,Libratus并不孤立地解决子博弈抽象,相反,它确保了子游戏的细粒度解决方案符合整个游戏的蓝图策略。子游戏求解器具有优于现有子博弈求解技术(几个关键优点14,15,16)。每当对手进行一次不在抽象的动作时,就会用包含的动作解决一个子游戏。我们称之为嵌套子游戏解决。这种技术带有可证明的安全保证。
(三)Libratus第三个模块 - 自我改进者 - 加强了蓝图战略。它填补了蓝图抽象中缺失的分支,并计算出这些分支的博弈论策略。原则上,可以预先进行所有这样的计算,但是为了可行,游戏树太大了。为了驯服这种复杂性,Libratus使用对手的实际动作来表明在游戏树中的这种填充是值得的。
在以下三个小节中,我们将更详细地介绍这三个模块。
抽象与均衡发现:制定蓝图战略
解决不完美信息问题的一个办法就是简单地把整个游戏作为一个整体来推理,而不仅仅是整个游戏的一部分。在该方法中,溶液被预先计算对于整个游戏中,可能使用一个线性程序(10)或迭代算法(17 - 21)。例如,使用一个名为反遗憾最小化加(CFR +)迭代算法接近最佳解决抬头极限德州扑克,扑克相对简单的版本,其中有大约10 13独特的决策点(11,22) 。
相比之下,HUNL(23)有10 161个决策点(24),所以遍历整个游戏树是不可能的。预先计算每个决策点的策略对于这样一个大型游戏是不可行的。
幸运的是,其中许多决策点非常相似。例如,$ 100的下注和$ 101的下注之间几乎没有什么区别。我们可以考虑100美元的增量,而不是考虑每个可能的100到20000美元之间的赌注。这被称为动作抽象。抽象是一个更小,更简单的游戏,尽可能保留原始游戏的战略方面。这大大降低了解决游戏的复杂性。如果对手在实际比赛中下注$ 101那么AI可能只是这一轮$ 100的投注,并相应地做出响应(25 - 27)。Libratus的动作抽象中包含的大部分赌注大小都是好的分数或者是整数的倍数[通过分析在年度计算机扑克比赛(ACPC)中以前的顶级AI在游戏中不同点上最常见的赌注大小来确定(28)]。然而,游戏树早期的某些下注尺寸是由独立于应用程序的参数优化算法确定的,该算法收敛到局部最优的一组下注尺寸(29)。
抽象的另一种形式是偶然采取的抽象行为,即在扑克的情况下抽象卡。类似的手分组在一起,对待相同。直觉上,一个国王的高潮和一个女王高的潮红之间几乎没有什么区别。将这些牌视为相同的牌可以降低游戏的复杂性,从而使其在计算上更容易。尽管如此,甚至在一个国王的冲洗和一个女王的冲洗之间还是有差异的。在最高水平上,这些差异可能是胜负之间的差异。Libratus在第一轮和第二轮下注时不使用任何卡抽象。最后两轮投注数量明显较多的国家只能在蓝图战略中抽象出来。第三轮5500万手的可能性在算法上被分成250万个抽象桶,第四轮24亿个不同的可能性在算法上被分组为125万个抽象桶。然而,AI在这些回合中并没有遵循蓝图战略,而是应用了嵌套子游戏解决方法,在下一节中将会介绍,它不使用任何卡片抽象。因此,在实际的比赛中,每个扑克手都被单独考虑。我们使用的卡抽象算法类似于我们以前的AIs Baby Tartanian8(人工智能在这些回合中不遵循蓝图策略,而是应用嵌套子游戏解决方法,在下一节中将会介绍,它不使用任何卡片抽象。因此,在实际的比赛中,每个扑克手都被单独考虑。我们使用的卡抽象算法类似于我们以前的AIs Baby Tartanian8(人工智能在这些回合中不遵循蓝图策略,而是应用嵌套子游戏解决方法,在下一节中将会介绍,它不使用任何卡片抽象。因此,在实际的比赛中,每个扑克手都被单独考虑。我们使用的卡抽象算法类似于我们以前的AIs Baby Tartanian8(30),从而获得了2016 ACPC,和Tartanian7( 31 - 33),从而获得了2014 ACPC(有在2015没有ACPC)。
一旦抽象化被构建,我们通过使用改进版本的蒙特卡罗反事实遗憾最小化算法(AI)来玩扑克模拟扑克游戏(同时仍然探索未选择的动作的假设结果)来计算Libratus的蓝图战略MCCFR)。MCCFR(17,34,35)具有在成功的扑克认可(很长的使用历史30,31,36,37)。MCCFR为每个行动保留一个遗憾的价值。直觉上,后悔表示AI多么遗憾没有选择过去的行动。当玩家在自我游戏中遇到决策点时,AI选择行动的概率更高(38)。随着越来越多的游戏被模拟,MCCFR保证玩家对于任何动作(总遗憾除以所玩的迭代次数)的平均后悔概率为零。因此,AI对所有模拟游戏的平均策略逐渐提高。现在我们将描述均衡发现算法(4)。
在每个模拟游戏中,MCCFR选择一个玩家(我们称之为移动者)来探索每一个可能的动作并更新他的遗憾,而对手只是根据当前遗憾确定的策略进行游戏。该算法在每场比赛之后切换两个玩家的角色,即单手扑克。每当任一玩家在模拟游戏中面临决策点时,玩家将基于对这些动作的遗憾而选择概率分布(这是由他在之前的游戏中所了解到的) 。对于第一场比赛,AI还没有学到任何东西,因此在动作上使用统一的随机分布。在移动决策点,MCCFR以深度优先的方式探索每一个行动。在对手的决定点上,MCCFR根据概率分布对行动进行抽样。这个过程在每一个决定点重复,直到游戏结束,并收到奖励,这是传递。当移动决策点的每个行动都返回一个报酬时,MCCFR根据行动的概率分布计算该决策点的加权平均报酬。然后通过添加该动作返回的值,并且减去决策点的加权平均奖励来更新每个动作的遗憾。加权平均奖励然后传递到前一个决策点,依此类推。MCCFR根据行动的概率分布计算该决策点的加权平均奖励。然后通过添加该动作返回的值,并且减去决策点的加权平均奖励来更新每个动作的遗憾。加权平均奖励然后传递到前一个决策点,依此类推。MCCFR根据行动的概率分布计算该决策点的加权平均奖励。然后通过添加该动作返回的值,并且减去决策点的加权平均奖励来更新每个动作的遗憾。加权平均奖励然后传递到前一个决策点,依此类推。
我们的改进版本的MCCFR在每次迭代中遍历游戏树的一小部分。直观地说,在游戏中有许多明显不太理想的行为,反复探索它们浪费了计算资源,可以更好地用来改善别处的策略。而不是探索各种假设的替代作用,看看它的回报将是,我们的算法概率跳过有非常负面的遗憾,因为一个游戏(期间进行深入树没出息的行为30,39)。这导致了MCCFR在实践中的三倍加速,使我们能够解决更大的抽象问题。
这种跳过也减轻了由不完全召回引起的问题。包括我们在内的现场最先进的实际抽象是不完美的 - 回想一下抽象概念,在这个抽象概念中,到目前为止,游戏路径上的牌的某些方面被故意忘记,以便能够计算出更多的卡(当前状态的详细抽象30 - 32,40 )。由于所有决策点在一个抽象卡片桶中共享相同的策略,所以更新其中一个策略的策略导致更新所有这些策略。如果所有解决方案都达成了相同的最优策略,这并不是一个问题,但是在实践中他们的最优策略之间存在差异,并且他们有效地“斗争”以推动策略朝着自己的最优策略发展。跳过负面后悔行为意味着在实际游戏中永远不会达到的决策点将不再更新其策略,从而允许在游戏过程中实际发生的决策点将策略转移到最佳策略。
我们在HUNL的前两轮非常详细的抽象中运行了我们的算法,但是在最后两轮比较粗糙。然而,Libratus在最后两轮从来没有按照抽象的解决方案来玩。而是在这些回合中使用抽象的蓝图策略,只是估计一个玩家在一个子游戏中应该期待什么样的回报。这个估计是用来确定一个更精确的策略,在实际的游戏中,如下一节所述。
嵌套安全子游戏解决
尽管纯粹基于抽象方法已经产生了强烈的认可扑克(25,30,32,41),单独的抽象还不足以在HUNL达到超人性能。除了抽象,Libratus建立在以前的研究进入子博弈求解(14 - 16,42),其中更详细的策略是播放期间到达该游戏的特定部分进行计算。Libratus在子博弈解决方面有许多进展,这对于实现超人的表现至关重要(43)。
Libratus根据抽象的蓝图战略,只在HUNL的早期阶段,可能的状态数量相对较少,我们可以提供非常详细的抽象。在到达第三轮投注或者游戏中剩余游戏树足够小的任何早期点(44)时,Libratus将为剩下的子游戏构建一个新的,更详细的抽象并实时解决。
然而,在不完美信息博弈中子博弈解决方面存在一个主要挑战:子博弈不能孤立地求解,因为其最优策略可能取决于其他未获得的子博弈(4)。现有的使用实时子博弈解决方案的人工智能通过假定对手按照蓝图策略进行游戏来解决这个问题。然而,对手可以通过简单地切换到不同的策略来利用这个假设。出于这个原因,该技术可以产生远比蓝图策略恶化,被称为不安全子博弈求解(策略42,45)。另一方面,安全的子游戏解决技巧,保证了子策略的新策略,无论对手使用何种策略,14)。他们通过确保子博弈的新策略符合原始抽象的总体蓝图策略来实现这一点。确保对手相对于蓝图战略并不是最好的,因为我们可以重用蓝图战略。然而,现在子游戏中的抽象更为详细,我们可以更好地区分子游戏的战略细微差别,可能会找到一个先前的战略的改进,无论她拿着什么牌,对手都会变得更糟。
我们现在描述Libratus在子博弈中确定改进策略的核心技术。为了说明,我们假设玩家2(P2)正在确定针对玩家1(P1)的改进策略。鉴于P2在子博弈之外的策略存在一些最优策略 P2可以在子游戏中玩。我们想找到或近似实时。我们假设,对于每个手牌P1可能有的P1,我们都有一个很好的估计值P1,即使我们不知道 本身。尽管我们并不完全了解这些值,但我们可以用蓝图策略中的子博弈中的P1值来逼近它们。我们后来证明,如果这些估计大致准确,我们可以近似地估计。
找到一个接近的策略 在只使用蓝图值的子游戏中,我们创建了一个包含子游戏和附加结构的增强子游戏(图1)。在扩大的子博弈开始时,P1私下处理随机的牌。鉴于P2根据在子博弈之前,并且给予P1的处理后的手,在这种情况下P2可能具有什么特定的概率分布。P2根据这个概率分布处理扑克牌。然后,P1可以选择进入子博弈(现在比蓝图策略更详细),或者立即结束增强子博弈,采取另一种支付方式。替代收益的价值是根据蓝图策略,我们估计P1在该子博弈中对该牌手的价值。如果P1选择进入子游戏,则正常进行游戏直到游戏结束。就像我们为蓝图策略所做的那样,我们可以解决这个扩充的子博弈(46)。
对于P1可能有的任何一手牌,P1在增强子博弈中可以做的并不比只选择其他支付(我们对P1的预期值可以接受的估计值 )。与此同时,P2可以确保P1对每一手牌可能有的,他没有比他所能得到的更好,因为P2可以简单地玩 本身。因此,增强子游戏的任何解决方案都必须大致和其中近似误差取决于我们对P1值的估计有多远。P2随后将解决方案用于增强的子游戏,作为P2的战略前进。
所有这一切都依赖于我们准确估计P1的值 。虽然我们并不完全了解这些值,但我们可以用蓝图策略中的值来估计它们。我们现在证明,如果这些估计是准确的,子博弈求解会产生一个接近质量的策略。具体来说,我们定义了一个策略的可利用性 至于多少 在预期的情况下,对于最坏的对手来说,将会失去一个完全游戏的确切解决方案,而不是P2会失去的。
定理1使用一种安全的子游戏解决我们硬币Estimated-Maxmargin。我们在子博弈中为每手P1手定义一个保证金,作为该手的预期值,根据蓝图减去P1可以用这手获得的价值,通过输入更详细的子博弈。Estimated-Maxmargin找到了一个策略,使所有P1手中的最小余量最大化。这与先前技术Maxmargin(15)相似,不同之处在于先前的技术保守地用作P1可以在子博弈中获得的保证金,期望通过在期望中对P2的蓝图策略减去P1可以获得的最佳响应通过输入更详细的子游戏。
定理1. 让 作为一个双人零和完美回忆游戏的策略,让S 为游戏中一组不重叠的子游戏, 成为不同于最小可开发的策略 只有S中。假设对于任何对手的决定点(在扑克的情况下)和S中的任何子游戏,我们估计对手的价值的最佳答案是 那个子游戏中的那个决定点最多是Δ。对游戏中 到达的S中的任何子游戏应用Estimated-Maxmargin子游戏解决方案导致整体可利用性最多2Δ ,(47)。
虽然安全解决子博弈技术已经知道三年(14,15),他们并没有在实践中,因为他们经验比不安全的子博弈求解(执行显著恶化使用42)头对头(48)。Libratus提供了一些子博弈解决方案,大大提高了效率。
(一)虽然我们描述的安全解决子博弈与使用P1值的估计,过去的技术使用这些值(上限14,15)。使用上限可以保证子博弈解决方案的可利用性不高于蓝图策略。但在实践中往往会导致过于保守的策略。从理论上讲,使用估计可以产生比蓝图策略更高的可利用性的策略,但是定理1限制了这种可利用性可以达到的程度。
(二)在子游戏中达到比先前认为可能的更好的策略。过去的技术确保了子策略的新策略使P1在每个情况下都不会更好。事实证明,这是一个不必要的强大约束。例如,2♠7♥被认为是HUNL中最差的一手,应该立即折叠,这将结束比赛。选择其他行动会导致期望更大的损失。不过,过去的子游戏解决技巧会让P1在子游戏中有2×7♥,这是不现实的。即使子博弈解决了一个策略,在一个子博弈中增加了2♠7♥的一小部分的价值,这个增加也不会超过达到子博弈的成本(也就是说2♠7♥不折叠的成本) 。从而,P2可以允许一些“不重要”的P1手在子游戏中增加的价值,只要增加足够小,以至于P1用那只手到达子游戏仍然是一个错误。我们通过增加增强子游戏中的P1手的替代奖励,以达到子游戏的P1的额外成本来实现这个目的,也就是说,用这只手来达到该子游戏所需的错误P1的大小。通过增加这些“不重要”手的增强子博弈中的替代奖励,P2在子博弈中制定策略,其更好地防御手P1可能实际上具有 我们通过增加增强子游戏中的P1手的替代奖励,以达到子游戏的P1的额外成本来实现这个目的,也就是说,用这只手来达到该子游戏所需的错误P1的大小。通过增加这些“不重要”手的增强子博弈中的替代奖励,P2在子博弈中制定策略,其更好地防御手P1可能实际上具有 我们通过增加增强子游戏中的P1手的替代奖励,以达到子游戏的P1的额外成本来实现这个目的,也就是说,用这只手来达到该子游戏所需的错误P1的大小。通过增加这些“不重要”手的增强子博弈中的替代奖励,P2在子博弈中制定策略,其更好地防御手P1可能实际上具有4)。
(iii)Libratus制定了一个针对对手投注的独特策略,而不是将其四舍五入到抽象的最接近的大小。下注101美元的最佳回应与下注100美元的最佳回应不同,但差异可能较小。出于这个原因,把对手下注101美元到100美元是合理的。但是对于$ 150的下注的最佳反应可能与对$ 100的下注或$ 200下注的反应明显不同。原则上可以简单地增加抽象活动的数量,也许可以以10美元而不是100美元为增量来下注,所以四舍五入的误差更小。然而,随着更多的行为的增加,抽象的大小以及解决这个问题所需要的时间就会增加。
因此,Libratus并不是围绕最接近的行动而进行实时计算,而是实时计算离树行动的独特响应,即不是抽象的对手所采取的行动。Libratus试图让对手不管对手可能拥有什么样的手牌都不会有更好的选择,因为他选择了离线的动作,而不是抽象的动作。它是通过在离树行动之后生成和解决增强型子博弈来实现的,其中替代性回报是对手可能采取的最佳抽取行动(最好的行动可能在不同的手中有所不同)。
Libratus在我们称之为嵌套子游戏求解的过程中为每个后续的离树动作重复这个操作(见图2)。后来我们提供了一些实验,证明这种技术可以将扑克AI的最坏情况的表现提高一个数量级以上,相比于将对手动作四舍五入到附近的抽象动作的最佳技术。
(4)由于子博弈是实时解决的,因此子博弈中的抽象也可以实时决定和双向转换。Libratus利用这个特性,在子博弈解决的第一个点上,改变它在该子博弈中使用的下注大小以及该手牌的每一个后续子博弈,从而迫使对手不断适应新的赌注大小和策略(49)。
扑克AI DeepStack的作者独立并且同时开发了一种类似于嵌套子游戏求解的算法,他们称之为连续重新求解(50)。在一次互联网实验中,DeepStack打败了HUNL并不是专家的人才。然而,DeepStack从来没有表现出超过之前公开提供的顶级AI的头对头表现,而Libratus大幅度超过了之前领先的HUNL扑克AI Baby Tartanian8,我们将在后面讨论。
像Libratus一样,DeepStack实时计算对对手的具体投注的回应,并使用估计而不是对手的价值上限。这并不意味着Libratus的改进就是只有在犯了先前的错误时,对手才会持有的不重视的手,而且不具有改变双手之间的子游戏行为抽象的特征。
DeepStack通过神经网络估算深度极限值,在前两轮下注中解决了深度受限的子博弈问题。这允许它总是计算实时响应对手的离树行动,而Libratus通常在前两轮根据其预先计算的蓝图策略进行播放。
由于Libratus通常根据前两轮下注前的蓝图策略进行游戏,因此它会将离开对手的下注大小轮回到附近的抽取中。这些轮次的蓝图行动抽象是密集的,以减轻这一弱点。此外,Libratus还有一个独特的自我完善模块,以便随着时间的推移增加蓝图策略,现在我们介绍。
自我提升
Libratus的第三个模块是自我改进器。它在后台增强了蓝图战略。它填补了蓝图抽象中缺少的分支,并计算出这些分支的博弈论策略。原则上,可以预先进行所有这样的计算,但是为了可行,游戏树太大了。为了驯服这种复杂性,Libratus使用对手的实际动作来表明在游戏树中的这种填充是值得的。
该方法的机器学习已通常在玩游戏中使用是试图建立一个对手模型,找到对手的战略错误(例如,折叠过于频繁,要求过于频繁,等等),并利用这些错误(51 - 53) 。缺点是试图利用对手打开自己被剥削。(开采技术的某些保守的家庭构成了唯一的例外下行(51 - 53。)),因此,在第一近似,Libratus没有做对手剥削。相反,它使用了对手用来建议哪些分支应该被添加到蓝图中的下注大小的数据,然后计算了这些分支在后台的博弈论策略。
在前两轮下注的大部分情况下,在Libratus中使用的实时子博弈解决方案可能不会产生比蓝图更好的策略,因为蓝图已经在这些轮次中不使用卡牌抽象,并且在实际中进行子游戏解决在游戏树中如此早的时候需要在子游戏中进行大量的抽象。由于这些原因,Libratus根据这些情况下的预先计算的蓝图策略进行播放。在这些回合中,抽象中有很多下注尺寸,所以从四舍五入到附近尺寸的误差很小。尽管如此,还是有一些错误,这可以通过在抽象中包含更多的赌注大小来减少。在下一节所述的针对人类玩家的实验中,Libratus在比赛的每一天分析了在其第一轮下注比赛中对手最常使用的下注数量。根据对手下注大小的频率及其与抽象中最接近下注大小的距离,Libratus选择了k赌注的大小,它会试图计算一夜之间的响应(54)。然后将每个早上已经达到合理收敛的那些赌注大小与在该赌注大小之后的新计算策略一起添加到蓝图策略中。通过这种方式,Libratus能够逐渐缩小差距,因为竞争的进行是利用人类发现潜在弱点的能力。而且,这些战略的修正是普遍的:它们对付所有的对手,而不仅仅是Libratus所面对的对手。
Libratus的自我完善有两种形式。对于其中之一,当添加k个下注大小中的一个时,在均衡发现期间也使用默认的同胞下注大小,以便不假定对手必然只使用将要添加的下注大小。另一方面,不使用默认的赌注大小。这可以被视为更具风险甚至被剥削,但Libratus通过在比赛中使用该部分策略来减轻风险,只有当对手在大部分时间确实使用该赌注的规模时(4)。
实验评估
为了评估在Libratus中使用的技术的强度,我们首先测试了扑克的缩小变体的AI的整体方法,然后进行完整的HUNL测试。这些中等大小的变体只包含两轮或三轮下注而不是四轮,而在每个决策点最多只有三个下注大小。较小的游戏规模使我们能够精确地计算出可利用性,即与最优策略的距离。表现以每手大盲注(mbb /手)来衡量,平均每1000手赢得大盲注数量。
在第一个实验中,我们比较了不使用子游戏求解,不安全的子游戏求解(42)(其中一个子游戏是独立解决的,没有性能上的理论保证),并且在到达游戏的最后一轮游戏时只需要一次安全的子游戏求解。双方都被限制在两种不同的下注尺寸中进行选择,因此在第一个实验中,离线操作不是问题。结果如表1所示。在所有情况下,相对于没有子游戏解决的安全子游戏解决方案,可利用性降低了4倍以上。在一个案例中,不安全的子博弈解决方案导致更低的可利用性,而另一种情况下,利用率比没有使用子博弈解决方案的情况下提高了近一个数量级。这表明虽然不安全的子博弈解决可能会在某些游戏中产生强大的策略,但也可能导致更糟糕的表现。安全的子游戏解决,相反,降低所有游戏的利用率。
在第二个实验中,我们构建了一个游戏的抽象,其中只包含三个可用赌注大小中的两个。如果对手玩了缺少的赌注大小,AI或者使用了动作翻译[在这种情况下,赌注被舍入到抽象的附近大小; 我们与领先的动作翻译技术(27)进行了比较],或嵌套子游戏解决。结果如表2所示。嵌套的子博弈解决方案相对于动作转换的可利用性降低了一个数量级以上。
表2
所显示的是在小型扑克变体中与没有嵌套子游戏解决方案(而是使用领先的动作翻译技术)的比较。
接下来,我们以完整的HUNL展示实验。在构建Libratus之后,我们测试了AI与之前领先的HUNL扑克AI(我们的2016年度的bot Tartanian8),它在最近的ACPC中击败了所有其他具有统计学意义的扑克AI(55)。我们报告平均胜率,其次是95%的置信区间。Libratus仅使用原始蓝图战略,以8±15 mbb /手的速度输给了Baby Tartanian8。在第三轮和第四轮下注中添加最先进的后期处理(31),例如消除由于没有足够时间达到趋同而可能只有积极的低概率行动,导致Libratus蓝图战略以18±21 mbb /手击败婴儿Tartanian 8。消除低概率行为凭经验导致对非调整AI的更好的表现。但是,这也增加了AI的可利用性,因为它的策略变得更可预测。完整的Libratus代理没有在第三轮和第四轮下注中使用后期处理。在前两轮,Libratus主要使用了一种新的,更强大的后处理形式(4)。
下一个实验评估了嵌套子游戏的解决(不进行后期处理),只使用Baby Tartanian8的动作抽象中的动作。Libratus以59±28 mbb /手获胜(56)。最后,应用比赛中使用的嵌套子游戏解决结构,Libratus以63±28 mbb /手击败Baby Tartanian8。结果如表3所示。相比之下,Baby Tartanian8以12±10 mbb /手和24±20 mbb /手击败了ACPC中下两个最强的AI。
表3
所显示的是Libratus蓝图策略的结果,以及HUNL中针对Baby Tartanian8的嵌套子博弈解决方案。
最后,我们测试Libratus对顶级人类。在二零一七年一月,Libratus与一个由四名顶级HUNL专家组成的队伍在20天内参加了一场12万人的“大脑与人工智能挑战赛”比赛。与会者包括Jason Les,Dong Kim,Daniel McCauley和Jimmy Chou。二十万美元的奖金总额被分配给四个人类。每个人都保证在那个游泳池里有两万美元。其余的12万美元是根据人类对Libratus比四个人中表现最差的人做得好多少而分配的。Libratus决定性地以147 MB /手的速度击败了人类,统计学显着性为99.98%,p值为0.0002(如果双手被视为独立且分布相同),见图3(57)。它也单独击败了每个人。
结论
Libratus提出了一种有效解决大型状态空间隐藏信息下博弈论推理的挑战的方法。我们开发的技术在很大程度上是独立于域的,因此可以应用于其他战略性的不完美信息交互,包括非娱乐性应用。由于现实世界中的隐藏信息无处不在,我们认为Libratus中引入的范式对AI的未来发展和广泛应用将是非常重要的。
文章编辑:人工智能技术社区
文章来源:http://science.sciencemag.org/content/early/2017/12/15/science.aao1733.full