所解决的问题?

Heads-up no-limit Texas hold’em (HUNL)864核跑无限注德州扑克达到人类水平。有点类似DouZero单机上达到人类水平。

背景

HUNL初始时,两名玩家会发两张盖牌。之后还有、翻牌、转牌、河牌、比牌。翻牌是三张,转牌一张,河牌一张。需要评估能够组成的5张牌中最大的。

动作空间有:过牌(check),跟注(call),加注(raise),弃牌(fold)。

五张牌的大小比较有:

DeepStackLibratus都是做完abstract之后再接CFR类算法,但是CFR这类偏遍历的方式算起来计算资源的开销太大了。但是AlphaHoldem只在8卡的GPU上64CPU核上训练了三天。

所采用的方法?

作者设计了一个伪孪生网络的结构(pseudo-Siamese),直接从输入学习输出的动作分布。除此之外,作者在状态表征、训练的loss、模型策略方面也都做了改进。

整体的网络结构如上图所示:输入是动作信息和卡牌信息的状态表征。送入到顶部和底部的孪生网络结构中。作者期望两个卷积网络能够学习不同的信息表征。由此还提出了一种新的loss函数Trinal-Clip Lossself-play的时候也是选取的历史最佳的k个。整体设计就是这样,具体细节可以归功于三个方面:状态表征、Loss设计、Self-Play的模型选择。

高效的状态表征

card的信息就是六个通道,2张底牌、3张公共牌、1张转牌、1张河牌。每个通道是4x13的矩阵,1表示有这张牌(这里是考虑了花色的)。

对于动作信息,每个通道是 4 × n b 4 \times n_{b} 4×nb的矩阵,4分别表示玩家1的动作、玩家2的动作、两家动作之和、合法动作。总共最多会有4次下注,每次下注最多会有6个下注动作。所以总共是 24 × 4 × n b 24 \times 4 \times n_{b} 24×4×nb种情况。

Trinal-Clip损失函数

replay buffer中采样数据更新,算法采用PPO更新公式,ratio为: r t ( θ ) = π θ ( a t ∣ s t ) π θ ′ ( a t ∣ s t ) r_t(\theta)=\frac{\pi_\theta\left(a_t \mid s_t\right)}{\pi_{\theta^{\prime}}\left(a_t \mid s_t\right)} rt(θ)=πθ(atst)πθ(atst),其中 θ \theta θ为新策略, θ ′ \theta^{\prime} θ为旧策略。

L p ( θ ) = E t [ min ⁡ ( r t ( θ ) A ^ t , clip ⁡ ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ t ) ] \mathcal{L}^p(\theta)=\mathbb{E}_t\left[\min \left(r_t(\theta) \hat{A}_t, \operatorname{clip}\left(r_t(\theta), 1-\epsilon, 1+\epsilon\right) \hat{A}_t\right)\right] Lp(θ)=Et[min(rt(θ)A^t,clip(rt(θ),1ϵ,1+ϵ)A^t)]

其中 ϵ = 0.2 \epsilon=0.2 ϵ=0.2。作者在采用上述PPOloss的情况下,很难收敛。作者给出了两点主要的原因:

  1. π θ ( a t ∣ s t ) ≫ π θ o l d ( a t ∣ s t ) \pi_\theta\left(a_t \mid s_t\right) \gg \pi_{\theta_{o l d}}\left(a_t \mid s_t\right) πθ(atst)πθold(atst),和 A ^ t < 0 \hat{A}_t<0 A^t<0的时候,会导致policy loss的方差比较大。
  2. 由于对手的不确定性,会导致valueloss比较大。

作者设计了Trinal-Clip Loss,对于policy部分,当 A ^ t < 0 \hat{A}_t<0 A^t<0的时候,对下界也需要限制一下:

L t c p ( θ ) = E t [ clip ⁡ ( r t ( θ ) , clip ⁡ ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) , δ 1 ) A ^ t ] \mathcal{L}^{t c p}(\theta)=\mathbb{E}_t\left[\operatorname{clip}\left(r_t(\theta), \operatorname{clip}\left(r_t(\theta), 1-\epsilon, 1+\epsilon\right), \delta_1\right) \hat{A}_t\right] Ltcp(θ)=Et[clip(rt(θ),clip(rt(θ),1ϵ,1+ϵ),δ1)A^t]

其中 δ 1 > 1 + ϵ \delta_1 > 1+\epsilon δ1>1+ϵ,作者这里设置的是3。对于value lossclip设计为:

L t c v ( θ ) = E t [ ( clip ⁡ ( R t γ , − δ 2 , δ 3 ) − V θ ( s t ) ) 2 ] \mathcal{L}^{t c v}(\theta)=\mathbb{E}_t\left[\left(\operatorname{clip}\left(R_t^\gamma,-\delta_2, \delta_3\right)-V_\theta\left(s_t\right)\right)^2\right] Ltcv(θ)=Et[(clip(Rtγ,δ2,δ3)Vθ(st))2]

参数 δ 2 \delta_2 δ2和参数 δ 3 \delta_3 δ3是我方玩家的下注和对方玩家的下注。这两个参数是动态生成的,就是为了减少value的方差。

这三种loss的效果对比如下:

有效的模型选择和生成

简单的自博弈算法容易陷入循环克制的问题中,不容易收敛。AlphaStar的群体博弈(PBT),神经虚拟自博弈(NFSP)需要的资源开销比CFR的开销还要大。

AlphaHoldem采用了一种新型的Best-K自博弈方法。该方法通过在训练过程中测试历史模型的性能,挑选出K个最好的模型与现在最新的模型对打,不断通过强化学习提升自身性能。

总共8.6milion的参数,1.8milion的卷积参数,6.8milion的全连接参数。

取得的效果?

所出版信息?作者信息?

一作是中科院博士生赵恩民,导师兴军亮。论文是AAAI的卓越论文。

参考链接

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐