MCTS与Latent Planning

一句话定位

MCTS(蒙特卡洛树搜索)通过在潜在状态空间中进行前瞻性规划,将无模型的探索与基于模型的推理相结合,是AlphaZero和MuZero等系统的核心决策引擎。

前置依赖

  • MCTS基础理论 (2006): Rémi Coulom提出的完整蒙特卡洛树搜索框架
  • UCT算法 (2006): Kocsis和Szepesvári将UCB公式引入MCTS
  • AlphaZero (2018): 将MCTS与深度神经网络结合的自适应搜索
  • MuZero (2020): 在潜在空间进行MCTS的隐式世界模型方法
  • UCB (Upper Confidence Bound): 多臂老虎机中的探索-利用平衡理论

核心思想

MCTS的核心思想是:通过增量式采样和自适应展开,在有限计算预算下逼近最优决策

传统动态规划方法(如DP、Value Iteration)需要完整环境模型或所有状态转移概率。MCTS通过以下机制克服这些限制:

  1. 样本代替枚举: 不遍历所有状态,而是通过模拟采样估计
  2. 自适应树结构: 高价值区域获得更多搜索资源
  3. UCB平衡探索利用: 理论保证收敛到最优策略
  4. 潜在空间规划: 在抽象表征空间而非真实环境中搜索

数学推导

1. MCTS基础框架

MCTS算法核心是迭代执行四个步骤(一个模拟循环):

while within computational budget:
    1. SELECTION: 从根节点选择最优子节点
    2. EXPANSION: 添加新子节点到树中
    3. SIMULATION: 从新节点进行随机展开
    4. BACKUP: 沿路径反向传播回报

2. UCB公式推导

对于节点 选择动作 ,标准UCB1公式:

其中:

  • 是动作价值的经验均值
  • 是父节点访问总数
  • 是该动作被选择次数
  • 是探索常数

2.1 UCB的理论基础

Chernoff界给出 Hoeffding不等式的概率边界:

由此推导出UCB的置信上界:

当奖励有界时,这是最优的渐进 regret 界。

3. 树搜索的Backup机制

设从节点 执行动作 后,模拟得到的累计回报为

这是增量式均值更新,计算高效。

对于多臂老虎机,问题被正确解决。但对于序贯决策,我们需要考虑折扣因子。

4. 折扣累积回报

对于 MDP ,从状态 开始的累积折扣回报:

定义价值函数:

贝尔曼方程:

5. 坦南特舒尔曼树 (Tanent-Schmidhuber Tree)

MuZero使用的MCTS变体,关键改进是截断模拟(Truncated Rollout)

标准MCTS:

Selection → Expansion → Simulation → Backup
           (展开整个游戏) (从新节点 rollout到终止状态)

MuZero MCTS:

Selection → Expansion(仅1步) → Prediction → Backup
           (展开1步,用学习模型估计价值而非继续模拟)

5.1 坦南特舒尔曼树的数学表示

设当前隐藏状态为 ,MCTS执行 次模拟。每次模拟

选择阶段

其中探索项:

动态函数前向

评估阶段

备份阶段

其中模拟回报:

6. 潜在规划的数学基础

潜在规划的核心是抽象空间中的MDP

设学习到的状态空间为 (潜在空间),转移函数 ,奖励函数

规划问题转化为:

这个框架的优势:

  • 潜在空间维度通常远低于原始观察空间
  • 转移函数可以是确定性的(简化规划)
  • 忽略无关视觉细节,聚焦任务相关特征

7. 树搜索与值估计的结合

AlphaZero/MuZero的创新在于用神经网络估计先验概率和价值:

损失函数:

其中 是n步回报(来自真实环境交互)。

8. 搜索策略的PAC-Bayes分析

PAC (Probably Approximately Correct) 框架下,MCTS可以被解释为紧缩先验权重的过程:

定义搜索树的边缘策略:

MCTS的理论保证:

这意味着随着模拟次数增加,搜索策略收敛到最优策略。

MCTS算法变种

1. 基本MCTS (Original Coulom)

  • 完全随机模拟 (Pure Monte Carlo)
  • 无剪枝、无启发式
  • 简单但低效

2. UCT (Upper Confidence Bounds for Trees)

  • 使用UCB1进行选择
  • 理论保证渐近最优
  • 标准工业实现

3. AMAF (All Moves As First)

  • 反事实评价未选动作
  • 加速小状态空间学习
  • 也称GRUE或RAVE

4. AlphaZero风格的MCTS

  • 神经网络提供先验
  • 并行模拟(数百个同时进行)
  • 截断模拟 + 价值估计
  • DPWI (Depthwise Parallel Wrap-In)

推理/Planning过程详解

Planning循环

输入: 初始观察 o_0
输出: 动作序列 (a_0, a_1, ..., a_T)

for t = 0 to T:
    # 1. 编码当前观察
    h_t = f(o_t)
    
    # 2. 运行MCTS
    for sim = 1 to N:
        h = h_t  # 复制根状态
        for depth = 0 to MAX_DEPTH:
            if h 是叶节点:
                # 扩展
                for a in actions:
                    h' = g(h, a)
                    r = h(h, a)
                    (π, V) = φ(h')
                    创建节点
                break
            else:
                a = UCB选择(h)
                h = g(h, a)
        
        # 备份
        更新路径上所有节点的价值
    
    # 3. 选择根节点动作
    a_t = argmax_a N(h_t, a)
    
    # 4. 执行动作
    o_t = env.step(a_t)

树重用 (Tree Reuse)

推理时复用部分计算的关键:

  1. 执行动作 后,获取对应子节点
  2. 作为新根节点
  3. 保留其子树结构,只移除其他兄弟节点
  4. 节省约50%计算量

与MuZero的关系

MuZero是MCTS在隐式世界模型框架下的实现:

组件传统MCTSMuZero
状态空间枚举所有真实状态潜在抽象状态
转移模型规则模拟器学习到的
先验知识均匀分布神经网络
价值估计随机模拟到终止神经网络
展开深度到终止状态1步 + 估计

优点与局限

优点

  1. 无需精确模型: 通过采样近似,无需枚举所有转移
  2. 渐进最优: UCB保证收敛到最优策略
  3. 可解释性强: 搜索树可视化决策依据
  4. 并行友好: 各模拟相互独立,易于并行化
  5. 灵活先验: 可嵌入领域知识作为先验

局限

  1. 计算密集: 需要足够模拟次数才能可靠
  2. 维度灾难: 状态空间大时,搜索效率下降
  3. 部分可观测性: 标准MCTS假设完美信息
  4. 长视界困难: 折扣因子导致远期信号弱

可复现实现要点

核心数据结构

class MCTSNode:
    def __init__(self, prior=0.0):
        self.visit_count = 0
        self.value_sum = 0.0
        self.prior = prior  # 神经网络先验
        self.hidden_state = None
        self.children = {}  # action -> MCTSNode
        self.reward = 0.0
        self.value = 0.0

UCB选择实现

def ucb_score(self, parent_visits):
    exploitation = self.value_sum / max(1, self.visit_count)
    exploration = (self.prior * 
                   math.sqrt(parent_visits) / 
                   (1 + self.visit_count))
    return exploitation + self.exploration_constant * exploration

并行MCTS实现

def parallel_mcts(root, num_simulations, num_workers):
    with ThreadPoolExecutor(num_workers) as executor:
        futures = [executor.submit(simulate, root) 
                    for _ in range(num_simulations)]
        for future in futures:
            future.result()

章节摘要

MCTS是现代AI规划系统的核心算法,通过UCB平衡探索与利用,在搜索树中渐进收敛到最优策略。坦南特舒尔曼树的引入使得在抽象潜在空间中进行规划成为可能,为MuZero等系统提供了”学习+规划”的框架。本章详细推导了UCB公式、价值备份方程,以及MCTS与神经网络结合的数学原理,为理解MuZero和后续章节奠定基础。

关键词

  • MCTS, 蒙特卡洛树搜索, UCB公式, 探索-利用平衡
  • 坦南特舒尔曼树, 截断模拟, 价值备份, 潜在规划
  • PAC-Bayes, 树搜索, AlphaZero, UCT算法