首页 文章

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

提问于
浏览
4

我一直在阅读Browne等人的Monte Carlo Tree Search调查报告 . 人:

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

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

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

假设我是2人零和游戏中的玩家1 . (所以,使用BackupNegamax功能 . )现在轮到我了,我正在使用MCTS来选择我的行动 . 在BackupNegamax中,为什么在备份树时否定delta值?我知道在一个双人游戏的零和游戏中,如果奖励是玩家1(我)的增量,那么它是玩家2的-delta . 但是整个树不应该来自玩家1的视角吗? (这将类似于节点在极小极大树中的评级,如果我没有弄错的话 . )

如果Q值的视角根据您所在的树的级别来回切换,那么BestChild函数中显示的计算会不会搞乱?具体来说,假设一些节点v具有非常高的Q值,因为它经常导致玩家1的高回报 . 给定的伪代码似乎表明v的父母,我称之为u,可能会非常低(非常负)Q值(当然你的Q值也会考虑其他孩子的Q值 . )

因此,对我而言,你(父母)的Q值非常低,而v(孩子)的Q值非常高,这对我没有意义 . 我知道v是来自玩家1的伪代码视角,而你是来自玩家2的视角,但我的问题是为什么 . 为什么不从播放器1的角度存储节点的Q值?这样,u和v都具有高Q值,因此具有较高的利用率,并且根据BestChild函数它们都被认为对于进一步利用是有 Value 的 .

(我是从迷你世界的经验来到MCTS,而在极小极大情况下,整个树都来自Max的视角,所以这就是为什么我在这里挣扎着不同的想法 . )

我的问题也适用于备份 - 为什么根据树的那个级别的玩家的角度更新每个Q值,而不是从“我的”角度更新所有内容?

我希望我的问题清楚 . 非常感谢您的帮助!

4 回答

  • 5

    有两种方法可以描述这种机制:

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

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

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

    这只是证实了其他答案中的内容 .

  • 2

    有两种方法可以查看MCTS算法:

    • 从根播放器的角度来看 .

    • 从刚刚移动的玩家的角度来看 .

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

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

  • 0

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

    A / | \ B1 B2 B3 | A1

    在树B1中,B3是B win终端节点,而B2仅有一个选择,其导致A win终端节点A1 .

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

    enter image description here

    那么A的最佳选择将是B1或B3,这是荒谬的,如何解释呢?

    ref:MCTS caculation process reference

  • 0

    对于丢失或赢得终端的情况,你应该使用int.max分数或int.lowest分数,这样当你反向传播时,无论你的树有多低,一个损失都会得到最低的分数,胜利将是最高的得分了

相关问题