我想问一下,当我们可用的状态的分支因子很大并且不适合 Minimax 时,是否通常选择 MCTS。此外,除了 MCTS 模拟动作,Minimax 实际上“蛮力”所有可能的动作,使用蒙特卡洛对抗(2 人)游戏还有哪些其他好处?
什么时候应该选择蒙特卡洛树搜索而不是 MiniMax?
人工智能
蒙特卡罗树搜索
极小极大
α-β-修剪
2021-10-21 01:59:07
1个回答
MCTS 相对于 Minimax(及其许多扩展,如 Alpha-Beta 修剪和所有其他扩展)的一些基本优势是:
MCTS 不需要状态的启发式评估函数。它可以仅从到达终端游戏状态的随机播放中进行有意义的评估,您可以在其中使用输/平/赢结果。因此,如果您面临的领域绝对没有可以插入的启发式领域知识,那么 MCTS 可能是更好的选择。Minimax必须具有状态的启发式评估函数(例外:如果您的游戏非常简单,以至于您有能力计算完整的游戏树并从初始游戏状态立即到达所有终端游戏状态,则不需要启发式)。如果您确实有强大的评估功能,您仍然可以合并它们并使用它们来改进 MCTS;它们对于 MCTS 并不是绝对必要的。
MCTS 具有更简单的随时行为;您可以继续运行迭代,直到用完计算时间,然后返回最佳移动。通常,我们预计 MCTS 的性能水平会随着计算时间/迭代次数相对平稳地增长(并不总是 100% 正确,但直觉上你通常可以期待这样的事情)。您可以通过迭代加深在极小极大中实现任何时候的行为,但这通常不是那么“平滑”,而是更“颠簸”;这是因为每次你增加搜索深度,你需要显着比之前的深度限制更多的处理时间。如果您的时间用完并且不得不在当前深度限制下中止当前搜索,那么最后一次搜索将完全没有用;您将不得不丢弃它并坚持使用先前深度限制的先前搜索的结果。
差异,在一般情况下不一定是优势或劣势(但可以在特定情况下):
- MCTS 的计算时间通常以运行(半)随机播放为主。这意味着用于计算合法移动列表并将移动应用于游戏状态的函数通常决定了您的 MCTS 运行的快慢;使这些功能更快通常会使您的 MCTS 更快。另一方面,Minimax 的计算时间通常由复制游戏状态(或“撤消”移动,这是在大多数游戏中需要额外内存使用才能使游戏状态成为可能的操作)和启发式评估函数(尽管如果您选择将它们包含在 MCTS 中,后者在计算成本方面也可能变得很重要)。在某些游戏中,为其中之一提供有效的实现会更容易,而在其他游戏中可能会有所不同。
Minimax 相对于 MCTS 的基本优势:
- 在 MCTS 只能运行很少的设置中相对于分支因子的迭代次数(或者在极端情况下,迭代次数少于根节点中可用的操作),MCTS 将执行极差/接近随机播放。我们注意到,在我们的通用游戏系统 Ludii 中,相当多的游戏都是这种情况(“通用游戏系统”通常意味着游戏的实现效率低于在专门的单个游戏特定程序中实现的效率) ) 具有低时间控制(例如每次移动 1 秒)。相同的通用游戏设置通常很难找到超强启发式,但通常仍然可以提出一些相对简单的设置(例如国际象棋中的简单材料启发式)。只有几个搜索层和一个基本的 alpha-beta 搜索,