Monte Carlo 树搜索,反向传播(备份)步骤:为什么要改变奖励价值的角度?

Monte Carlo Tree Search, Backpropagation (Backup) step: Why change perspective of reward value?

我一直在阅读 Browne 等人撰写的 Monte Carlo Tree Search 调查论文。人:

http://ccg.doc.gold.ac.uk/papers/browne_tciaig12_1.pdf

"A Survey of Monte Carlo Tree Search Methods"

我正在努力处理 p. 上的一段伪代码。 9. 我的问题以类似的形式出现在 Backup 和 BackupNegamax 函数中。

假设我是 2 人 zero-sum 游戏中的玩家 1。 (所以,使用 BackupNegamax 函数。)轮到我走,我正在使用 MCTS 选择我的走法。在 BackupNegamax 中,为什么在备份树时 delta 值被取反?我知道在 two-player zero-sum 游戏中,如果玩家 1(我)的奖励是 delta,那么玩家 2 的奖励是 -delta。但整棵树不应该从玩家 1 的角度来看吗? (如果我没记错的话,这将类似于节点在极小极大树中的评级方式。)

如果 Q 值的视角根据您所在的树的级别来回切换,那不会弄乱 BestChild 函数中显示的计算吗?具体来说,假设某个节点 v 具有非常高的 Q 值,因为它经常为玩家 1 带来高回报。给定的伪代码似乎表明 v 的 parent,我将其称为 u,可能有一个很低(很负)的Q值(当然你的Q值也会占其他child人的Q值。)

所以对我来说,u(parent)的 Q 值非常低而 v(child)的 Q 值非常高,这对我来说没有意义。我知道伪代码中 v 是从玩家 1 的角度来看的,而 u 是从玩家 2 的角度来看的,但我的问题是为什么。为什么没有从玩家 1 的角度存储两个节点的 Q 值?这样 u 和 v 都将具有高 Q 值,因此具有高开发等级,并且根据 BestChild 函数,它们都被认为对进一步开发有价值。

(我是从 minimax 的经验来到 MCTS 的,而在 minimax 中,整个树都是从 Max 的角度来看的,所以这就是为什么我在这里纠结于不同的想法。)

我的问题也适用于 Backup - 为什么每个 Q 值都根据玩家在树的那个级别的视角更新,而不是从 "my" 视角更新所有内容?

我希望我的问题已经清楚了。非常感谢您的帮助!

看MCTS算法有两种方式:

  1. 从root玩家的角度来看
  2. 从刚刚移动的玩家的角度来看。

我发现方式 1 更受欢迎。例如维基百科 explanation 使用它。

使用方式 1 的参考 MCTS 实现:C++, Java.

有两种方式来描述这个机制:

  1. 全局:从根玩家的角度来看,在这种情况下,每第二层的播放值都被否定,因为对手正在对根玩家采取行动。

  2. 局部:从每一层刚移动的玩家的角度来看,在这种情况下,播放值不会被否定,因为每个玩家都试图最大化自己的奖励。

标准公式使用选项 1,因为它更容易描述,并且以双人组合游戏为基础。但是,我倾向于在实际实现中使用第二种形式,因为它更灵活;它处理多于两人、少于两人、可变移动顺序、多部分移动、合作目标等的游戏

这正好证实了其他答案中所说的。

一段时间以来,我一直对 MCTS 感到困惑,尤其是反向传播部分。 如果用每个节点的获胜值(称为Q)来表示当前节点玩家的获胜次数。 在每个不可扩展的节点中,我们选择最大的 UCT 节点。怎么会是一个好的选择呢? 考虑以下两人游戏,完整的树是这样的:

A / | \ B1 B2 B3 | A1

在树B1中,B3是B赢的终端节点,而B2只有一个选择导致 a win终端节点A1。

如果我们用MCTS方法计算游戏,结果会像下图:

所以A最好的选择是B1还是B3,这很荒谬,怎么解释?

参考:MCTS caculation process reference

对于输或赢的终端情况,您应该使用 int.max 分数或 int.lowest 分数,这样当您反向传播损失时,无论您在树中的位置有多低,都会获得尽可能低的分数是,获胜将是最高分