【发布时间】: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