分数在 0 和 n 之间时蒙特卡罗树搜索的 UCB 公式
Posted
技术标签:
【中文标题】分数在 0 和 n 之间时蒙特卡罗树搜索的 UCB 公式【英文标题】:UCB formula for monte carlo tree search when score is between 0 and n 【发布时间】:2019-12-13 00:21:16 【问题描述】:我正在使用蒙特卡罗树搜索实现一个播放 2048 年的 AI。根据***https://en.wikipedia.org/wiki/Monte_Carlo_tree_search 和我在扩展步骤中检查的所有其他来源,您应该使用UCB 公式来确定访问哪个节点wi/ni + c*sqrt(ln(N)/ni)
。当最后的分数是0
或1
(赢或输)时,这个公式很有效,但是,这个公式在 2048 年不起作用,因为分数是介于0
和n
之间的值我们想要最大化。
有谁知道当分数介于0
和n
之间时,MCTS 中哪个是用于 UCB 的最佳公式,以便我可以在 2048 游戏中使用它?
谢谢。
【问题讨论】:
这个问题在这里可能是题外话。 ai.stackexchange.com 会更合适,因为它不是关于特定的编程问题,而是关于算法背后的概念。 【参考方案1】:2048 的最高分似乎是somewhere near 4000000 points。
因此,您只需将可能的最高分数扩展到1
:
game_score / 3932156
压缩到[0, 1]
范围很常见。
一个可能的问题是最大可能分数和最可能分数之间的差异。在 2048 中,分数可能远低于最大值,并且简单的缩放会在一个狭窄的范围内产生大多数分数(而很少使用到 1
的其余范围)。
这可能会在 UCT 计算中产生意想不到的后果,因为由于这种挤压(在不切实际的最高可能分数下),节点看起来比它们应有的更相似。
您必须尝试:它也会发生,而不是挤压精度影响最小(请查看 Using Domain knowledge to Improve Monte-Carlo Tree Search Performance in Parameterized Poker Squares - Robert Arrington, Clay Langley and Steven Bogaerts 了解更多详细信息)。
【讨论】:
使用对数刻度可以避免大多数归一化分数接近 0 的问题。 在实践中使用最大理论分数的“完全”归一化可能很糟糕(如果在实践中实际奖励往往会小得多)。根据您观察到的情况动态规范化可能会更好,这也可以在搜索树内部本地完成(基于不同子树中的不同边界进行规范化)。例如,参见this paper 中第 21 页的顶部(以及整篇论文后面关于规范化的更多讨论)以上是关于分数在 0 和 n 之间时蒙特卡罗树搜索的 UCB 公式的主要内容,如果未能解决你的问题,请参考以下文章