ReBel 论文学习笔记

论文:《Combining Deep Reinforcement Learning and Search for Imperfect-Information Games》
地址:https://arxiv.org/abs/2007.13544v2
代码:https://github.com/facebookresearch/rebel
材料

  • BV1gt4y1k77C(1小时12分钟)
  • BV1hM4y1D7SW(35分钟)

论文的贡献

  1. 一种应用在不完美信息二人零和博弈中的 RL+Search 算法;(ReBel、定理2)
  2. 为安全搜索算法提供了一种新的选择;(定理3)
  3. 使用 CFR-AVG 分解子博弈;
  4. 揭示了 PBS 梯度与 infostates value 之间的联系;(定理1)
  5. 一种新的虚拟博弈算法:虚拟线性乐观博弈算法(Fictitious Linear Optimistic Play, FLOP)

在这里插入图片描述

一些概念

  • w ∈ W w\in \mathcal{W} wW,世界状态(World State),游戏中的一个状态;
  • A = A 1 × A 2 × ⋯ A N \mathcal{A}=\mathcal{A}_1\times\mathcal{A}_2\times\cdots\mathcal{A}_N A=A1×A2×AN,N 个 agent 联合行为的空间;
  • a = ( a 1 , a 2 , ⋯   , a N ) ∈ A a=(a_1,a_2,\cdots,a_N)\in\mathcal{A} a=(a1,a2,,aN)A,N 个 agent 的一种联合行为;
  • T ( w , a ) ∈ Δ W \mathcal{T}(w,a)\in\Delta\mathcal{W} T(w,a)ΔW,输运函数,它是一个概率分布,在当前的世界状态 w 下选定 a 之后,负责决定下一个世界状态 w’;
  • R i ( w , a ) \mathcal{R}_i(w,a) Ri(w,a),agent i 的在 (w,a) 时获得的奖励;
  • O p r i v ( i ) ( w , a , w ′ ) \mathcal{O}_{priv(i)}(w,a,w') Opriv(i)(w,a,w),agent i 在 a 的作用下从 w 转至 w’ 后获得的私人观测(Private Observation);
  • O p u b ( w , a , w ′ ) \mathcal{O}_{pub}(w,a,w') Opub(w,a,w),所有 agent 获得的公共观测(Public Observation);
  • h = ( w 0 , a 0 , w 1 , a 1 , ⋯   , w t ) h=(w^0,a^0,w^1,a^1,\cdots,w^t) h=(w0,a0,w1,a1,,wt),历史(History),合理行为与世界状态的一个有限序列;
  • s i = ( O i 0 , a i 0 , O i 1 , a i 1 , ⋯   , O i t ) s_i=(O_i^0,a_i^0,O_i^1,a_i^1,\cdots,O_i^t) si=(Oi0,ai0,Oi1,ai1,,Oit)infostate,agent i 的观测与行为的序列,

    其中, O i k = ( O p r i v ( w k − 1 , a k − 1 , w k ) , O p u b ( w k − 1 , a k − 1 , w k ) ) O_i^k=(O_{priv}(w^{k-1},a^{k-1},w^k), O_{pub}{(w^{k-1},a^{k-1},w^k)}) Oik=(Opriv(wk1,ak1,wk),Opub(wk1,ak1,wk))

  • s i ( h ) s_i(h) si(h) 是在 h 下 agent i 唯一的 infostate, H ( s i ) \mathcal{H}(s_i) H(si),是 agent i 的 infostate 的所有 h 的集合;
  • s p u b = ( O p u b 0 , O p u b 1 , ⋯   , O p u b t ) s_{pub}=(O_{pub}^0,O_{pub}^1,\cdots,O_{pub}^t) spub=(Opub0,Opub1,,Opubt),公共状态(Public State),是公共观测的序列;
  • s p u b ( h ) s_{pub}(h) spub(h) 是 h 的公共状态, s p u b ( s i ) s_{pub}(s_i) spub(si) s i s_i si 的公共状态, H ( s p u b ) \mathcal{H}(s_{pub}) H(spub) 是与 s p u b s_{pub} spub 相匹配的历史的集合,
  • π = ( π 1 , π 2 , ⋯   , π N ) \pi=(\pi_1,\pi_2,\cdots,\pi_N) π=(π1,π2,,πN),策略配置(Policy Profile),概率分布的序列, π i \pi_i πi 是一个将 infostate 映射为行为上的概率分布的函数;
  • 纳什均衡(Nash Equilibrium) π ∗ \pi^* π v i ( π ∗ ) = max ⁡ π i v i ( π i , π − i ∗ ) v_i(\pi^*)=\max_{\pi_i}v_i(\pi_i,\pi^*_{-i}) vi(π)=maxπivi(πi,πi)(对所有 i 均成立);
    • ϵ − Nash Equilibrium \epsilon-\text{Nash Equilibrium} ϵNash Equilibrium π ∗ \pi^* π ∃ ϵ > 0 ,   s . t .   v i ( π ∗ ) + ϵ ≥ max ⁡ π i v i ( π i , π − i ∗ ) \exist \epsilon>0,\ s.t.\ v_i(\pi^*)+\epsilon\geq\max_{\pi_i}v_i(\pi_i,\pi^*_{-i}) ϵ>0, s.t. vi(π)+ϵmaxπivi(πi,πi)(对所有 i 均成立);
  • 2 p 0 s 2p0s 2p0s:二人零和博弈;
  • PBS β = ( Δ S 1 ( s p u b ) , Δ S 2 ( s p u b ) , ⋯   , Δ S N ( s p u b ) ) \beta=(\Delta S_1(s_{pub}),\Delta S_2(s_{pub}),\cdots,\Delta S_N(s_{pub})) β=(ΔS1(spub),ΔS2(spub),,ΔSN(spub)),其中 S i ( s p u b ) S_i(s_{pub}) Si(spub) 是给定 s p u b s_{pub} spub 时 agent i 的 infostate 的集合, Δ S 1 ( s p u b ) \Delta S_1(s_{pub}) ΔS1(spub) S i ( s p u b ) S_i(s_{pub}) Si(spub) 上的联合概率分布;
  • V i π ( β ) = Σ h ∈ H ( s p u b ( β ) ) p ( h ∣ β ) v i π ( h ) V_i^\pi(\beta)=\Sigma_{h\in\mathcal{H}(s_{pub}(\beta))}p(h|\beta)v_i^\pi(h) Viπ(β)=ΣhH(spub(β))p(hβ)viπ(h),当所有选手使用 π \pi π 时,agent i 在 β \beta β 上的 value;
  • 在 2p0s 中,如果二人均使用纳什均衡策略,则每人在每个 PBS β \beta β 上的 value 是唯一的,且 V 1 ( β ) = − V 2 ( β ) V_1(\beta)=-V_2(\beta) V1(β)=V2(β)
  • v i π ∗ ( s i ∣ β ) = max ⁡ π i Σ h ∈ H ( s i ) p ( h ∣ s i , β − i ) v i < π i , π − i ∗ > ( h ) v_i^{\pi^*}(s_i|\beta)=\max_{\pi_i}\Sigma_{h\in\mathcal{H}(s_i)}p(h|s_i,\beta_{-i})v_i^{<\pi_i,\pi^*_{-i}>}(h) viπ(siβ)=maxπiΣhH(si)p(hsi,βi)vi<πi,πi>(h),在 2p0s 中是指以 β \beta β 为子博弈的根,二人采用纳什均衡策略 π ∗ \pi^* π 时,第 i 人的 infostate s i s_i si 的 value。

Discrete Representation 与 Belief Representation

52 张牌,二人博弈。每人在每个回合中有三种选择:翻牌、叫牌与加牌。

Discrete RepresentationBelief Representation
两人知道自己的牌不知道对方的牌,并据此采取下一步动作两人不知道自己和对方的牌,裁判知道每个人的牌。裁判依据二人分别声明的牌的对应行为的概率分布在二人的牌中进行操作。二人根据裁判的行为推测自己与对方的牌,然后调整对应动作的概率分布

ReBel 算法

f u n c t i o n  REBEL-LINEAR-CFR-D  ( β r , θ v , θ π , D v , D π )     #  β r  是当前的 PBS     while !IsTerminal ( β r )  do          G ← ConstructSubgame ( β r )          π ˉ , π t w a r m ← InitializePolicy ( G , θ π )     # 如果没有 warm start ,则 : t w a r m = 0 , π 0  是均匀分布          G ← SetLeafValues ( β r , π t w a r m , θ v )          v ( β r ) ← ComputeEV ( G , π t w a r m )          t s a m p l e ∼ linear { t w a r m + 1 , T }     # 迭代 t 的采样概率与 t 成正比         for  t = ( t w a r m + 1 ) . . T  do             if  t = t s a m p l e  then                  β r ′ ← SampleLeaf ( G , π t − 1 )     # 采样一个或多个叶 PBS              π t ← UpdatePolicy ( G , π t − 1 )              π ˉ ← t t + 1 π ˉ + 1 t + 1 π t              G ← SetLeafValues ( β r , π t , θ v )              v ( β r ) ← t t + 1 v ( β r ) + 1 t + 1 ComputeEV ( G , π t )         Add  { β r , v ( β r ) }  to  D v     # 添加到训练值网络的数据中         for  β ∈ G  do    # 遍历 G 中每个公共状态的 PBS             Add  { β , π ˉ ( β ) }  to  D π     # 添加到训练策略网络的数据中(可选)          β r ← β r ′ − − − − − − − − − − − − − − − − − − f u n c t i o n  SetLeafValues ( β , π , θ v )     if IsLeaf ( β )  then         for  s i ∈ β  do    # 对与  β  相关的每个内部状态 s i              v ( s i ) = v ^ ( s i ∣ β , θ v )     else         for  a ∈ A ( β )  do             SetLeafValues ( T ( β , π , a ) , π , θ v ) − − − − − − − − − − − − − − − − − − f u n c t i o n  SampleLeaf ( G , π )      i ∗ ∼ unif { 1 , N } , h ∼ β r     # 从根 PBS 中随机选取一个历史及一位玩家     while !IsLeaf ( h )  do          c ∼ unif [ 0 , 1 ]         for  i = 1.. N  do              if  i = = i ∗  and  c < ϵ  then    # 训练时设置  ϵ = 0.25 ,测试时设置  ϵ = 0                 sample an action  a i  uniform random             else                 sample an action  a i  according to  π i ( s i ( h ) )          h ∼ τ ( h , a )     return  β h     # 返回与叶节点 h 相关的 PBS \begin{aligned} &\pmb{function}\text{ REBEL-LINEAR-CFR-D }(\beta_r,\theta^v,\theta^\pi,D^v,D^\pi) \ \ \ \ \text{\# }\beta_r\text{ 是当前的 PBS}\\ &\ \ \ \ \text{while !IsTerminal}(\beta_r)\text{ do} \\ & \ \ \ \ \ \ \ \ G\leftarrow \text{ConstructSubgame}(\beta_r) \\ & \ \ \ \ \ \ \ \ \bar{\pi},\pi^{t_{warm}}\leftarrow \text{InitializePolicy}(G,\theta^\pi) \ \ \ \ \text{\# 如果没有 warm start ,则 :}t_{warm}=0, \pi^0\text{ 是均匀分布}\\ & \ \ \ \ \ \ \ \ G\leftarrow \text{SetLeafValues}(\beta_r,\pi^{t_{warm}},\theta^v) \\ & \ \ \ \ \ \ \ \ v(\beta_r)\leftarrow \text{ComputeEV}(G,\pi^{t_{warm}}) \\ & \ \ \ \ \ \ \ \ t_{sample}\sim \text{linear}\{t_{warm}+1,T\} \ \ \ \ \text{\# 迭代 t 的采样概率与 t 成正比}\\ & \ \ \ \ \ \ \ \ \text{for }t=(t_{warm}+1)..T\text{ do} \\ & \ \ \ \ \ \ \ \ \ \ \ \ \text{if }t=t_{sample}\text{ then} \\ & \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \beta'_r\leftarrow \text{SampleLeaf}(G,\pi^{t-1}) \ \ \ \ \text{\# 采样一个或多个叶 PBS}\\ & \ \ \ \ \ \ \ \ \ \ \ \ \pi^t\leftarrow\text{UpdatePolicy}(G,\pi^{t-1}) \\ & \ \ \ \ \ \ \ \ \ \ \ \ \bar{\pi}\leftarrow\frac{t}{t+1}\bar{\pi}+\frac{1}{t+1}\pi^t \\ & \ \ \ \ \ \ \ \ \ \ \ \ G\leftarrow\text{SetLeafValues}(\beta_r,\pi^t,\theta^v) \\ & \ \ \ \ \ \ \ \ \ \ \ \ v(\beta_r)\leftarrow\frac{t}{t+1}v(\beta_r)+\frac{1}{t+1}\text{ComputeEV}(G,\pi^t) \\ & \ \ \ \ \ \ \ \ \text{Add }\{\beta_r,v(\beta_r)\}\text{ to }D^v \ \ \ \ \text{\# 添加到训练值网络的数据中}\\ & \ \ \ \ \ \ \ \ \text{for }\beta\in G\text{ do} \ \ \ \ \text{\# 遍历 G 中每个公共状态的 PBS}\\ & \ \ \ \ \ \ \ \ \ \ \ \ \text{Add }\{\beta,\bar{\pi}(\beta)\}\text{ to }D^\pi \ \ \ \ \text{\# 添加到训练策略网络的数据中(可选)}\\ & \ \ \ \ \ \ \ \ \beta_r\leftarrow\beta'_r \\ &------------------\\ &\pmb{function}\text{ SetLeafValues}(\beta,\pi,\theta^v) \\ &\ \ \ \ \text{if IsLeaf}(\beta)\text{ then} \\ &\ \ \ \ \ \ \ \ \text{for }s_i\in\beta\text{ do} \ \ \ \ \text{\# 对与 }\beta\text{ 相关的每个内部状态} s_i\\ &\ \ \ \ \ \ \ \ \ \ \ \ v(s_i)=\hat{v}(s_i|\beta,\theta^v) \\ &\ \ \ \ \text{else} \\ &\ \ \ \ \ \ \ \ \text{for }a\in\mathcal{A}(\beta)\text{ do} \\ &\ \ \ \ \ \ \ \ \ \ \ \ \text{SetLeafValues}(\mathcal{T}(\beta,\pi,a),\pi,\theta^v) \\ &------------------ \\ &\pmb{function}\text{ SampleLeaf}(G,\pi) \\ &\ \ \ \ i^*\sim\text{unif}\{1,N\},h\sim\beta_r \ \ \ \ \text{\# 从根 PBS 中随机选取一个历史及一位玩家}\\ &\ \ \ \ \text{while !IsLeaf}(h)\text{ do} \\ &\ \ \ \ \ \ \ \ c\sim\text{unif}[0,1] \\ &\ \ \ \ \ \ \ \ \text{for }i=1..N\text{ do} \\ &\ \ \ \ \ \ \ \ \ \ \ \ \text{ if }i==i^*\text{ and }c<\epsilon\text{ then} \ \ \ \ \text{\# 训练时设置 }\epsilon=0.25\text{,测试时设置 }\epsilon=0\\ &\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \text{sample an action }a_i\text{ uniform random} \\ &\ \ \ \ \ \ \ \ \ \ \ \ \text{else} \\ &\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \text{sample an action }a_i\text{ according to }\pi_i(s_i(h)) \\ &\ \ \ \ \ \ \ \ h\sim \tau(h,a) \\ &\ \ \ \ \text{return }\beta_h \ \ \ \ \text{\# 返回与叶节点 h 相关的 PBS}\\ \end{aligned} function REBEL-LINEAR-CFR-D (βr,θv,θπ,Dv,Dπ)    βr 是当前的 PBS    while !IsTerminal(βr) do        GConstructSubgame(βr)        πˉ,πtwarmInitializePolicy(G,θπ)    如果没有 warm start ,则 twarm=0,π0 是均匀分布        GSetLeafValues(βr,πtwarm,θv)        v(βr)ComputeEV(G,πtwarm)        tsamplelinear{twarm+1,T}    迭代 t 的采样概率与 t 成正比        for t=(twarm+1)..T do            if t=tsample then                βrSampleLeaf(G,πt1)    采样一个或多个叶 PBS            πtUpdatePolicy(G,πt1)            πˉt+1tπˉ+t+11πt            GSetLeafValues(βr,πt,θv)            v(βr)t+1tv(βr)+t+11ComputeEV(G,πt)        Add {βr,v(βr)} to Dv    添加到训练值网络的数据中        for βG do    遍历 G 中每个公共状态的 PBS            Add {β,πˉ(β)} to Dπ    添加到训练策略网络的数据中(可选)        βrβrfunction SetLeafValues(β,π,θv)    if IsLeaf(β) then        for siβ do    对与 β 相关的每个内部状态si            v(si)=v^(siβ,θv)    else        for aA(β) do            SetLeafValues(T(β,π,a),π,θv)function SampleLeaf(G,π)    iunif{1,N},hβr    从根 PBS 中随机选取一个历史及一位玩家    while !IsLeaf(h) do        cunif[0,1]        for i=1..N do             if i==i and c<ϵ then    训练时设置 ϵ=0.25,测试时设置 ϵ=0                sample an action ai uniform random            else                sample an action ai according to πi(si(h))        hτ(h,a)    return βh    返回与叶节点 h 相关的 PBS

  • 其中, θ v \theta^v θv θ π \theta^\pi θπ 分别是策略网络与值函数网络的参数,这两个网络都用 MLP+GELU+LayerNorm 实现。

    • 前者的输入是 agent 的索引+公共状态的表征+infostate 的概率分布,输出是每个infostate对应的value构成的向量。
    • 后者(仅用于德州扑克)的输入额外增加 agent 的 pot size 分数与当前是否存在赌注的 flag,输出是每个infostate的所有合法行为的概率分布。
  • 算法求解以 β r \beta_r βr 为根的子博弈。求解过程中会随机采样新的叶子 PBS(确保值函数网络的准确性),生成新的子博弈后再次求解。

  • 子博弈是一个不完美信息博弈,采用 CFR-D 进行求解。CFR-D 会迭代 T 次,每次都会选择一个新的策略,然后更新子博弈叶子上的 value(用值函数网络更新)。CRF-D 会返回当前子博弈的期待策略与期待值。

  • CFR-D 得到的 { β r , v ( β r ) } \{\beta_r,v(\beta_r)\} {βr,v(βr)} { β r , π ˉ ( β r ) } \{\beta_r,\bar{\pi}(\beta_r)\} {βr,πˉ(βr)} 会被用于训练值函数网络与策略网络。

  • 策略的均值被定义为一个新策略: π ( s i ) = ( x i π 1 ( s i ) α ) π 1 ( s i ) + ( x i π 2 ( s i ) ( 1 − α ) ) π 2 ( s i ) x i π 1 ( s i ) α + x i π 2 ( s i ) ( 1 − α ) \pi(s_i)=\frac{(x_i^{\pi_1}(s_i)\alpha)\pi_1(s_i)+(x_i^{\pi_2}(s_i)(1-\alpha))\pi_2(s_i)}{x_i^{\pi_1}(s_i)\alpha+x_i^{\pi_2}(s_i)(1-\alpha)} π(si)=xiπ1(si)α+xiπ2(si)(1α)(xiπ1(si)α)π1(si)+(xiπ2(si)(1α))π2(si),这里 x i π 1 ( s i ) = Π t p ( a i t ) x_i^{\pi_1}(s_i)=\Pi_t p(a^t_i) xiπ1(si)=Πtp(ait)

  • 算法整体是一个 自我博弈 的过程,定理2表明算法经过迭代之后会得到一个误差不超过 C T \frac{C}{\sqrt{T}} T C 的值函数网络。

  • π ˉ \bar{\pi} πˉ 会收敛到纳什均衡。


定理

定理一,PBS 与 infostate value 之间的联系:
在二人零和博弈中,对任意 PBS β = ( β 1 , β 2 ) \beta=(\beta_1,\beta_2) β=(β1,β2) 和以 β \beta β 为根的子博弈的任意纳什均衡 π ∗ \pi^* π,有:
v 1 π ∗ ( s 1 ∣ β ) = V 1 ( β ) + g ˉ ⋅ s ^ 1 v_1^{\pi^*}(s_1|\beta)=V_1(\beta)+\bar{g}\cdot\hat{s}_1 v1π(s1β)=V1(β)+gˉs^1
其中 g ˉ \bar{g} gˉ V 1 ( β ) V_1(\beta) V1(β) 扩展到非归一化信念分布的超梯度, s ^ 1 \hat{s}_1 s^1 s 1 s_1 s1 方向上的单位向量。

二人零和博弈中,使用一个值函数网络生成 V 1 ( β ) V_1(\beta) V1(β) 即可。
证明
在引理1 与引理2 的基础上,计算 ∇ β 1 V 1 π ∗ ( s p u b , β 1 , β 2 ) \nabla_{\beta_1}V_1^{\pi^*}(s_{pub},\beta_1,\beta_2) β1V1π(spub,β1,β2) V 1 V_1 V1 的超梯度)并应用 V 1 V_1 V1 的定义即可。

利用 V ~ 1 π ∗ ( s p u b , β 1 , β 2 ) = V 1 π ∗ ( s p u b , β 1 / ∣ β 1 ∣ 1 , β 2 ) \tilde{V}_1^{\pi^*}(s_{pub},\beta_1,\beta_2)=V_1^{\pi^*}(s_{pub},\beta_1/|\beta_1|_1,\beta_2) V~1π(spub,β1,β2)=V1π(spub,β1/∣β11,β2),其中 ∣ β 1 ∣ 1 = 1 |\beta_1|_1=1 β11=1
Lemma 1.  Let  V 1 π 2 ( β )  be player 1’s value at  β  assuming that player 2 plays  π 2  in a 2p0s game.  V 1 π 2 ( β )  is linear in  β 1 . Lemma 2.  V 1 ( β ) = min ⁡ π 2 V 1 π 2 ( β ) , and the set of  π 2  that attain  V 1 ( β )  at  β 0  are precisely the Nash equilibrium policies at  β 0 .  This also implies that  V 1 ( β )  is concave. \begin{aligned} \pmb{\text{Lemma 1. }}&\text{Let }V_1^{\pi_2}(\beta)\text{ be player 1's value at }\beta\text{ assuming that player 2 plays }\pi_2\text{ in a 2p0s game. } \\ &V_1^{\pi_2}(\beta) \text{ is linear in }\beta_1. \\ \pmb{\text{Lemma 2. }}&V_1(\beta)=\min_{\pi_2} V_1^{\pi_2}(\beta)\text{, and the set of }\pi_2\text{ that attain }V_1(\beta)\text{ at }\beta_0\text{ are precisely the Nash equilibrium policies at }\beta_0\text{.} \\ &\text{ This also implies that }V_1(\beta)\text{ is concave.}\\ \end{aligned} Lemma 1. Lemma 2. Let V1π2(β) be player 1’s value at β assuming that player 2 plays π2 in a 2p0s game. V1π2(β) is linear in β1.V1(β)=π2minV1π2(β), and the set of π2 that attain V1(β) at β0 are precisely the Nash equilibrium policies at β0. This also implies that V1(β) is concave.

定理二, ReBel算法能够收敛到纳什均衡:
理想的值函数逼近器:为被采样的 PBS 返回 value 的最新样本,其他情况返回0。
在运行算法 1 时用到了 CFR 算法,该算法会迭代 T 次,子博弈借此为遇到的所有任意 PBS 构建出一个值函数逼近器,逼近器的误差不超过 C T \frac{C}{\sqrt{T}} T C,对应的策略为 C T \frac{C}{\sqrt{T}} T C-纳什均衡,其中 C 是一个与博弈相关的常数。

证明
只需要证明引理3 即可:
Lemma 3 . Running Algorithm 1 for  N → ∞  times in a depth-limited subgame rooted at PBS  β r  will compute an infostate value  vector  v i π ∗ ( β r )  corresponding to the values of the infostates when  π ∗  is played in the (not depth-limited) subgame rooted at  β r ,  where  π ∗  is a  C T -Nash equilibrium for some constant  C . \begin{aligned} &\pmb{\text{Lemma 3}}\text{. Running Algorithm 1 for }N\to\infin\text{ times in a depth-limited subgame rooted at PBS }\beta_r\text{ will compute an infostate value} \\ &\text{ vector }v_i^{\pi^*}(\beta_r)\text{ corresponding to the values of the infostates when }\pi^*\text{ is played in the (not depth-limited) subgame rooted at }\beta_r\text{, } \\ &\text{where }\pi^*\text{ is a }\frac{C}{\sqrt{T}}\text{-Nash equilibrium for some constant }C. \end{aligned} Lemma 3. Running Algorithm 1 for N times in a depth-limited subgame rooted at PBS βr will compute an infostate value vector viπ(βr) corresponding to the values of the infostates when π is played in the (not depth-limited) subgame rooted at βrwhere π is a T C-Nash equilibrium for some constant C.
当算法一不使用随机采样并且用递归的CFR-D算法取代神经网络时,与 CFR-D 算法是相似的。
设以 β r \beta_r βr 为根的子博弈一直延伸到总博弈的结尾,且不再使用神经网络,则 CFR 算法已经被证明可以达到 C T \frac{C}{\sqrt{T}} T C-纳什均衡 π ∗ \pi^* π,而算法一也确实可计算得到值向量 v i π ∗ ( β r ) v_i^{\pi^*}(\beta_r) viπ(βr),也就是说引理3 的基本情况是成立的。
假设:1、子博弈以 β r \beta_r βr 为根且其深度是有限的;2、在迭代 t ≤ T t\leq T tT 的每一个叶子 PBS β z π t \beta_z^{\pi^t} βzπt 上,我们已经计算出一个 infostate value 向量 v i π ∗ ( β z π t ) v_i^{\pi^*}(\beta_z^{\pi^t}) viπ(βzπt);3、引理 3 在所有叶子 PBS β z π T + 1 \beta_z^{\pi^{T+1}} βzπT+1 上成立。

v i π ∗ ( β z π t ) v_i^{\pi^*}(\beta_z^{\pi^t}) viπ(βzπt):在以 β z π t \beta_z^{\pi^t} βzπt 为根的子博弈上采用纳什均衡策略获得的 Infostate Value。

  • 对于那些拥有正的抵达概率却没有玩家抵达的叶子 PBS,它们的 value 并不会对 CFR 或者为根 infostate 计算的 value 产生影响,这是因为 CFR 是用玩家抵达的概率对 PBS 上的 value 进行加权的。
  • 现在我们考虑一个叶子 PBS β z π T + 1 \beta_z^{\pi^{T+1}} βzπT+1,其上被一些玩家以正的概率到达。
    后面只需要证明,如果 v i π ∗ ( β z π t ) v_i^{\pi^*}(\beta_z^{\pi^t}) viπ(βzπt) 能被计算出来,那么 v i π ∗ ( β z π ( T + 1 ) ) v_i^{\pi^*}(\beta_z^{\pi^(T+1)}) viπ(βzπ(T+1)) 也能被计算出来,并且前者对应的纳什均衡策略不会被破坏。
    因为 v i π ∗ ( β z π t ) v_i^{\pi^*}(\beta_z^{\pi^t}) viπ(βzπt) 已经被计算出来,并且我们正在运行的算法是已经被确定的。所以 v i π ∗ ( β z π t ) v_i^{\pi^*}(\beta_z^{\pi^t}) viπ(βzπt) 不会在算法一的后续调用中发生改变。(这里的后续调用指的是在每个 β z π t \beta_z^{\pi^t} βzπt 上的调用,其中 t ≤ T t\leq T tT)。
    也就是说, π t \pi^t πt 对所有 t ≤ T t\leq T tT 是相同的。
    因为算法一对随机 CFR 的迭代进行了采样,并且当采样到迭代 T+1 的时候,为某些玩家采样叶子 PBS β z π T + 1 \beta_z^{\pi^{T+1}} βzπT+1 的概率是正的。所以 算法会在 β z π T + 1 \beta_z^{\pi^{T+1}} βzπT+1 上采样 N’ 次,当 N → ∞ N\to\infin N N ′ → ∞ N'\to\infin N
    又因为引理3 在 β z π T + 1 \beta_z^{\pi^{T+1}} βzπT+1 上是成立的, v i π ∗ ( β z π T + 1 ) v_i^{\pi^*}(\beta_z^{\pi^{T+1}}) viπ(βzπT+1) 会在算法中被计算出来,
    根据 CFR-D 论文中的结论,引理3 在所有 β r \beta_r βr 上成立。

定理三,ReBel算法被直接用于测试时具有可靠性:
如果算法 1 在测试阶段没有其他外部策略,价值网络在任意叶 PBS 上的误差不超过 δ \delta δ,子博弈用 CFR 的 T 次迭代求解,那么该算法可以获得 ( δ C 1 + δ C 2 T ) (\delta C_1+\frac{\delta C_2}{\sqrt{T}}) (δC1+T δC2)-纳什均衡,其中 C1、C2 是与博弈相关的常数。

首先,考虑一个接近博弈结尾的没有叶节点的子博弈,显然 π ∗ \pi^* π k 1 T \frac{k_1}{\sqrt{T}} T k1-纳什均衡。( π ∗ \pi^* π 是在算法一中CFR期望使用的策略)
除所有T次迭代后得到的均值策略 π ˉ T \bar{\pi}^T πˉT 外,在 t ∼ u n i f o r m { 1 , T } t\sim uniform\{1,T\} tuniform{1,T} 中采样一个 t 的策略 π t \pi^t πt 也是一个 k 1 T \frac{k_1}{\sqrt{T}} T k1-纳什均衡。
接下来考虑深度有限的子博弈 G,如果根据 tabular CFR-D 计算 G 的策略,那么根据 CFR-D 论文中的定理2,所有迭代上的平均策略是 k 2 δ + k 3 T k_2\delta+\frac{k_3}{\sqrt{T}} k2δ+T k3-纳什均衡。
像前面一样,不仅均值策略,对于随机采样得到的 t 的策略 π t \pi^t πt 也是 k 2 δ + k 3 T k_2\delta+\frac{k_3}{\sqrt{T}} k2δ+T k3-纳什均衡。
因为博弈的回合数是有限的,所以算法一在测试中是按照 C 1 δ + C 2 T C_1\delta+\frac{C_2}{\sqrt{T}} C1δ+T C2-纳什均衡进行博弈的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/73926.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 当fork在for循环中的问题

以下代码会打印几个"A"&#xff1f; 例1.代码如下&#xff1a; int main(int argc, char* argv[],char* envp[]) { for(int i 0;i < 2; i ) { fork(); printf("A\n"); } exit(0); } 代码分析&#xff1a; //父进程for(int i …

算法笔试 java 输入输出练习

在线编程题刷题训练 所有答案 scancer函数的用法 输入输出总结top&#xff01;&#xff01;&#xff01;&#xff01; java如何调用函数&#xff08;方法&#xff09; java刷acm的各种输入输出 vscode配置java环境 子函数的调用&#xff0c;直接定义一个static子函数调用就…

gin的占位符:和通配符*

1、用法 在 Gin 路由中&#xff0c;可以使用一个通配符&#xff08;*&#xff09;或一个占位符&#xff08;:&#xff09;来捕获 URL 的一部分。 r.GET("/royal/:id", func(c *gin.Context) {id : c.Param("id")//fmt.Println("into :id")c.Str…

编译OpenCV问题解决:已经编译OpenCV成功之后无法运行测试代码

报错问题如下&#xff1a; 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2001 无法解析的外部符号 "void __cdecl cv::imshow(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class c…

【校招VIP】测试计划之黑盒测试白盒测试

考点介绍&#xff1a; 黑盒测试&白盒测试是大厂和三四线公司校招的必考点。黑盒是以结果说话&#xff0c;白盒往往需要理解实现逻辑。现在商业项目的接口测试往往以白盒为主&#xff0c;也就是需要测试同学自己观察和修改数据库的值进行用例的测试。 但是无论采用哪种测试方…

自然语言处理: 第七章GPT的搭建

自然语言处理: 第七章GPT的搭建 理论基础 在以transformer架构为框架的大模型遍地开花后&#xff0c;大模型的方向基本分成了三类分别是: decoder-only架构 , 其中以GPT系列为代表encoder-only架构&#xff0c;其中以BERT系列为代表encoder-decoder架构&#xff0c;标准的tr…

关于Java中synchronized的实现原理

并发编程的三个理念 原子性&#xff1a;一个操作要么全部完成&#xff0c;要么全部失败。可见性&#xff1a;当一个线程对共享变量进行修改后&#xff0c;其他线程也应立刻看到。有序性&#xff1a;程序按照顺序执行 synchronized基本使用 修饰静态方法&#xff0c;锁的是类…

时序预测 | Matlab实现基于RF随机森林的电力负荷预测模型

文章目录 效果一览基本介绍模型描述源码设计学习小结参考资料效果一览 基本介绍 时序预测 | Matlab实现基于RF随机森林的电力负荷预测模型 电力负荷预测是指通过对历史电力负荷数据分析,来预测未来某个时间段内的电力负荷需求。这项预测对于电力系统的运行和调度至关重要,可以…

【Echart地图】jQuery+html5基于echarts.js中国地图点击弹出下级城市地图(附完整源码下载)

文章目录 写在前面涉及知识点实现效果1、实现中国地图板块1.1创建dom元素1.2实现地图渲染1.3点击地图进入城市及返回 2、源码分享2.1 百度网盘2.2 123云盘2.3 邮箱留言 总结 写在前面 这篇文章其实我主要是之前留下的一个心结&#xff0c;依稀记得之前做了一个大屏项目的时候&…

【Sklearn】基于决策树算法的数据分类预测(Excel可直接替换数据)

【Sklearn】基于决策树算法的数据分类预测&#xff08;Excel可直接替换数据&#xff09; 1.模型原理1.1 模型原理1.2 数学模型 2.模型参数3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果 1.模型原理 决策树是一种基于树状结构的分类和回归模型&#xff0c;它通过一系列…

C++ QT(一)

目录 初识QtQt 是什么Qt 能做什么Qt/C与QML 如何选择Qt 版本Windows 下安装QtLinux 下安装Qt安装Qt配置Qt Creator 输入中文配置Ubuntu 中文环境配置中文输入法 Qt Creator 简单使用Qt Creator 界面组成Qt Creator 设置 第一个Qt 程序新建一个项目项目文件介绍项目文件*.pro样式…

【网络】传输层——UDP | TCP(协议格式确认应答超时重传连接管理)

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 现在是传输层&#xff0c;在应用层中的报文(报头 有效载荷)就不能被叫做报文了&#xff0c;而是叫做数…

【Sklearn】基于最中心分类器算法的数据分类预测(Excel可直接替换数据)

【Sklearn】基于最中心分类器算法的数据分类预测&#xff08;Excel可直接替换数据&#xff09; 1.模型原理2.模型参数3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果 1.模型原理 最近中心分类器&#xff08;Nearest Centroid Classifier&#xff09;也被称为近似最近邻…

若依框架浅浅介绍

由若依官网所给介绍可知 1、文件结构介绍 在ruoyi-admin的pom.xml文件中引入了ruoyi-framework、ruoyi-quartz和ruoyi-generatior模块&#xff0c;在ruoyi-framework的pom.xml文件中引入了ruoyi-system模块。 2、技术栈介绍 前端&#xff1a;Vue、Element UI后端&#xff1a…

xxljob搭建(内网穿透)

调度中心搭建 先从码云或者github上将项目拷贝到本地&#xff0c;选择最新的release分支拷贝下来的xxl-job-admin模块就是调度中心&#xff0c;我们需要做的有两点&#xff0c;第一点将doc/db/tables_xxl_job.sql执行&#xff0c;第二点修改xxl-job-admin的application.proper…

SAP Fiori 将GUI中的自开发报表添加到Fiori 工作台

1. 首先我们在workbench 中开发一个GUI report 这里我们开发的是一个简单的物料清单报表 2. 分配一个事务代码。 注意这里的SAP GUI for HTML 要打上勾 3. 创建语义对象&#xff08; Create Semantic Object&#xff09; 事物代码&#xff1a; path: SAP NetWeaver ->…

2. 获取自己CSDN文章列表并按质量分由小到大排序(文章质量分、博客质量分、博文质量分)(阿里云API认证)

文章目录 写在前面步骤打开CSDN质量分页面粘贴查询文章url按F12打开调试工具&#xff0c;点击Network&#xff0c;点击清空按钮点击查询是调了这个接口https://bizapi.csdn.net/trends/api/v1/get-article-score用postman测试调用这个接口&#xff08;不行&#xff0c;认证不通…

React源码解析18(6)------ 实现useState

摘要 在上一篇文章中&#xff0c;我们已经实现了函数组件。同时可以正常通过render进行渲染。 而通过之前的文章&#xff0c;beginWork和completeWork也已经有了基本的架子。现在我们可以去实现useState了。 实现之前&#xff0c;我们要先修改一下我们的index.js文件&#x…

nodejs+vue+elementui美食网站的设计与实现演示录像2023_0fh04

本次的毕业设计主要就是设计并开发一个美食网站软件。运用当前Google提供的nodejs 框架来实现对美食信息查询功能。当然使用的数据库是mysql。系统主要包括个人信息修改&#xff0c;对餐厅管理、用户管理、餐厅信息管理、菜系分类管理、美食信息管理、美食文化管理、系统管理、…

java内存模型JMM

Java内存模型的主要目标&#xff1a;定义程序中各个变量的访问规则&#xff0c;即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。 主内存&#xff1a;所有的变量都存储在主内存&#xff0c;且线程共享。 工作内存&#xff1a;每条线程私有&#xff0c;保存了…
最新文章