当真正的对手的行为可能不是随机的时,为什么蒙特卡洛会起作用

人工智能 游戏-ai 搜索 蒙特卡罗树搜索
2021-10-25 02:04:30

我正在学习蒙特卡洛算法并努力理解以下内容:

  • 如果模拟是基于随机动作的,那么对手行为的建模如何才能很好地发挥作用?

例如,如果我有一个有 100 个子节点的节点,其中 99 个会导致即时 WIN,而最后一个会导致即时 LOSS。

实际上,对手永远不会为他下 99 次失败的棋步(假设它们很明显,因为它们是最后一步),而总是使用获胜的棋步。但是蒙特卡洛算法仍然认为这个节点是非常有利的(对我来说是 99/100 胜),因为它认为 100 次移动中的每一个都是同样可能的。

我的理解是否错误,或者这是否意味着在大多数游戏中不会发生这种情况并且随机性是对手行为的一个很好的近似?

3个回答

首先,我们需要区分普通的 Monte-CarloMonte-Carlo Tree Search它们是不同的东西。

蒙特卡洛搜索,在游戏 AI 搜索算法的上下文中,通常被理解为意味着我们随机搜索多次,然后平均结果,仅此而已。如果这就是我们所做的一切,那么是的,您的理解是正确的。这有时也被称为“plain Monte-Carlo (search)”或“pure Monte-Carlo (search)”,以明确表明我们没有像在 Monte-Carlo Tree Search 中那样进行任何树搜索(有时当我们在游戏 AI 的上下文中只说“蒙特卡洛”时,人们会自动假设蒙特卡洛树搜索,因为它很受欢迎)。

蒙特卡洛树搜索不仅如此。它逐渐建立一个搜索树(通过扩展步骤),并且在该搜索树中(随着时间的推移而增长),它使用比纯随机更复杂的遍历策略(选择步骤)。

例如,假设我有一个有 100 个孩子的节点,其中 99 个导致即时获胜,最后一个导致即时失败。

假设您正在谈论的这个节点,即具有这 100 个子节点的节点,相对靠近根节点。然后,它和它的所有 100 个子节点很可能最终会“成长为搜索树”,该搜索树是通过扩展步骤缓慢建立的。一旦它们被添加到搜索树中,选择步骤将确保访问这部分树的绝大多数进一步迭代将选择即时损失(假设对手将在此节点中移动)。在极限内(在无限量的搜索时间之后),这种选择损失节点的偏差将非常大,以至于平均评估倾向于(正确的)极小极大评估。


通过许多随机游戏序列来查看评估概念的另一种方法如下:这个想法是,如果我们处于非常有利的位置,处于良好的游戏状态,那么如果两个玩家随机开始比赛,我们更有可能获胜而不是失败。例如,考虑一个国际象棋游戏,其中玩家 1 剩下很多棋子,而玩家 2 只剩下几颗棋子。想象一下,从那个游戏状态开始,两个玩家都完全随机地玩游戏。平均而言,您希望哪位球员更常获胜?应该是玩家1。

当我们考虑距离终端状态还很远的游戏状态时,这个基本想法往往会比较有效。显然并不总是正确的,它仍然是一种启发式方法,但它可以工作。当我们已经非常接近可以通过一个高度特定的游戏序列达到的最终状态时,是的,我们可能会通过随机动作错过它;这就是我们需要选择步骤中更明智的策略的地方。

两个问题

  • 当真正的对手的行为可能不是随机的时,为什么蒙特卡洛会起作用?
  • 如果模拟是基于随机动作的,那么对手行为的建模如何才能很好地发挥作用?

树上的有向图

游戏(或类似游戏的战略场景)不应表示为树。如果所表示的过程路径具有马尔可夫特性,即每个决策都缺乏历史知识,则可以通过多个路径接近特定的博弈状态,并且可能存在重新访问博弈状态的循环路径。树没有任何特征。

最好使用有向图结构来考虑这些问题。游戏的状态是一个顶点,顶点由单向边连接。这通常绘制为由箭头连接的形状。当两个箭头进入一个形状或有一条闭合路径时,它就不是一棵树。

问题中概述的场景

在这个问题的场景大纲的情况下,有一个顶点代表一个游戏状态,其中 100 条出边代表玩家 A 可能的移动。九十九条边导致 A 明显的即时游戏胜利。正好有一个导致B. 明显的即时游戏胜利。

将游戏回放到在最后一步之前传入边遍历到顶点之前,不能假设游戏允许玩家 B 相同的 100 个选项。即使 B 可以使用相同的 100,从 B 的角度来看,在决定先前的移动时,它们也不一定具有相似的价值。很有可能,B 将有一组不同的输出边可供选择,与 A 的后续选项几乎没有或没有明显相似之处。

即使与井字游戏相比,任何不正确且选项保持不变的游戏都将是微不足道的。

蒙特卡罗方法及其算法开发

关于奇异蒙特卡洛算法的规范,它不存在。Goodfellow、Bengio 和 Courville 在他们的2016 年深度学习中正确地指出,蒙特卡洛算法(不是单一算法)得出通常正确的结论,但会出现非确定性的错误结论。文献中有各种各样的方法细节和相关算法。

  • 1997年鲁宾斯坦提出的交叉熵(CE)方法
  • 连续多级蒙特卡罗算法;Collier, Haji–Ali, von Schwerin, & Tempone; 2000
  • 顺序蒙特卡罗算法;德罗万迪、麦格里和佩蒂特;2012
  • 来自贝叶斯和大数据的分布式共识方法:共识蒙特卡洛算法;Scott1、Blocker、Bonassi、Chipman、George 和 McCulloch;2014
  • Hamiltonian Monte Carlo,一种基于马尔可夫链的算法,旨在避免“随机游走行为和对相关参数的敏感性”;霍夫曼和格尔曼;2014

还有几个。所有人都试图通过从贝叶斯后验分布近似蒙特卡罗模拟来使用混沌扰动来最小化决策的持续时间和资源消耗。

在这些方法中,随机性质的模拟通常是通过从伪随机数生成器中注入混沌序列来完成的。它们通常不是真正随机的,因为从数字系统中获取熵是另一个带来巨大困难的瓶颈,但这是一个完全切题的话题。

直接回答问题

为了纠正问题中的误解,这种混沌扰动的使用并不等于移动的选择(由游戏有向图中的边表示)。每个可用选项的成功概率仍然粗略计算和遵循,但由于设计注入了伪噪声,因此只能粗略计算。

纯优化应用中的这些干扰实现了大多数游戏状态(由顶点表示)的时间和资源节约,但同时牺牲了一些可靠性。

牺牲为何有效的概述

上面提到的混沌扰动的引入通过实现两个非常具体的增益来修改优化搜索的条件。

  1. 通过在整个试验集中增加熵(通过添加合成布朗运动来减少组织性)来更快地搜索轮廓。
  2. 通过对正在搜索的轮廓不那么随意(对梯度和曲率提示的依赖程度稍低)来避免收敛中的局部最小值。

这适用于强化网络(包含实际使用期间的实时反馈)或监督训练类型的预训练网络(带有标记数据)或收敛性由固定标准确定的无监督训练。

我会指出,蒙特卡洛树搜索算法不会做出完全随机的移动。相反,在决定搜索哪个分支时,它通常使用一些度量来平衡探索和利用之间的关系(参见 Upper Confidence Bound 等)。

话虽如此,您是对的,因为可能看不到非常麻烦的特定打法,并且可能导致蒙特卡洛犯下重大错误。这可能是 AlphaGo 在第四局输给李世石的原因。

缺点是,在与专家玩家的游戏中,可能会有一个分支导致失败。因为这不容易随机找到,所以搜索可能不会“看到”它,也不会考虑到它。相信这可能是 AlphaGo 在第四场比赛中输给李世石的部分原因。本质上,搜索试图修剪不太相关的序列。在某些情况下,一场比赛可能会导致一个非常具体的比赛路线,这很重要,但在修剪树木时会被忽视,因此这个结果“不在搜索范围内”