您的当前位置:首页正文

Monte Carlo Counterfactual Regret Minimization

2024-11-07 来源:个人技术集锦

虚拟遗憾最小化算法是基于时间步长的一个迭代过程,玩家们采取的策略集定义为( σ 1 t \sigma_1^t σ1t, σ 2 t \sigma_2^t σ2t),对于每个动作和信息集计算遗憾值。然后通过遗憾值最小化计算一个新的策略集( σ 1 t + 1 \sigma_1^{t+1} σ1t+1, σ 2 t + 1 \sigma_2^{t+1} σ2t+1)。为了达到近似纳什均衡,CFR算法需要记住一个关键,接近纳什均衡的策略是一个平均策略 σ ˉ T \bar\sigma^T σˉT;每次迭代后策略都会被更新,该算法对每个信息集上的每个行动保持表格式的累积遗憾,这决定了后续的策略。

采样虚拟遗憾

玩家i利用策略 σ \sigma σ的虚拟价值定义为
v i ( σ , I ) = ∑ z ∈ Z I π − i σ ( z [ I ] ) π σ ( z [ I ] , z ) u i ( z ) v_{i}(\sigma, I)={\sum_{z\in\Z_I}\pi_{-i}^{\sigma}(z[I]) \pi^\sigma(z[I], z)}u_i(z) vi(σ,I)=zZIπiσ(z[I])πσ(z[I],z)ui(z)
这个值代表了当到达信息集 I I I时的期望效用。虚拟遗憾值是没有选择策略 σ I → a t \sigma_{I\rightarrow a}^t σIat信息集 I I I中的动作 a a a而是遵循了另外的策略 σ i t \sigma_i^t σit。此时的遗憾值表示为
r t ( I , a ) = v i ( σ I → a t , I ) − v i ( σ t , I ) r^t(I,a) = v_{i}(\sigma_{I\rightarrow a}^t, I) - v_{i}(\sigma^t, I) rt(I,a)=vi(σIat,I)vi(σt,I)
蒙特卡洛CFR(MCCFR)的主要思想是重新定义虚拟价值和遗憾值的无偏估计,MCCFR仅仅采样了博弈树的一部分并且通过遗憾最小化对树进行采样,此时应用虚拟价值的估计值而不是真实值。由于估计值是无偏的,所以估计值接近期望的真实值。只要采样的方式合理,就可以很容易达到近似的均衡。

定义 Q = { Q 1 , Q 2 , . . . } \mathcal Q = \{Q_1,Q_2,...\} Q={Q1,Q2,...} Z Z Z的子集( ∪ Q ∈ Q Q ∈ Z \cup_{Q\in\mathcal Q}Q\in Z QQQZ) 。此时要注意 Q Q Q并不是一个partition因为我们并不要求 Q 1 ∩ Q 2 = ϕ Q_1\cap Q_2 = \phi Q1Q2=ϕ。我们称一个 Q i Q_i Qi为终端历史的一个块(block),并且集合 Q \mathcal Q Q是所有可能块的集合。在每一迭代轮次 t t t中,MCCFR首先通过一些采样规则采样出一个块 Q i Q_i Qi,并且每个块的抽样概率 q i > 0 q_i>0 qi>0。然后MCCFR计算每个信息集中的虚拟值和遗憾。使
q ( z ) = ∑ j : z ∈ Q j q j q(z) = \sum_{j:z\in Q_j}q_j q(z)=j:zQjqj
表示某些轮次迭代采样的块包含 z z z的概率。
采样时的虚拟值定义为:
v ~ i ( σ , I ∣ j ) = ∑ z ∈ Q j ∩ Z I 1 q ( z ) π − i σ ( z [ I ] ) π σ ( z [ I ] , z ) u i ( z ) \tilde{v}_{i}(\sigma, I \mid j)=\sum_{z \in Q_{j} \cap Z_{I}} \frac{1}{q(z)} \pi_{-i}^{\sigma}(z[I]) \pi^{\sigma}(z[I], z) u_{i}(z) v~i(σ,Ij)=zQjZIq(z)1πiσ(z[I])πσ(z[I],z)ui(z)
此时我们需要保证 q ( z ) > = δ > 0 q(z) >= \delta>0 q(z)>=δ>0。这里 δ \delta δ 是采样z的最低概率。
当交集 Q j ∩ Z I Q_j\cap Z_I QjZI为空,这个块没有包含 Z Z Z的任意历史状态,所以此时的v值为0。

定理1 v ~ i ( σ , I ∣ j ) \tilde{v}_{i}(\sigma, I \mid j) v~i(σ,Ij)的期望值等于原始CFR的value( v i ( σ , I ) v_{i}(\sigma, I) vi(σ,I)),证明见参考文献。
定理一表明: v ~ i ( σ , I ∣ j ) \tilde{v}_{i}(\sigma, I \mid j) v~i(σ,Ij) v i ( σ , I ) v_{i}(\sigma, I) vi(σ,I)的无偏估计。因此采样虚拟遗憾值为
r ~ t ( I , a ) = v ~ i ( σ I → a t , I ) − v ~ i ( σ t , I ) \tilde r^t(I,a) =\tilde v_{i}(\sigma_{I\rightarrow a}^t, I) -\tilde v_{i}(\sigma^t, I) r~t(I,a)=v~i(σIat,I)v~i(σt,I)
这与真实的遗憾值在期望上相匹配。

MCCFR的时间复杂度取决于所使用的抽样方案。例如,在CFR中,每次迭代的时间与游戏树的大小成线性关系。如果一个游戏在根处包含一个单一的机会节点,并且在每个结果下面有4个相同大小的树,那么一次机会抽样CFR迭代所花费的时间大约是CFR的四分之一。另一方面,每个MCCFR实例(包括CFR)都存储策略集,并且空间复杂度为 O ( ∣ C 1 ∣ + ∣ C 2 ∣ ) O(|C_1|+|C_2|) O(C1+C2)。当存储空间受到限制,可以使用抽象技术来减少内存消耗。

蒙特卡洛虚拟遗憾最小化伪代码

结果采样

在结果采样MCCFR中,每个块包含一个终端历史。在每次迭代中,我们采样一个终端历史,并只更新该历史中的每个信息集。采样概率, q j q_j qj指定了终端历史的分布。我们要使用一个采样策略集 σ ′ \sigma' σ表示这个分布,以便 q ( z ) = π σ ′ ( z ) q(z) = \pi^{\sigma'}(z) q(z)=πσ(z)。注意,任何采样策略的选择都会在块抽样概率 q ( z ) q(z) q(z)有一个特定的分布。
该算法对 z z z按照策略 σ ′ \sigma' σ采样,并存储 π σ ′ ( z ) \pi^{\sigma'}(z) πσ(z)。然后将单个历史向前遍历,计算每个玩家达到该历史每个前缀的概率 π i σ ( h ) \pi^{\sigma}_i(h) πiσ(h),向后计算每个玩家进行历史中剩余动作的概率 π i σ ( h , z ) \pi^{\sigma}_i(h,z) πiσ(h,z)。在向后遍历过程中,计算每个访问到的信息集的抽样反事实遗憾(并将其加到总遗憾中)。
当使用结果抽样时,有两种情况。要么 z [ I ] a z[I]a z[I]a z z z的前缀(在我们的抽样历史中,在 I I I采取了行动a),要么 z [ I ] a z[I]a z[I]a不是 z z z的前缀(即在信息集 I I I的时候,玩家没有采取动作a)。两种情况更新遗憾值的公式不同,具体如下所示:

外部采样

在外部抽样中,我们只对对手的行动和机会结点进行采样(在玩家以外的结点),对于对手结点和机会结点的纯策略,即从 I ∈ I C ∪ I N \ { i } I\in \mathcal I_C\cup \mathcal I_{N\backslash \{i\}} IICIN\{i} A ( I ) A(I) A(I)的每个确定性映射,都有一个block Q τ ∈ Q Q_\tau\in\mathcal Q QτQ。这个块的采样概率基于 f c 和 σ − i f_c和\sigma_{-i} fcσi的分布,所以 q τ = ∏ I ∈ I c σ c ( I , τ ( I ) ) ∏ I ∈ I N \ { i } σ − i ( I , τ ( I ) ) q_{\tau}=\prod_{I \in \mathcal{I}_{c}} \sigma_{c}(I, \tau(I)) \prod_{I \in \mathcal{I}_{N \backslash\{i\}}} \sigma_{-i}(I, \tau(I)) qτ=IIcσc(I,τ(I))IIN\{i}σi(I,τ(I))

if P(h) == i:
  # traverse all available actions, to illiminate influence of σ_i
  v[I] = {a: mccfr(h + [a], {**π_i, P(h): π_i[P(h)] * σ[t][I][a]}, i, t) for a in A[I]}
else:
  # sample one a from A[I]
  a = sample(A[I], σ[t][I])
  v[I][a] = mccfr(h + [a], {**π_i, P(h): π_i[P(h)] * σ[t][I][a]})

平均策略计算

当我们使用CFR算法时,能够接近均衡的策略实际上为 σ ˉ T \bar\sigma^T σˉT。如果我们的目标是计算一个近似的平衡,那么当所有的迭代都完成之后得到的策略集就即为平均策略。
平均策略定义为 σ ˉ i T ( I , a ) = ∑ t = 1 T π i σ t ( I ) σ t ( I , a ) ∑ t = 1 T π i σ t ( I ) , I ∈ I i \bar{\sigma}_{i}^{T}(I, a)=\frac{\sum_{t=1}^{T} \pi_{i}^{\sigma^{t}}(I) \sigma^{t}(I, a)}{\sum_{t=1}^{T} \pi_{i}^{\sigma^{t}}(I)}, I \in \mathcal{I}_{i} σˉiT(I,a)=t=1Tπiσt(I)t=1Tπiσt(I)σt(I,a),IIiCFR中,在每个信息集上仅为每个动作累积分子,当要计算平均策略时,维护的值可以被其他动作的策略值规范化。信息集 I I I中动作 a a a的平均策略增量为 π i σ t ( I ) σ t ( I , a ) \pi_i^{\sigma^t}(I)\sigma^t(I,a) πiσt(I)σt(I,a);在实验中,这个增量是由 h ∈ I h\in I hI的更小的增量 π i σ t ( h ) σ t ( I , a ) \pi_i^{\sigma^t}(h)\sigma^t(I,a) πiσt(h)σt(I,a)相加而成。也就是说,递归遍历是在游戏树而不是信息集树上。由于每次迭代都完成一幕,因此精确地计算了平均策略。
计算MCCFR中的平均策略通常不是很明确,因为每次迭代只访问了的一部分信息集。但是,平均策略的计算应该包含玩家T轮迭代中在那是如何行动的。

参考文献

[1]: MONTE CARLO SAMPLING AND REGRET MINIMIZATION FOR EQUILIBRIUM COMPUTATION AND DECISION-MAKING IN LARGE EXTENSIVE FORM GAMES
[2]: Monte Carlo Sampling for Regret Minimization in Extensive Games

Top