虚拟遗憾最小化算法是基于时间步长的一个迭代过程,玩家们采取的策略集定义为( σ 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)=z∈ZI∑π−iσ(z[I])πσ(z[I],z)ui(z)
这个值代表了当到达信息集
I
I
I时的期望效用。虚拟遗憾值是没有选择策略
σ
I
→
a
t
\sigma_{I\rightarrow a}^t
σI→at信息集
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(σI→at,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
∪Q∈QQ∈Z) 。此时要注意
Q
Q
Q并不是一个partition因为我们并不要求
Q
1
∩
Q
2
=
ϕ
Q_1\cap Q_2 = \phi
Q1∩Q2=ϕ。我们称一个
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:z∈Qj∑qj
表示某些轮次迭代采样的块包含
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(σ,I∣j)=z∈Qj∩ZI∑q(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
Qj∩ZI为空,这个块没有包含
Z
Z
Z的任意历史状态,所以此时的v值为0。
定理1
v
~
i
(
σ
,
I
∣
j
)
\tilde{v}_{i}(\sigma, I \mid j)
v~i(σ,I∣j)的期望值等于原始CFR的value(
v
i
(
σ
,
I
)
v_{i}(\sigma, I)
vi(σ,I)),证明见参考文献。
定理一表明:
v
~
i
(
σ
,
I
∣
j
)
\tilde{v}_{i}(\sigma, I \mid j)
v~i(σ,I∣j)是
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(σI→at,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\}} I∈IC∪IN\{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τ=I∈Ic∏σc(I,τ(I))I∈IN\{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),I∈IiCFR中,在每个信息集上仅为每个动作累积分子,当要计算平均策略时,维护的值可以被其他动作的策略值规范化。信息集
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
h∈I的更小的增量
π
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