蒙特卡罗搜索树(译)

今天(2017-10-19) 看到一篇关于蒙特卡罗搜索树 (Monte Carlo Tree Search) 的文章,感觉写的非常好,决定尝试翻译一下,于是就有了这篇文章:)!原文在这[阅读原文](http://mcts.ai)。
蒙特卡罗搜索树(译)_第1张图片
Monte Carlo Tree Search

1 What is MCTS?

蒙特卡罗搜索树是 一个在人工智能(AI)问题中做出优化决策的方法,通常在组合游戏中移动规划。它将随机模拟的一般性与树搜索的精度相结合。
 由于 AlphaGo 卓越的表现,并潜在应用于一些其他难题上,人们对MCTS的研究兴趣急剧上升。其应用范围超越了游戏,理论上 MCTS 可以应用于能用 {state,action} 来描述的任何领域,以及预测结果的 模拟。

2 Basic Algorithm

基本的MCTS算法很简单:根据模拟当前状态的结果,逐个节点构建搜索树。该过程可以分为以下4个步骤:

蒙特卡罗搜索树(译)_第2张图片
MCTS
  1. Selection
    从根节点Root开始,递归地选择最佳子节点(后面详述),直到到达叶节点L。
  2. Expansion
    如果L不是一个终止节点(游戏未结束),然后创建一个或多个子节点并选择一个C。
  3. Simulation
    从C运行模拟输出,直到达到结果。(注:这里有点拗口,可以简单理解为当前节点输赢的概率)
  4. Backpropagation
    用上一步得到的结果,反向更新当前搜索路径上的每个节点的值。

补充
(1) 每个节点必须包含两个重要的信息:基于模拟结果的估计值和它被访问的次数。
(2) 在最简单和最高记忆效率的实现中,MCTS将每次迭代添加一个子节点。根据具体的业务场景: 每次迭代添加多个子节点可能更好。

3 Node Selection

如何选择最优的子节点呢?
树下降期间的节点选择,是通过选择最大化一些数量的节点来实现的(译者注:类似于贪心的策略,每次选取局部最优,这个最优是模拟出来的,所以每个子节点都有机会),类似于玩家必须选择胜算最大的落子位置。通常使用以下公式来计算:

Upper Confidence Bounds for Trees (UCB)

其中vi是节点的估计值,ni是节点被访问的次数,N是其父访问次数的总次数。C是可调偏置参数。

4 Conclusion

  • UCB公式平衡了对已知奖励的开发与探索相对未访问的节点,以鼓励他们的锻炼。
  • 奖励估计是基于随机模拟,因此节点必须在这些估计值变得可靠之前多次访问;
  • MCTS的估计通常在搜索开始时是不可靠的,但是在给定足够的时间和给出无限时间的完美估计的情况下,收敛到更可靠的估计。

你可能感兴趣的:(蒙特卡罗搜索树(译))