【问题标题】:Monte Carlo Tree Search in board games - How to Implement Opponent Moves棋盘游戏中的蒙特卡洛树搜索 - 如何实施对手移动
【发布时间】:2018-06-16 18:05:54
【问题描述】:

我正在研究具有完美信息的零和棋盘游戏的 MCTS 算法的实现。例如。国际象棋、围棋、跳棋。

据我了解,在算法的每次迭代中,都有四个步骤:选择、扩展、模拟和反向传播。

我的问题是关于对手动作的执行,它应该如何在树中呈现,以及在每个阶段应该如何执行。

例如,让我们想象一个围棋游戏,我们(黑色)正在与 AI(白色)对战。当黑方从根节点s0做一个动作ab,然后转白做一个动作aw。 p>

我最初的想法是每个动作都会产生一个新的状态。所以 s0 -> ab -> s1 -> aw -> s2 ,其中每个 s 状态代表一个节点。但是,这会影响 MCTS 中的选择过程。在这种情况下,MCTS 不会倾向于探索糟糕的 aw 动作吗?因为这将为黑色返回更好的奖励。

我认为的替代解决方案是将操作组合到一个节点中。所以 s0 -> ab -> aw -> s1。但是,这会使决策变得更加困难,因为每个根级别的操作现在都与多个不同的节点相关联。

是否有任何框架建议在 MCTS 中应如何代表对手?任何帮助将不胜感激。

编辑 1: 由于我们将在上面的示例中下黑棋,因此每次模拟结束时的奖励函数将与黑棋有关。例如。如果黑方在游戏结束时获胜,奖励将通过所有节点进行备份,包括黑白节点。我的期望是具有高状态值的白色节点(允许黑色获胜)。

但也许我应该在进行反向传播时翻转奖励?例如。如果黑色获胜,黑色节点为 1,白色节点为 -1。这样,选择功能保持不变。这是正确的吗?

【问题讨论】:

  • 您能否解释一下为什么您认为“MCTS [会] 倾向于探索糟糕的 aw 动作”?我(非专家)对 MCTS 的理解是,它应该倾向于探索能够产生良好胜率 白色 的 aw,同样它应该探索产生良好胜率 黑色的 ab ,无论哪个玩家拥有每种颜色。
  • 逻辑与传统的 alpha/beta 或 minimax 搜索相同:只需翻转符号(在正确的位置)。毕竟,MCTS 只是一个评估函数。
  • 并且,如果节点值表示 B 获胜的概率,那么,您应该将 1-p 的(函数)传播给对手而不是符号翻转 -彩色父节点。 (让白方的目标最小化 B 获胜的概率。一切顺利......)

标签: algorithm search machine-learning tree montecarlo


【解决方案1】:

您应该与已知的强大对手或算法本身对抗。

假设您使用自己的算法,将数据输入其中以找出“最佳”动作。确保算法适用于预期的一方(即,如果您下围棋/国际象棋,最简单的事情就是交换棋子的颜色)。

如果你和自己对战,你基本上会生成两倍的数据点来学习游戏。

如果您刚刚起步,可能值得与其他机器玩家对战。您没有获得太多数据点,但您获得的数据点会教给您更多信息(即学习不好的动作会更快)。

您可能希望先与一些合理的现有 AI 对战,然后转而与自己对战。

【讨论】:

  • 在我开始与另一台机器玩家对战的情况下。它必须是确定性的吗?否则,MCTS 的深度怎么会超过 1? (对不起,如果这是一个非常愚蠢的问题)
  • 这是公认的答案,你甚至不回答问题
猜你喜欢
  • 2014-07-11
  • 1970-01-01
  • 2018-06-27
  • 2018-11-20
  • 2018-09-02
  • 2012-02-21
  • 1970-01-01
  • 2020-04-09
  • 2019-08-02
相关资源
最近更新 更多