浅谈德州扑克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)=∏i∈Nπ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)=∏i∈N/iπjσ(h)。
-
对于每个玩家 i ∈ N , u i : Z → R i∈N,u_i:Z→R i∈N,ui:Z→R,表示玩家的收益函数。
-
计算玩家在给定策略下所能得到的期望收益: u i ( σ ) = Σ h ∈ Z u i ( h ) π σ ( h ) u_i(\\sigma)=\\Sigma_h∈Zu_i(h)\\pi^\\sigma(h) ui(σ)=Σh∈Zui(h)πσ(h)。
-
纳什均衡:策略组 σ = ( σ 1 ∗ , σ 2 ∗ , . . . , σ n ∗ ) \\sigma=(\\sigma^*_1,\\sigma^*_2,...,\\sigma^*_n) σ=(σ1∗,σ2∗,...,σn∗)是纳什平衡当且仅当对每个玩家 i ∈ N i∈N i∈N,满足条件: 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)=Σb∈AiRiT(b)RiT(a) -
平均遗憾值:假设博弈能够重复进行,令第次的博弈时的策略组为,若博弈已经进行了次,则这次博弈对于玩家的平均遗憾值定义为:
R e以上是关于浅谈德州扑克AI核心算法:CFR的主要内容,如果未能解决你的问题,请参考以下文章