- 选择阶段:MCTS 迭代选择当前状态得分最高的子节点。如果当前状态是根节点,那么这些孩子最初是从哪里来的?你不会有一棵只有一个根节点的树吗?只有一个根节点,您是否会立即进入扩展和模拟阶段?
选择步骤通常不会在树中确实存在的节点中进行实际选择(通过扩展步骤创建)。通常可以在与当前节点匹配的游戏状态的所有可能后继状态中进行选择。
因此,一开始,当您只有一个根节点时,您会希望您的选择步骤仍然能够从所有可能的后续游戏状态中选择一个(即使它们在树中没有匹配的节点然而)。通常,对于尚未访问过的游戏状态(树中还没有节点),您需要非常高的分数(无限或一些非常大的常数)。这样,您的选择步骤将始终在尚无匹配节点的任何状态中随机选择,并且仅在所有可能的游戏状态在树中都已具有匹配节点的情况下才真正使用探索与利用的权衡.
- 如果 MCTS 在选择阶段选择了得分最高的子节点,那么您在沿着树的各个层级走下去时永远不会探索其他子节点甚至可能是全新的子节点?
选择步骤使用的“分数”通常不应只是通过该节点的所有模拟结果的平均值。它通常应该是一个由两部分组成的分数;一个“探索”部分,对于相对不经常访问的节点来说很高,以及一个“利用”部分,对于到目前为止看起来不错的节点(其中许多模拟通过该节点以胜利结束)对于允许选择移动的玩家)。这在您链接的论文的第 3.4 节中进行了描述。是W(s, a) / N(s, a)
开发部分(只是平均分数),B(s, a)
是探索部分。
- 节点的扩展阶段如何发生?在上图中,为什么它没有选择叶子节点,而是决定给叶子节点添加兄弟节点?
扩展步骤通常被实现为简单地添加一个与选择步骤选择的最终游戏状态相对应的节点(在我回答您的第一个问题之后,选择步骤将始终以选择一个以前从未选择过的游戏状态结束) .
- 在模拟阶段,随机策略用于为两个玩家选择合法的移动,直到游戏终止。这种随机策略是否是一种硬编码行为,并且您基本上是在模拟中掷骰子以选择每个玩家之间轮流直到结束的可能动作之一?
最直接(也可能是最常见)的实现确实是完全随机播放。不过,也可以以不同的方式执行此操作。例如,您可以使用启发式方法对某些操作产生偏见。通常,完全随机播放速度更快,允许您在相同的处理时间内运行更多模拟。但是,这通常也意味着每个单独的模拟信息量都较少,这意味着您实际上需要运行更多模拟才能使 MCTS 发挥出色。
- 我理解这一点的方式是您从单个根节点开始,并通过重复上述阶段将树构造到一定深度。然后你选择第二级得分最高的孩子作为你的下一步行动。您愿意构建的树的大小基本上是您对 AI 响应能力的硬性要求,对吧?由于在构建树时,游戏将停止并计算这棵树。
MCTS 不会统一探索树的所有部分到相同的深度。它倾向于探索看起来有趣的部分(强移动),而不是看起来无趣的部分(弱移动)。因此,通常您不会真正使用深度限制。相反,您将使用时间限制(例如,继续运行迭代,直到您花费 1 秒、5 秒或 1 分钟,或者您允许的任何处理时间),或迭代计数限制(例如,允许它运行 10K 或 50K 或您喜欢的任意数量的模拟)。