跳转到内容

MCTS 与 AlphaZero

蒙特卡洛树搜索用 UCT 平衡探索利用;AlphaZero 用神经网络的策略与价值引导搜索,再用搜索结果训练网络。本章讲 PUCT、自博弈训练循环,以及"搜索 = 策略改进、训练 = 策略评估"的 GPI 解读。

蒙特卡洛树搜索(MCTS)在当前状态反复模拟未来,增量构建一棵搜索树。每次模拟经过四个阶段:

  1. 选择:从根出发,用树内统计量选择子节点,直到到达叶节点;
  2. 扩展:为叶节点创建子节点;
  3. 评估:用 rollout(随机走到终局)或价值估计得到该节点的回报;
  4. 反向传播:把回报沿路径回传,更新沿途每个节点的访问计数 NN 与价值均值 QQ。

重复模拟数千次后,根节点的子节点统计就近似了一个搜索后的策略:访问次数越多,说明搜索越相信该动作好。

树内选择用 UCT(UCB for Trees)平衡"利用高价值分支"与"探索低访问分支":

UCT(s,a)=Q(s,a)N(s,a)+c log⁡N(s)N(s,a).\text{UCT}(s, a) = \frac{Q(s,a)}{N(s,a)} + c\, \sqrt{\frac{\log N(s)}{N(s,a)}}.

AlphaZero 用 PUCT 替代 UCT:把神经网络的先验策略 p(s,a)p(s, a) 加进探索项,

PUCT(s,a)=Q(s,a)+cpuct p(s,a) N(s)1+N(s,a).\text{PUCT}(s, a) = Q(s, a) + c_{\text{puct}}\, p(s, a)\, \frac{\sqrt{N(s)}}{1 + N(s,a)}.

先验高但没怎么搜过的动作自动获得探索配额——搜索不再从零开始,而是在网络的判断基础上做改进。这是 AlphaZero 对经典 MCTS 最关键的一处改动:rollout(随机走到底)被价值网络的一次前向评估替代,快了几个数量级。

AlphaZero (Silver et al., 2017) 的完整循环,以围棋/国际象棋/将棋为对象:

  1. 自博弈:当前网络 fθf_\theta 引导 MCTS(PUCT + 价值评估),搜索得到改进后的动作分布;用 ϵ\epsilon-greedy 式的根节点温度采样保持开局多样性;
  2. 搜索作为改进算子:搜索输出的访问分布 πsearch\pi_{\text{search}} 比网络原始输出更好(搜索用更多计算做了更深的评估);
  3. 训练:用自博弈数据训练网络,损失包含三项——策略模仿搜索分布 πsearch\pi_{\text{search}}、价值回归真实胜负 zz、L2 正则;
  4. 循环:更好的网络 → 更好的搜索 → 更好的数据 → 更好的网络。

这就是广义策略迭代的搜索版解读(→ 价值函数与 Bellman 方程):搜索是策略改进步(用计算把策略变好),训练是策略评估步(把改进的结果固化进参数)。网络与搜索互相放大。

AlphaZero 的设定前提:完全信息(双方看到同一棋盘)、确定性、已知规则。三个前提缺一,方法就要改造:

搜索的计算代价也是局限:每次决策都要数百到数千次模拟,对实时性要求高、算力受限的场景不适用。

  • 搜索输出的动作分布比原始策略更好,成为训练目标
  • 价值网络代替 rollout 评估叶节点
  • 完全信息、确定性、已知规则是前提