自对弈与AlphaZero
自对弈(Self-Play)让智能体自己充当对手,在与”过去的自己”不断较量中形成”生成数据—提升能力—再生成更强数据”的自我进化闭环,是 AlphaZero、MuZero 等达到超人水平的核心机制。近年来,自对弈的思想更从棋类博弈延伸到了数学推理(AlphaProof)、语言模型自我改进(SPIN、Self-Play RLHF)等领域,成为推动通用推理能力的重要范式。
从博弈论角度看,自对弈是一种自我博弈(self-play game)的特殊形式:智能体在同一环境中同时充当学习者和环境的一部分,对手策略 π_opp 与自身策略 π_θ 耦合演化。这与标准的马尔可夫决策过程(MDP,一种用状态 S、动作 A、转移概率 P、奖励 R 来建模序贯决策问题的数学框架)不同——在 MDP 中环境是固定且外生的,而在自对弈中,环境的转移概率本身就受对手策略影响,因此严格来说应建模为随机博弈(Stochastic Game)或部分可观测随机博弈(POSG)。当对手恰为自身的历史版本时,问题退化为一种特殊的自回归式学习。
想象一个孤独的棋手在房间里自己摆棋:今天白方走出一手妙棋,明天黑方学会破解,后天白方又找到更强的应对。对弈双方就像左手和右手在互相切磋,每一局都会暴露某一方的弱点,而弱点一旦被修补,下一局对手就会更难对付。如此循环,棋力便会螺旋上升。自对弈的关键正是这种”对手水平随自己一起变强”的闭环——它不依赖任何人类棋谱,完全从零开始把自身当作永不枯竭的训练环境。
自对弈的基本闭环
Section titled “自对弈的基本闭环”传统强化学习依赖一个固定的环境或对手,而自对弈把”对手”设为智能体自身的历史版本。最朴素的做法是让当前策略 π 与其某个快照 π_old 对弈,产生的对局数据反过来训练 π,从而得到更强的 π’。只要保证对手随时间变强(例如定期用最新策略更新对手快照、或按一定概率采用历史版本,避免陷入”只赢弱对手”的退化),整个系统就会形成自我提升的正反馈。
这种闭环天然提供了课程学习(Curriculum Learning,一种由易到难逐步安排训练样本的策略,让模型先学简单模式再挑战复杂模式):早期双方都很弱,对局质量差但容易探索;随着能力提升,对手也变强,难度随之上升。同时它解决了环境来源问题——只要有规则,就能无限生成训练样本,这也是 AlphaZero 摆脱人类棋谱的根本原因。
形式化地,自对弈的目标是最大化期望回报:
其中 是折扣因子(discount factor,衡量未来奖励相对于即时奖励的重要程度), 是一条对局轨迹,回报 。由于 π_old 也来自 θ 的历史版本,这是一个非平稳(non-stationary)优化问题——对手在不断变化,使得训练信号的分布持续漂移,这也是自对弈训练不稳定的主要原因之一。
AlphaZero:从零学习的统一框架
Section titled “AlphaZero:从零学习的统一框架”AlphaZero 在围棋、国际象棋、将棋三项棋类上均超越人类顶尖水平,其贡献在于把蒙特卡洛树搜索(MCTS)与深度神经网络结合,并完全用自对弈驱动训练,不需要任何人类专家数据。
AlphaZero 用一个统一的神经网络 f_θ 同时输出策略与价值:输入棋盘状态 s,输出策略向量 p = f_θ^p(s)(各走法的概率)与标量价值 v = f_θ^v(s)(当前局面的胜率估计)。搜索时不再像 AlphaGo 那样做随机 rollout,而是直接用神经网络的价值头评估叶子节点,使搜索更深更准。
损失函数采用策略损失、价值损失与 L2 正则化项的组合:
其中 为交叉熵损失(逼近 MCTS 改进策略), 为均方误差(逼近真实胜负), 是经树搜索改进后的策略分布, 是实际胜负结果, 是正则化系数。这个设计的关键在于让网络去”模仿”自己更强的搜索结果——相当于以 MCTS 为教师进行知识蒸馏。
MCTS 的四步流程在 AlphaZero 中表现为:
- 选择(Selection):从根节点出发,用 PUCT(Predictor + UCB applied to Trees,一种将神经网络的先验概率与经典 UCB 探索公式结合的节点选择准则)公式逐层挑选子节点,直到到达尚未充分展开的叶子。PUCT 形如 ,其中 Q 是动作价值(多次访问的平均回报),P 是神经网络给出的先验概率,N 是访问次数,c 是探索常数。该公式在”利用高价值动作”与”探索神经网络推荐的高概率动作”之间取得平衡——当某动作访问次数 N(s,a) 很小时,分母项趋大,鼓励探索;随着访问增多,该项递减,转为利用 Q 值。
- 扩展(Expansion):在叶子节点上展开合法走法,用网络给出的先验概率 P 初始化新节点。
- 评估(Evaluation / 模拟):不再做随机 rollout 到终局,而是直接读取神经网络的胜率输出 v 作为该叶子的价值估计。
- 回溯(Backup):把 v 沿搜索路径反向传播,更新沿途节点的访问次数 N 和动作价值 Q(取多次访问的平均)。具体地,对路径上的每条边 :,。
经过若干次(如 800 次)模拟后,根节点处各动作的访问次数分布即构成”增强后的策略” π,它比网络原始输出更强。实际落子按 π 采样,整局结束后以胜负结果作为真实价值标签。
训练循环为:自我对弈生成对局 → 每步记录 (状态 s, MCTS 改进策略 π, 最终胜负 z) → 用这些数据训练网络,使其策略逼近 π、价值逼近 z,并加 L2 正则化。网络变强后,MCTS 的先验与评估更准,下一轮对弈质量更高,如此不断迭代。
MuZero:在”想象”的世界中学习
Section titled “MuZero:在”想象”的世界中学习”MuZero 进一步突破了”必须知道游戏规则”的限制。它不接收环境的转移函数,而是学习一个隐式世界模型,在学到的内部状态空间中规划。该模型由三个函数组成:
- 表示函数(Representation):把真实观测 o(如棋盘或 Atari 像素)编码为抽象状态 s。
- 动态函数(Dynamics):给定抽象状态 s 与动作 a,预测下一抽象状态 s’ 与即时奖励 r,相当于学到的环境规则。
- 预测函数(Prediction):在抽象状态上输出策略 p 与价值 v,作用与 AlphaZero 的网络相同。
MuZero 在训练时,既用真实对弈数据,也通过动态函数在”想象”中展开多步进行 MCTS 规划,把价值估计回传以训练三个函数。其核心损失包含三项:
其中 k 索引想象展开的第 k 步, 是该步的 MCTS 改进策略, 是经 n-step 校正的目标价值, 是真实观测到的奖励。由于不依赖已知规则,它同一套算法既能下围棋、国际象棋,又能玩 Atari 视频游戏,是迈向通用规划的重要一步。更多规划思想可参考 蒙特卡洛方法。
不完全信息博弈中的自对弈:扑克与五星
Section titled “不完全信息博弈中的自对弈:扑克与五星”在扑克、五星(Pluribus 即是六人无限注德州扑克的 AI)等不完全信息博弈中,玩家看不到对手的私有信息(手牌),直接套用完全信息的 MCTS 会泄漏不该知道的信息。该领域常用两类方法:
- Fictitious Self-Play(虚拟自对弈,FSP):假设对手的策略是其历史动作的平稳分布,智能体针对这一”平均对手”计算最优响应;随着双方不断更新自己的平均策略,系统在博弈论意义下收敛到纳什均衡。深度化版本(Deep FPL、NFSP)用神经网络逼近平均策略与最优响应,在有限注德州扑克 Leduc 等博弈上取得接近均衡的解。
- ReBeL(Recursive Belief-based Learning):把**信念(belief,对当前隐藏信息的概率分布)**作为状态的一部分,在信念空间上做类似 MCTS 的搜索;每次到达新的信息集时用价值网络评估,并通过”公开牌”等可观测事件划分信息集,避免信息泄漏。ReBeL 在有限注德州扑克 Heads-Up 上达到超人水平,并能在更广的博弈类目上扩展。
Pluribus 则结合了自对弈产生的策略与在线搜索,在六人桌击败人类职业选手,展示了自对弈在多智能体、大规模博弈上的可行性。多智能体场景的更一般讨论见 多智能体强化学习。
自对弈与数学推理:AlphaProof(2024)
Section titled “自对弈与数学推理:AlphaProof(2024)”2024 年 DeepMind 发布的 AlphaProof 将自对弈思想从棋类迁移到了数学定理证明领域,在国际数学奥林匹克竞赛(IMO)中达到银牌水平。其核心思路是把数学证明建模为 Lean 语言中的形式化推理过程,并在此空间中执行自对弈强化学习。
AlphaProof 的训练流程可以分为两步:
- 形式化预训练:利用 Gemini 等大语言模型将自然语言数学问题翻译为 Lean 4 形式化命题(formal problem),并预训练一个能提出证明步骤的策略网络。这一步依赖**形式验证(formal verification,用计算机可检查的逻辑系统严格验证数学证明的正确性)**来确保每一步推理无懈可击。
- 自对弈强化学习:策略网络在已证明的定理库上不断”练习”——它尝试证明命题,Lean 内核充当裁判判定对错,产生的成功证明作为新的训练数据反哺网络。这与 AlphaZero 的自对弈闭环高度同构:搜索对应于在证明空间中的探索,MCTS 的价值头对应于对”该中间状态是否可证”的估计。
这一范式之所以重要,在于数学证明天然提供了可验证奖励(verifiable reward)——Lean 编译器要么接受证明要么拒绝,不存在模糊的主观评分。这消除了奖励模型(reward model)的偏差问题,使强化学习信号极其干净。AlphaProof 与同期工作 AlphaGeometry 2(几何定理证明)一道,证明了自对弈可以驱动数学推理能力的突破。
自对弈在语言模型训练中的兴起:SPIN 与 Self-Play RLHF
Section titled “自对弈在语言模型训练中的兴起:SPIN 与 Self-Play RLHF”自对弈在**大语言模型(LLM)**领域的迁移是 2024 年最活跃的研究方向之一。核心思路是:让 LLM 自己生成数据来训练自己更强的版本,形成类似 AlphaZero 的自我进化闭环。
-
SPIN(Self-Play Fine-Tuning,自对弈微调):将同一个 LLM 的当前版本(π_θ)作为”学习者”,其历史快照(π_old)作为”生成者”。生成器产出候选回复,学习者需要区分”人类真实回复”与”自身生成的回复”,即训练一个二分类目标:
其中 是 sigmoid 函数, 是人类回复, 是模型自身生成的回复。当学习者无法再区分真实与生成数据时,训练收敛——此时模型分布已逼近目标分布。SPIN 的优势在于不需要额外的奖励模型或人类偏好标注,仅凭一个 SFT(监督微调)起始模型即可自我提升。
-
SPAG(Self-Play Argument Generation)与辩论式自对弈:让 LLM 分饰”正方”与”反方”展开辩论,通过论证与反驳发现自身推理的薄弱环节。这种方法天然适用于**红队测试(Red Teaming,通过主动攻击来发现模型安全漏洞和对齐缺陷的技术)与对齐(alignment,使 AI 行为符合人类价值观和意图的技术)**场景。
-
Self-Play RLHF:将传统 RLHF(基于人类反馈的强化学习)中的奖励模型与策略模型设为同一 LLM 的两个角色,一个负责生成回复、另一个负责评分,二者交替提升。这种设计省去了独立训练奖励模型的开销,并缓解奖励黑客(reward hacking,策略利用奖励模型的漏洞获取高分而非真正完成任务)问题。
这些方法共同体现了自对弈的本质——以自身为永不枯竭的训练环境,利用可验证信号或自我对抗驱动能力提升。更多 LLM 对齐的背景可参考 RLHF 与 LLM 训练。
下面是一个极简的自对弈训练循环框架(伪环境接口,演示闭环结构):
import numpy as np
def self_play_train(net, env, iters=100, games=80, sims=200): """极简自对弈训练循环:自我对弈 → 收集数据 → 训练网络""" for it in range(iters): buffer = [] # 经验回放池,存放 (状态, 策略, 最终价值) for _ in range(games): states, pis, player = [], [], 1 s = env.reset() done = env.is_done() while not done: # 用 MCTS + 神经网络得到改进后的策略分布 pi = mcts_search(s, net, simulations=sims) a = np.random.choice(len(pi), p=pi) # 按策略采样落子 states.append(s); pis.append(pi) s = env.step(a); done = env.is_done() winner = env.winner() # 1 表示先手胜, -1 表示后手胜 # 从"当前执子方"视角赋价值,先手记录 winner,后手记录 -winner values = [winner if (i % 2 == 0) else -winner for i in range(len(states))] buffer += list(zip(states, pis, values)) np.random.shuffle(buffer) net.train(buffer) # 最小化策略损失 + 价值损失 + L2 正则 return net- 防止策略退化:对手若固定不变,智能体容易过拟合到一个弱对手,应定期用最新策略刷新对手快照,或从历史版本池中采样对手。具体而言可采用 EFB(Elo-based Fictitious Battle) 策略——按 Elo 积分将历史版本分桶,从与自身积分最接近的桶中采样对手。
- 探索与多样性:落子时按 MCTS 访问次数分布采样而非总取 argmax,必要时加狄利克雷噪声注入根节点先验,避免对局千篇一律。具体做法是在根节点的先验概率上叠加噪声:,其中 ,典型取 (围棋)。
- 数据价值来自”接近均衡”:双方实力过于悬殊的对局信息量很低,应让对手与自身水平相近,或采用留一/分桶匹配,保证对局质量。
- MCTS 模拟次数与算力权衡:模拟次数越多策略越强但越慢;训练阶段可适当降低,测试/实战再加大。
- 价值标签的视角:记录价值时要换算到每一步的执子方视角,否则先后手的价值符号会错乱。
- 不完全信息博弈的信念管理:必须严格区分”已知”与”私有”信息,搜索在信息集/信念上展开,绝不能让搜索过程偷看对手私有信息。
- 复用基础设施:自对弈天然可并行——多进程/多机各自生成对局,再汇总训练,是规模化训练的关键。配合 PyTorch 训练指南 可快速搭建分布式训练。
- 奖励缩放与归一化:不同游戏阶段的奖励尺度可能差异巨大(如围棋终局 ±1 vs Atari 每步分数变化),应将价值目标归一化到合理范围(如 tanh 压缩到 [-1,1]),避免梯度爆炸。
- LLM 自对弈中的模式坍缩:在 SPIN 等方法中,若生成器与学习者的多样性不足,模型可能迅速坍缩到单一回复风格。应配合温度采样、top-p 多样化生成,以及经验回放池(replay buffer)中的新旧数据混合训练来缓解。
- 可验证奖励的优先性:在数学推理、代码生成等场景中,应优先利用编译器/形式验证器提供的二元奖励信号,而非主观的 LLM 评分——后者容易引入奖励偏差。
- AlphaZero / AlphaZero General:从零自学围棋、国际象棋、将棋,统一了 MCTS 与深度网络的自对弈范式;开源复现版(如 AlphaZero General)让爱好者能在小棋盘上重现。
- MuZero:在围棋、象棋、将棋之外,首次用同一套算法在 Atari 59 个游戏上达到 SOTA,证明了”无已知规则”世界模型规划的可行性。
- Pluribus(Facebook AI):六人无限注德州扑克 AI,结合自对弈策略与有限搜索,击败人类职业选手,是多智能体大规模博弈的里程碑。
- ReBeL:基于信念搜索的自对弈,在双人有限注德州扑克 Heads-Up 达到超人水平。
- 电子竞技与游戏 AI:星际争霸 II(AlphaStar)、Dota 2(OpenAI Five)等均以自对弈为核心训练手段,先模仿人类再纯自对弈超越。
- AlphaProof(2024,DeepMind):将自对弈应用于数学定理证明,在 Lean 4 形式化系统中通过强化学习训练策略网络,在 IMO 中达到银牌水平。这是自对弈从博弈走向科学推理的重要里程碑。
- AlphaGeometry 2(2024):结合神经语言模型与符号推理引擎,通过自对弈式合成数据训练解决几何证明问题,在 IMO 几何题上超越人类金牌得主平均水平。
- SPIN / Self-Play Fine-Tuning:无需额外奖励模型,仅凭 LLM 自身生成数据实现自我提升,已在 Alpaca、Llama 等模型上验证有效,成为低成本对齐训练的热门方法。
- 大模型推理自对弈(Reasoning Self-Play):2024–2025 年,DeepSeek-R1、OpenAI o1 等推理模型利用可验证奖励(数学题有标准答案、代码可通过测试)进行自对弈强化学习,在不依赖人类示范的情况下大幅提升链式推理(chain-of-thought)能力。
- 大模型对齐中的辩论与自改进:自对弈思想也延伸到 LLM 的红队对抗、辩论式对齐,用于发现并修补模型缺陷,见 RLHF 与 LLM 训练。
- 机器人与自动驾驶中的自对弈模拟:在难以收集真实数据的危险场景(如自动驾驶紧急避障),自对弈生成对抗性交通参与者来训练更鲁棒的驾驶策略,参见 世界模型。
- 芯片设计与编译优化:Google 的芯片布局(chip placement)将设计过程建模为强化学习问题,通过自对弈探索布局空间,产出的芯片面积、功耗、性能指标优于人类工程师。
典型类库与工具
Section titled “典型类库与工具”| 类库 | 语言 | 说明 |
|---|---|---|
| AlphaZero General | Python | 简洁的 AlphaZero 复现框架,适配任意双人对弈环境,适合学习 |
| PettingZoo | Python | 多智能体环境接口标准,提供棋类、扑克、Atari 等自对弈场景 |
| OpenSpiel | Python / C++ | DeepMind 出品,内置扑克、棋类等大量博弈环境与搜索、自对弈算法 |
| Ray RLlib | Python | 分布式强化学习库,支持自对弈调度、大规模多进程数据采集 |
| Gymnasium | Python | 单智能体环境标准接口,常用于 MuZero 在 Atari 上的实验 |
| Kaggle Environments | Python | ConnectX、Halite 等 Kaggle 竞赛环境,便于组织自对弈对抗 |
| 术语 | 英文 | 解释 |
|---|---|---|
| 自对弈 | Self-Play | 智能体以自身或自身历史版本为对手进行训练的范式 |
| 蒙特卡洛树搜索 | Monte Carlo Tree Search (MCTS) | 通过选择、扩展、模拟、回溯四步构建搜索树的规划方法 |
| PUCT | Predictor + UCB applied to Trees | AlphaZero 用于选择节点的公式,结合动作价值与网络先验概率 |
| 策略网络 | Policy Network | 输出各动作概率分布的网络,用于引导搜索与落子 |
| 价值网络 | Value Network | 估计局面胜率或回报的网络,用于评估叶子节点 |
| 信念 | Belief | 在不完全信息博弈中对隐藏状态的概率分布 |
| 虚拟自对弈 | Fictitious Self-Play (FSP) | 假设对手为历史平均策略、计算最优响应并收敛到纳什均衡的方法 |
| 表示函数 | Representation Function | MuZero 中把真实观测编码为抽象状态的函数 |
| 动态函数 | Dynamics Function | MuZero 中预测下一抽象状态与奖励的函数,相当于学到的环境规则 |
| 信息集 | Information Set | 不完全信息博弈中,玩家无法区分的所有真实状态的集合 |
- Silver, D. et al. A general reinforcement learning algorithm that masters chess, shogi, and Go through self-play (Science, 2018) — AlphaZero 原始论文。
- Schrittwieser, J. et al. Mastering Atari, Go, chess and shogi by planning with a learned model (Nature, 2020) — MuZero 原始论文。
- Brown, N. & Sandholm, T. Superhuman AI for multiplayer poker (Science, 2019) — Pluribus 论文。
- Brown, N. et al. Combining Deep Reinforcement Learning and Search for Imperfect-Information Games (NeurIPS, 2020) — ReBeL 论文。
- Heinrich, J. & Silver, D. Deep Reinforcement Learning from Self-Play in Imperfect-Information Games (arXiv, 2016) — NFSP 论文。
- 站点内相关:强化学习总览、强化学习里程碑、高级强化学习、蒙特卡洛方法。