蒙特卡罗树搜索:双人游戏的树策略

8
我对MCTS的“树策略”实现方式有点困惑。我读到的每篇论文或文章都谈到从当前游戏状态(在MCTS术语中:即将进行移动的玩家的根节点)向下遍历树。我的问题是,当我处于MIN玩家级别时(假设我是MAX玩家),如何选择最佳子节点。即使我选择了一些可能由MIN采取的特定操作,并且我的搜索树通过该节点变得更深,但在其回合期间,MIN玩家可能会选择一些不同的节点。(如果MIN玩家是业余人士,则可能会选择一些不一定是最佳的节点)。这使得MAX在传播通过该节点的信息方面所做的整个工作变得无效,因为MIN已经选择了另一个节点。 我所指的步骤如下: https://jeffbradberry.com/posts/2015/09/intro-to-monte-carlo-tree-search/ 其中树策略:https://jeffbradberry.com/images/mcts_selection.png 让我相信他们是从单个玩家的角度执行它。

我在问题中没有看到任何Python。 - Peter Wood
剥削性玩法需要对手建模。对于大多数游戏而言,假设对手最优游戏策略已经足够好了。但是扑克可能是个例外。 - Paul Hankin
抱歉 Peter,打标签的事情让你不开心了!我是一个新手,主要使用 Python 进行编程。现在我意识到这个标签与问题无关。 - CS101
保罗,当我实现“树策略”时,当我处于MIN玩家应该行动的层级时,我应该从MIN的角度选择最佳子节点吗? - CS101
@AvisekNaug 是的,你要尝试为MIN玩家选择最佳移动。 - Paul Hankin
2个回答

3

要为双人游戏实现MCTS,您可以在反向传播的每一步中简单地翻转符号,在代码中进行一行更改。

这意味着我们在每一层都试图最大化奖励,但是当我们将奖励向树上传播时,您对手的正面奖励在到达您的层时变成了负面奖励。


0
对于MCTS,您需要一些生成可能移动的概率分布的合理估计方法。对于AlphaGo [1],这是快速模拟概率$p_\pi$,在论文中称为,它接受一个状态并输出所有可能移动的粗略概率分布。AlphaGo团队将其实现为一个浅层神经网络,首先在专家游戏上进行训练,然后通过自我对弈进行改进。
[1] http://www.nature.com/nature/journal/v529/n7587/full/nature16961.html

那么您的意思是,这不会影响我的游戏体验,因为当 MIN 下出不同的棋步或者向我期望的游戏方向移动时,我都需要重新进行 MCTS 吗? - CS101
不完全正确。显然,如果不完全了解对手,就无法完美地预测MIN的每一步移动,因此我们猜测一些最佳候选项并观察它们的结果。在这里,通过查看expectimax算法而不是普通的minimax算法可能会有所帮助。 - c2huc2hu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接