1. 什么是 MCTS?
蒙特卡洛树搜索(Monte Carlo Tree Search, MCTS)是一种启发式搜索算法,用于在大规模决策空间中寻找最优决策。它结合了随机模拟(蒙特卡洛方法)和树搜索的思想,通过在决策树中逐步构建和探索可能的行动序列来做出决策。
MCTS 的核心思想是:
- 通过随机模拟评估不同决策的质量(即“这个选择好不好”)。
- 通过树结构记录和组织决策过程,逐步聚焦于更有前景的路径。
- 平衡探索(exploration)和利用(exploitation),避免陷入局部最优。
MCTS 特别适合以下场景:
- 状态空间巨大,无法穷举所有可能性(如围棋,可能的状态比宇宙中的原子还多)。
- 决策需要权衡短期和长期收益(如游戏中的每一步棋)。
- 没有明确的启发式规则,需要通过模拟来评估结果。
2. MCTS 的核心思想:为什么需要它?
为了让你理解 MCTS 的意义,我们先看一个简单的例子:下棋。
假设你在下围棋,每一步有几十到几百种可能的走法,每种走法又会导致新的局面,局面再扩展出更多走法……这形成了一个巨大的决策树。如果你想找到“最佳走法”,传统方法可能有以下问题:
- 穷举搜索(如深度优先搜索):决策树太大,计算量爆炸,无法完成。
- 贪心算法:只选当前看起来最好的走法,可能会错过长期收益更高的策略。
- 启发式规则:需要人为设计评估函数(比如“这个局面好不好”),但在复杂问题中,设计这样的函数非常困难。
MCTS 的优势在于:
- 它不需要人为设计的复杂启发式函数,而是通过随机模拟来评估局面。
- 它通过迭代逐步构建决策树,优先探索“有希望”的路径。
- 它通过数学公式(如 UCB)平衡探索和利用,确保既尝试新路径,又利用已知的好路径。
3. MCTS 的四个主要步骤
MCTS 的核心算法由以下四个步骤组成,迭代运行多次后选择最佳决策。每次迭代都会更新决策树,逐步提高选择最优行动的准确性。
3.1 选择(Selection)
- 做什么:从决策树的根节点(当前局面)开始,沿着树选择一个节点,直到到达一个未完全扩展的节点(即还有未尝试的子节点)或叶子节点。
- 怎么做:使用一种策略(如 UCB 公式)选择“最值得探索”的子节点。UCB 公式平衡了利用(选择已知回报高的节点)和探索(尝试未充分探索的节点)。
- 直观理解:想象你在迷宫中,每次选择一条路,优先走“看起来有希望”但“还没走够”的路。
UCB 公式(Upper Confidence Bound for Trees, UCT):
U C T = X ˉ i + C ⋅ ln N n i UCT = \bar{X}_i + C \cdot \sqrt{\frac{\ln N}{n_i}} UCT=Xˉi+C⋅nilnN
- X ˉ i \bar{X}_i