2015-05-28 16 views
3

我一直在阅读Browne等人的Monte Carlo Tree Search调查报告。人:蒙特卡罗树搜索,反向传播(备份)步骤:为什么要改变奖励值的角度?

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

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

我与页上的只是一片伪代码的摔跤。 9.我的问题在Backup和BackupNegamax函数中都以类似的形式出现。

假设我是2人零和游戏中的玩家1。 (所以,使用BackupNegamax函数。)轮到我了,我正在使用MCTS来选择我的移动。在BackupNegamax中,为什么在备份树时,delta值被否定了?我明白,在双人零和游戏中,如果奖励是玩家1(我)的三角洲,那么它是 - 玩家2的三角。但是不应该从玩家1的角度来看整个树? (如果我没有弄错的话,这将类似于节点在极大极树中的评分。)

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

所以对我来说,u(父母)的Q值非常低,v孩子)有一个非常高的。我知道v是来自玩家1在伪代码中的角度,而u是来自玩家2的角度,但我的问题是为什么。为什么不是从播放器1的角度存储节点的Q值?这样,u和v都将具有高Q值,因此具有很高的开采评级,并且根据BestChild函数,它们都被认为对进一步开发具有价值。

(我在MCTS来从极小的经验,并在极小整个树是从最大的角度来看,这就是为什么我用不同的想法在这里挣扎。)

我的问题也适用于备份 - 为什么每个Q值都根据树中该层的玩家角度更新,而不是从“我的”角度更新一切?

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

+0

我也很困惑这个想法。 – alexzzp

回答

4

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

  1. 全局:从根玩家的角度看,这种情况下在每个第二层上的播出值被否定,因为对手是作用在根球员。

  2. 本地:从刚刚移动到每一层的玩家的角度来看,在这种情况下,玩家的价值不会被消除,因为每个玩家都会尝试最大化自己的奖励。

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

这只是证实了其他答案中所说的内容。

1

有两种方式来看待MCTS算法:

  1. 从根玩家的角度看。
  2. 从刚搬家的玩家角度来看。

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

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

+0

这是有道理的,我是如何理解事情的工作。那么我的问题是如何理解Browne等人在论文中指出的BackupNegamax伪代码函数。人。这是一篇经典的论文,所以我不认为这是错的 - 也许只是一种不同的表述?布朗的课堂笔记在http://ccg.doc.gold.ac.uk/teaching/ludic_computing/ludic16.pdf,p。关于后向传播,也建议否定每层的价值。 –

+0

@BobSmith确实,这没有错,它只是一个不同的表述。 –

+0

java示例链接消失了 – alexzzp

0

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

A /| \ B1 B2 B3 | A1

在树B1,B3是B赢得终端节点,而B2只有一个选择,导致 甲A夺冠终端节点A1。

如果我们caculate的比赛中MCTS方法,结果就会像下图:

enter image description here

所以最好的选择将是B1或B3为A,这是荒谬的,如何解释呢?

裁判:MCTS caculation process reference

0

的损失或赢终端的情况下,你应该使用int.max分数或分数int.lowest所以当你backpropogate亏损将有可能的最低得分,无论多么低的树你是,并赢得最高分