浅谈德州扑克AI核心算法:CFR

Posted 行者AI

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈德州扑克AI核心算法:CFR相关的知识,希望对你有一定的参考价值。

本文首发于行者AI

引言

自2017年AlphaGo打败世界围棋冠军柯洁后,人工智能彻底进入大众视野,一时间棋牌类的AI在人工智能界掀起了一股大风。其实早在AlphaGo之前,人们就对棋牌类的人工智能发起了挑战,从简单的跳棋、五子棋,到更加复杂的中国象棋、国际象棋,以及最近非常热门的围棋和德州扑克,数十年间也是硕果累累。而相对于跳棋、象棋等完全信息游戏,德州扑克不仅要根据不完全信息进行复杂决策,还要应付对手的虚张声势、故意示弱等招数,其对应的博弈树无论是广度还是深度都十分庞大,它也一直都是科学家们想要攻克的高山。而在AlphaGO打败柯洁的同年,德扑AI DeepStack和Libratus也先后在 “一对一无限注德州扑克” 上击败了职业扑克玩家,在不完全信息博弈中做出了里程碑式的突破,而他们所采用的的核心算法就是Counterfactual Regret Minimization(CFR)。

1. Regret Matching

1.1算法原理

CFR算法的前身是regret matching算法,在此算法中,智能体的动作是随机选择的,其概率分布与 positive regret呈正比, positive regret表示一个人因为过去没有选择该行动而受到的相对损失程度。

这里对Regret Matching算法中的符号做出若干定义:

  • N = 1 , 2 , . . . , n N=\\left\\1,2,...,n\\right\\ N=1,2,...,n 表示博弈玩家的有限集合。玩家 i i i 所采用的的策略为 σ i \\sigma_i σi

  • 对于每个信息集 I i ∈ ξ i , σ i ( I i ) : A ( I i ) → [ 0 , 1 ] I_i∈\\xi_i,\\sigma_i(I_i):A(I_i)→[0,1] Iiξi,σi(Ii):A(Ii)[0,1],是在动作集 A ( I i ) A(I_i) A(Ii)上的概率分布函数。玩家 i i i的策略空间用 Σ i \\Sigma_i Σi表示 。

  • 一个策略组包含所有玩家策略,用 σ = ( σ 1 , σ 2 , . . . , σ n ) \\sigma=(\\sigma_1,\\sigma_2,...,\\sigma_n) σ=(σ1,σ2,...,σn).

  • 在博弈对决中,不同玩家在不同时刻会采取相应策略以及行动。策略下对应的动作序列发生概率表示为 π σ ( h ) \\pi^\\sigma(h) πσ(h),且 π σ ( h ) = ∏ i ∈ N π i σ ( h ) \\pi^\\sigma(h)=\\prod_i∈N\\pi_i^\\sigma(h) πσ(h)=iNπiσ(h)

    这里的 π i σ ( h ) \\pi^\\sigma_i(h) πiσ(h)表示玩家 i i i使用策略 σ i \\sigma_i σi促使行动序列 h h h发生的概率,除了玩家 i i i以外,其他玩家通过各自策略促使行动序列 h h h发生的概率为: π − i σ ( h ) = ∏ i ∈ N / i π j σ ( h ) \\pi^\\sigma_-i(h)=\\prod_i∈N/i\\pi_j^\\sigma(h) πiσ(h)=iN/iπjσ(h)

  • 对于每个玩家 i ∈ N , u i : Z → R i∈N,u_i:Z→R iN,ui:ZR,表示玩家的收益函数。

  • 计算玩家在给定策略下所能得到的期望收益: u i ( σ ) = Σ h ∈ Z u i ( h ) π σ ( h ) u_i(\\sigma)=\\Sigma_h∈Zu_i(h)\\pi^\\sigma(h) ui(σ)=ΣhZui(h)πσ(h)

  • 纳什均衡:策略组 σ = ( σ 1 ∗ , σ 2 ∗ , . . . , σ n ∗ ) \\sigma=(\\sigma^*_1,\\sigma^*_2,...,\\sigma^*_n) σ=(σ1,σ2,...,σn)是纳什平衡当且仅当对每个玩家 i ∈ N i∈N iN,满足条件: u i ( σ ) ≥ m a x σ i ‘ ( σ 1 ∗ , σ 2 ∗ , . . . , σ n ∗ ) u_i(\\sigma)\\geq max_\\sigma_i^`(\\sigma^*_1,\\sigma^*_2,...,\\sigma^*_n) ui(σ)maxσi(σ1,σ2,...,σn)

  • 遗憾值:玩家在第T次采取策略的遗憾值为:
    R i T ( a ) = Σ T = 1 T ( μ i ( a , σ − i t ) − μ i ( σ i t , σ − i t ) ) R_i^T(a)=\\Sigma_T=1^T(\\mu_i(a,\\sigma_-i^t)-\\mu_i(\\sigma_i^t,\\sigma_-i^t)) RiT(a)=ΣT=1T(μi(a,σit)μi(σit,σit))

  • 策略:根据遗憾值更新策略
    σ i T + 1 ( a ) = R i T ( a ) Σ b ∈ A i R i T ( b ) \\sigma_i^T+1(a)=\\fracR_i^T(a)\\Sigma_b∈A_iR_i^T(b) σiT+1(a)=ΣbAiRiT(b)RiT(a)

  • 平均遗憾值:假设博弈能够重复进行,令第次的博弈时的策略组为,若博弈已经进行了次,则这次博弈对于玩家的平均遗憾值定义为:
    R e

    以上是关于浅谈德州扑克AI核心算法:CFR的主要内容,如果未能解决你的问题,请参考以下文章

    德州扑克AI(译)

    德州扑克AI

    德州扑克AI WEB版

    德州扑克AI实现 TexasHoldem Poker

    棋牌平台搭建教程-德州扑克算法详解

    德州扑克游戏