Algorithm 蒙特卡罗树搜索,反向传播(备份)步骤:为什么改变奖励价值的角度?

Algorithm 蒙特卡罗树搜索,反向传播(备份)步骤:为什么改变奖励价值的角度?,algorithm,artificial-intelligence,montecarlo,Algorithm,Artificial Intelligence,Montecarlo,我一直在阅读Browne等人的Monte Carlo树搜索调查报告: “蒙特卡罗树搜索方法综述” 我正在和p上的一段伪代码搏斗。9我的问题以类似的形式出现在Backup和BackupNegamax函数中 假设我是两人零和游戏中的玩家1。(因此,使用BackupNegamax函数)轮到我移动了,我使用MCT选择移动。在BackupNegamax中,为什么在备份树时会将增量值取反?我知道在一个两人零和游戏中,如果玩家1(我)的奖励是delta,那么玩家2的奖励是-delta。但是整棵树不应该是从玩

我一直在阅读Browne等人的Monte Carlo树搜索调查报告:

“蒙特卡罗树搜索方法综述”

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

假设我是两人零和游戏中的玩家1。(因此,使用BackupNegamax函数)轮到我移动了,我使用MCT选择移动。在BackupNegamax中,为什么在备份树时会将增量值取反?我知道在一个两人零和游戏中,如果玩家1(我)的奖励是delta,那么玩家2的奖励是-delta。但是整棵树不应该是从玩家1的角度来看的吗?(如果我没有弄错的话,这将类似于在极大极小树中对节点进行评级。)

如果Q值的透视图根据您所在的树的哪个级别来回切换,这不会打乱BestChild函数中显示的计算吗?具体来说,假设某个节点v的Q值非常高,因为它通常会给玩家1带来高回报。给定的伪代码似乎表明,v的父代,我称之为u,可能有一个非常低(非常负)的Q值(当然,u的Q值也会解释它的其他子代的Q值)

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

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

我的问题也适用于备份-为什么每个Q值都会根据玩家在该树级别的视角进行更新,而不是从“我的”视角进行更新


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

查看MCTS算法有两种方法:

  • 从根玩家的角度来看
  • 从刚刚移动的玩家的角度来看
  • 我发现第一种方法更受欢迎。例如,维基百科使用它


    使用方式1:,.参考MCTS实现。

    有两种方式来描述此机制:

  • 全局:从根玩家的角度来看,在这种情况下,当对手与根玩家对抗时,每第二层的季后赛值被否定

  • 本地:从刚刚在每层移动的玩家的角度来看,在这种情况下,季后赛价值不会被否定,因为每个玩家都试图最大化他们自己的回报

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


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

    我与MCT混淆了一段时间,特别是反向传播部分。 如果每个节点的获胜值(称为Q)用于指示当前节点的玩家的获胜次数。 在每个不可扩展节点中,我们选择最大的UCT节点。这怎么可能是一个好的选择呢? 考虑下面两个玩家的游戏,完整的树就是这样的:

    
    A.
    /  |   \
    B1 B2 B3
    |
    A1
    

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

    如果我们用MCTS方法计算游戏,结果将如下图所示:

    所以A的最佳选择是B1或B3,这很荒谬,怎么解释呢


    ref:

    对于输赢终端情况,您应该使用int.max score或int.lowest score,这样当您回溯输赢时,无论您在树中的位置有多低,都会得到尽可能低的分数,而赢将是最高分

    ,这是有意义的,也是我理解如何工作的。那么,我的问题是,如何理解Browne等人在论文中指出的BackupNegamax伪代码函数。这是一篇经典论文,所以我不认为它是错的——也许只是一个不同的公式?布朗的课堂笔记,第页。12关于反向传播,也建议在每层否定值。@BobSmith确切地说,这没有错,这只是一个不同的公式。java示例链接没有问题。我也对这个想法感到困惑。