蒙特卡洛树搜索 UCT 开发价值如何根据视角变化?

人工智能 蒙特卡罗树搜索 执行
2021-10-18 20:23:25

这篇博客的最后,作者写道: pic_0 图片

就我的问题而言,让我们假设最终状态为获胜提供 +1 的奖励,为失败提供 -1 的奖励。

当作者说“对于任何两个连续节点,这种观点是相反的”,这是否意味着如果Qi对于给定节点的玩家 A 是正数(例如,4),同一节点将具有玩家 B 的负数(我假设为 -4)?

我是否需要计算两个统计数据来存储节点值(每个玩家一个),或者我可以简单地存储一个玩家的统计数据并在每个连续节点处翻转标志?

1个回答

在 UCT 中,Q(vi) / N(vi) 的值介于 0 和 1 之间。通常将 MCTS 应用于 2 人游戏时,会发生以下情况:
N(vi) 对应于模拟游戏的总数在节点 vi 中。
Q(vi) 对应于节点 vi 中模拟和获胜的游戏总数。
因此,在每个模拟中,Q(vi) 将为获胜玩家添加 +1,为失败玩家添加 +0。

在 2 人游戏的树形表示中,每个级别将交替代表玩家 A 和玩家 B。因此,您将为每个其他节点添加 1我认为给 Qi 添加负值是没有意义的。

所以回答你的问题: 你只需要为每个节点存储 N 和 Q,其中 N 是该节点在模拟节点路径中的总次数, Q 是它赢得的次数,在这些模拟中.

我可以举个例子说明我实现这部分的方式,在棋盘游戏中,我在状态类中保存了一个变量,该变量表示下一个玩家是谁(1 或 2)。所以我会知道在那个状态下(每个节点都是一个状态),做出最后一步的玩家是另一个(通过公式:player = 3 - next_player),我会在这些节点的 Qi 上加 1。