Files
2026-05-16 17:16:51 +08:00

175 lines
7.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 04-CFR-反事实后悔值最小化
draft: false
tags:
- CFR
- 反事实后悔值
- 博弈论
- 强化学习
---
如果说 DQN 和 PPO 是处理**单智能体**或**协同环境**(如游戏、机器人控制)的利器,那么 **CFR (Counterfactual Regret Minimization反事实后悔值最小化)** 则是处理**非完美信息博弈Imperfect Information Games**,如德州扑克、博弈论决策的顶级方法。
CFR 并不直接使用深度学习的梯度上升而是基于博弈论中的后悔值Regret概念进行迭代。
---
## 1. 核心背景:非完美信息博弈
在德州扑克中,你不知道对方的底牌,这被称为**非完美信息**。
- **信息集 (Information Set, $I$)** 玩家根据自己看到的信息无法区分的一组游戏状态。例如,在你的视角下,对手所有可能的底牌组合构成一个信息集。
- **策略 ($\sigma$)** 在信息集 $I$ 下采取动作 $a$ 的概率分布 $\sigma(I, a)$。
---
## 2. 数学基石:反事实后悔值 (Counterfactual Regret)
CFR 的核心在于:**“如果我当时做了另一个决定,现在会怎样?”** 这种对比产生的差值就是“后悔值”。
### 2.1 定义反事实价值 (Counterfactual Value)
定义 $v_i(\sigma, h)$ 为玩家 $i$ 在达到节点 $h$ 后的期望收益。
**反事实价值 $v_i(\sigma, I)$** 定义为:在玩家 $i$ 努力达到信息集 $I$,而其他玩家遵循策略 $\sigma$ 的前提下,达到 $I$ 后的期望收益。
$$v_i(\sigma, I) = \sum_{h \in I} \pi_{-i}^\sigma(h) v_i(\sigma, h)$$
其中 $\pi_{-i}^\sigma(h)$ 表示除了玩家 $i$ 以外的所有玩家(包括自然随机因素)达到节点 $h$ 的概率。
### 2.2 瞬时后悔值 (Immediate Regret)
在时间步 $t$,玩家 $i$ 在信息集 $I$ 下,由于没有采取动作 $a$ 而产生的瞬时后悔值为:
$$r_t(I, a) = v_i(\sigma_t|_{I \to a}, I) - v_i(\sigma_t, I)$$
其中:
- $\sigma_t|_{I \to a}$:在信息集 $I$ 强制选择动作 $a$(其余决策不变)后,遍历博弈树计算出的反事实价值
- $v_i(\sigma_t, I)$:遵循当前策略 $\sigma_t$ 到达 $I$ 后的期望收益
**物理意义:** 想象你在德州扑克中看到对手下注,此时如果你选择”跟注”能获得 5 分期望收益,而你的当前策略(跟注概率 30%)只给你带来 3 分期望收益,那么选择跟注的瞬时后悔值就是 $5 - 3 = 2$。正值表示”早知道选 $a$ 就好了”。
### 2.3 累积后悔值 (Cumulative Regret)
这是 CFR 训练的核心指标:
$$R_T^i(I, a) = \sum_{t=1}^T r_t(I, a)$$
---
## 3. CFR 算法逻辑:后悔匹配 (Regret Matching)
CFR 的训练过程就是一个不断更新累积后悔值,并根据它调整策略的过程。
### 3.1 策略更新公式
在第 $T+1$ 次迭代中,信息集 $I$ 采取动作 $a$ 的概率与该动作的**正累积后悔值**成正比:
$$\sigma_{T+1}(I, a) = \begin{cases} \frac{R_T^i(I, a)^+}{\sum_{a' \in A(I)} R_T^i(I, a')^+} & \text{if denominator} > 0 \\ \frac{1}{|A(I)|} & \text{otherwise} \end{cases}$$
其中 $x^+ = \max(0, x)$。
**直觉:** 哪种动作过去让你越后悔没选,下一次选它的概率就越大。
---
## 4. 训练全过程 (Training Flow)
CFR 是一个迭代算法通过数万次甚至数亿次的自我博弈Self-play来逼近 **纳什均衡 (Nash Equilibrium)**
1. **初始化:** 将所有信息集下的所有动作的累积后悔值 $R$ 和累积策略 $S$ 设为 0。
2. **迭代:** 每一个 Epoch 进行以下操作:
- **深度优先搜索 (DFS)** 遍历博弈树。
- **计算收益:** 到达叶子节点时返回实际收益。
- **回溯计算:**
- 计算每个节点的反事实价值 $v_i(\sigma, I)$。
- 计算每个动作的瞬时后悔值 $r_t(I, a)$。
- 更新累积后悔值:$R_T^i(I, a) \leftarrow R_{T-1}^i(I, a) + r_t(I, a)$。
- 更新累积策略:$S_T(I, a) \leftarrow S_{T-1}(I, a) + \pi_i^\sigma(I) \cdot \sigma_t(I, a)$。
3. **最终输出:** 训练结束后的策略不是最后一次迭代的策略 $\sigma_T$,而是**平均策略**
$$\bar{\sigma}_T(I, a) = \frac{S_T(I, a)}{\sum_{a'} S_T(I, a')}$$
---
## 5. 为什么 CFR 能成功?(数学保证)
### 5.1 后悔值下限保证
CFR 最著名的特性是:**外部后悔值External Regret以 $O(\sqrt{T})$ 速度趋于零**。
**外部后悔值定义:** 在 $T$ 次迭代中,玩家选择策略 $\sigma^t$ 而非最优固定策略 $\sigma^*$ 的累积后悔:
$$R_T^{ext} = \frac{1}{T} \max_{\sigma^*} \sum_{t=1}^T \left[ u_i(\sigma^*, \sigma_{-i}^t) - u_i(\sigma^t, \sigma_{-i}^t) \right]$$
**关键定理(后悔值下界):** 若玩家按后悔匹配规则更新策略,则:
$$R_T^{ext} \leq \frac{2 |A_{\max}|}{\sqrt{T}}$$
其中 $|A_{\max}|$ 为最大信息集的动作数。这由黑利Hoeffding不等式推导出。
### 5.2 从外部后悔到纳什均衡
**定理 5.1folk theorem 推论):** 在双人零和博弈中,若所有玩家的外部后悔值 $R_T^{ext} \to 0$,则平均策略 $\bar{\sigma}_T$ 收敛至 $\epsilon$-纳什均衡,其中 $\epsilon = \max_i R_T^{ext}$。
**直觉解释:** 外部后悔值衡量的是"如果我始终坚持最佳单一策略,能比现在多好多少"。当这个值趋近于零时,意味着没有任何单一策略能显著改善我的表现——这正是纳什均衡的定义:没有玩家能通过单方面改变策略而获益。
### 5.3 收敛速度分析
CFR 的收敛是**次线性**的($O(1/\sqrt{T})$),这意味着:
- 前 100 次迭代:后悔值下降快
- 后 10000 次迭代:后悔值仍在缓慢下降,但收益改善微弱
- 工程实践中,德州扑克通常需要数百万次迭代才能达到人类高手水平
**实际例子:** 在双人无限注德州扑克中,使用 CFR+ 结合蒙特卡洛采样Pluribus 在 8 天内训练完成,并在六人桌击败了人类顶尖选手。
---
## 6. 可能出现的问题与进阶方案
### 6.1 状态爆炸
对于像无限额德州扑克这样的游戏,状态空间是 $10^{161}$,无法遍历整个博弈树。
- **解决方案Deep CFR。** 用神经网络来拟合后悔值 $R$ 和策略 $\sigma$。这就是 Libratus 和 Pluribus 等击败人类顶尖高手的 AI 核心。
### 6.2 遍历效率低
标准的 CFR 每次迭代要走遍整棵树。
- **改进MCCFR (Monte Carlo CFR)。** 每次迭代只采样博弈树的一条或几条分支,极大地提高了处理大型博弈的速度。
### 6.3 负后悔值的处理
有些动作可能长期处于极度负后悔状态。
- **改进CFR+。** 将负后悔值直接截断为 0并使用线性加权平均收敛速度比原版 CFR 快得多。
---
## 7. 总结DQN/PPO vs CFR
- **DQN/PPO** 适合动作与状态明确、非对抗或对抗性不强的环境。在非完美信息博弈(如德扑)中容易被对手针对,因为它不具备“博弈稳定性”。
- **CFR** 专为博弈设计。它追求的是“不可被击败性”(纳什均衡),无论对手怎么打,它都能保持最优。
> **下章预告:**
>
> 既然已经聊到了博弈和策略优化,如果你对如何将深度学习与 CFR 结合感兴趣,我们可以深入探讨 **Deep CFR** 或者是将 PPO 用于多智能体竞争环境的 **MAPPO**